cookie injection for other servers
Project curl Security Advisory, November 2, 2016 - Permalink
If cookie state is written into a cookie jar file that is later read back and used for subsequent requests, a malicious HTTP server can inject new cookies for arbitrary domains into said cookie jar.
The issue pertains to the function that loads cookies into memory, which reads the specified file into a fixed-size buffer in a line-by-line manner using the
fgets() function. If an invocation of
fgets() cannot read the whole line into the destination buffer due to it being too small, it truncates the output. This way, a very long cookie (name + value) sent by a malicious server would be stored in the file and subsequently that cookie could be read partially and crafted correctly, it could be treated as a different cookie for another server.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2016-8615 to this issue.
CWE-187: Partial Comparison
This flaw exists in the following curl versions.
- Affected versions: curl 4.9 to and including 7.50.3
- Not affected versions: curl < 4.9 and curl >= 7.51.0
- Introduced-in: https://github.com/curl/curl/commit/ae1912cb0d494b48d514d9
libcurl is used by many applications, but not always advertised as such!
In version 7.51.0, the cookie read function ignores too long lines.
We suggest you take one of the following actions immediately, in order of preference:
A - Upgrade curl and libcurl to version 7.51.0
B - Apply the patch to your version and rebuild
C - Do not use the
It was first reported to the curl project on September 23 by Cure53.
We contacted distros@openwall on October 19.
curl 7.51.0 was released on November 2 2016, coordinated with the publication of this advisory.
- Reported-by: Cure53
- Patched-by: Daniel Stenberg
This vulnerability was found during a Secure Open Source audit performed by Cure53.