Related Vulnerabilities: CVE-2018-0500  

It has been discovered that curl before 7.61.0 might overflow a heap based memory buffer when sending data over SMTP and using a reduced read buffer. When sending data over SMTP, curl allocates a separate "scratch area" on the heap to be able to escape the uploaded data properly if the uploaded data contains data that requires it. The size of this temporary scratch area was mistakenly made to be 2 * sizeof(download_buffer) when it should have been made 2 * sizeof(upload_buffer). The upload and the download buffer sizes are identically sized by default (16KB) but since version 7.54.1, curl can resize the download buffer into a smaller buffer (as well as larger). If the download buffer size is set to a value smaller than 10923, the Curl_smtp_escape_eob() function might overflow the scratch buffer when sending contents of sufficient size and contents. The curl command line tool lowers the buffer size when --limit-rate is set to a value smaller than 16KB.

Severity High

Remote Yes

Type Arbitrary code execution

Description

It has been discovered that curl before 7.61.0 might overflow a heap based memory buffer when sending data over SMTP and using a reduced read buffer.

When sending data over SMTP, curl allocates a separate "scratch area" on the heap to be able to escape the uploaded data properly if the uploaded data contains data that requires it. The size of this temporary scratch area was mistakenly made to be 2 * sizeof(download_buffer) when it should have been made 2 * sizeof(upload_buffer). The upload and the download buffer sizes are identically sized by default (16KB) but since version 7.54.1, curl can resize the download buffer into a smaller buffer (as well as larger). If the download buffer size is set to a value smaller than 10923, the Curl_smtp_escape_eob() function might overflow the scratch buffer when sending contents of sufficient size and contents. The curl command line tool lowers the buffer size when --limit-rate is set to a value smaller than 16KB.

AVG-734 libcurl-gnutls 7.60.0-1 7.61.0-1 High Fixed

AVG-733 libcurl-compat 7.60.0-1 7.61.0-1 High Fixed

AVG-732 lib32-libcurl-gnutls 7.60.0-1 7.61.0-1 High Fixed

AVG-731 lib32-libcurl-compat 7.60.0-1 7.61.0-1 High Fixed

AVG-730 lib32-curl 7.60.0-1 7.61.0-1 High Fixed

AVG-729 curl 7.60.0-1 7.61.0-1 High Fixed

16 Jul 2018 ASA-201807-9 AVG-734 libcurl-gnutls High arbitrary code execution

16 Jul 2018 ASA-201807-8 AVG-733 libcurl-compat High arbitrary code execution

16 Jul 2018 ASA-201807-7 AVG-732 lib32-libcurl-gnutls High arbitrary code execution

16 Jul 2018 ASA-201807-6 AVG-731 lib32-libcurl-compat High arbitrary code execution

16 Jul 2018 ASA-201807-5 AVG-730 lib32-curl High arbitrary code execution

16 Jul 2018 ASA-201807-10 AVG-729 curl High arbitrary code execution

https://curl.haxx.se/docs/adv_2018-70a2.html