Use-after-free via shared cookies
Project curl Security Advisory, November 2, 2016 - Permalink
libcurl explicitly allows users to share cookies between multiple easy handles that are concurrently employed by different threads.
When cookies to be sent to a server are collected, the matching function collects all cookies to send and the cookie lock is released immediately afterwards. That funcion however only returns a list with references back to the original strings for name, value, path and so on. Therefore, if another thread quickly takes the lock and frees one of the original cookie structs together with its strings, a use-after-free can occur and lead to information disclosure. Another thread can also replace the contents of the cookies from separate HTTP responses or API calls.
We are not aware of any exploit of this flaw.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2016-8623 to this issue.
This flaw exists in the following curl versions:
- Affected versions: curl 7.10.7 to and including 7.50.3
- Not affected versions: curl < 7.10.7 and curl >= 7.51.0
libcurl is used by many applications, but not always advertised as such!
In version 7.51.0, the function returning the cookies make deep copies.
A patch for CVE-2016-8623 is available.
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 share cookies between threads
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.
his vulnerability was found during a Secure Open Source audit performed by Cure53.