curl / Docs / Security / cookie injection for other servers

cookie injection for other servers

Project curl Security Advisory, November 2, 2016 - Permalink

VULNERABILITY

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.

We are not aware of any exploit of this flaw.

INFO

The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2016-8615 to this issue.

AFFECTED VERSIONS

This flaw exists in the following curl versions.

libcurl is used by many applications, but not always advertised as such!

THE SOLUTION

In version 7.51.0, the cookie read function ignores too long lines.

A patch for CVE-2016-8615 is available.

RECOMMENDATIONS

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 CURLOPT_COOKIEFILE (or -b) option.

TIME LINE

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.

CREDITS

This vulnerability was found during a Secure Open Source audit performed by Cure53.