CURL-CVE-2018-1000120
Dashboard / Vulnerabilities / CURL-CVE-2018-1000120
CURL-CVE-2018-1000120
Summary: FTP path trickery leads to NIL byte out of bounds write
Details: 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.
References:
Affected packages
Package
Name:
Purl:
Affected ranges
Type: SEMVER
Events:
