curl / Docs / Security / Use-after-free via shared cookies

Use-after-free via shared cookies

Project curl Security Advisory, November 2, 2016 - Permalink

VULNERABILITY

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.

INFO

The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2016-8623 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 function returning the cookies make deep copies.

A patch for CVE-2016-8623 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 share cookies between threads

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

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