CURL-CVE-2018-1000120

vendorUSosv

FTP path trickery leads to NIL byte out of bounds write

view advisory published 2018-03-14Licence: per source

curl can be fooled into writing a zero byte out of bounds. This bug can trigger when curl is told to work on an FTP URL, with the setting to only issue a single CWD command (`--ftp-method singlecwd` or the libcurl alternative `CURLOPT_FTP_FILEMETHOD`). curl then URL-decodes the given path, calls strlen() on the result and deducts the length of the filename part to find the end of the directory within the buffer. It then writes a zero byte on that index, in a buffer allocated on the heap. If the directory part of the URL contains a "%00" sequence, the directory length might end up shorter than the filename path, making the calculation `size_t index = directory_len - filepart_len` end up with a huge index variable for where the zero byte gets stored: `heap_buffer[index] = 0`. On several architectures that huge index wraps and works as a negative value, thus overwriting memory *before* the intended heap buffer. By using different file part lengths and putting %00 in different places in the URL, an attacker that can control what paths a curl-using application uses can write that zero byte on different indexes.

01

describes (1)

Related CVEs.

IDseverity exploitable
CVE-2018-1000120UScritical—
scry

Advisories like this name the exposed products attackers go after on your perimeter. See what is exposed on your perimeter with a free passive scan.

Free scan