CVE-2022-23607: Unsafe handling of user-specified cookies in treq
Impact
Treq's request methods (treq.get, treq.post, HTTPClient.request, HTTPClient.get, etc.) accept cookies as a dictionary, for example:
py treq.get('https://example.com/', cookies={'session': '1234'})
Such cookies are not bound to a single domain, and are therefore sent to every domain ("supercookies"). This can potentially cause sensitive information to leak upon an HTTP redirect to a different domain., e.g. should https://example.com redirect to http://cloudstorageprovider.com the latter will receive the cookie session.
Patches
Treq 2021.1.0 and later bind cookies given to request methods (treq.request, treq.get, HTTPClient.request, HTTPClient.get, etc.) to the origin of the url parameter.
Workarounds
Instead of passing a dictionary as the cookies argument, pass a http.cookiejar.CookieJar instance with properly domain- and scheme-scoped cookies in it:
py from http.cookiejar import CookieJar from requests.cookies import createcookie
jar = CookieJar() jar.addcookie( createcookie( name='session', value='1234', domain='example.com', secure=True, ), ) client = HTTPClient(cookies=jar) client.get('https://example.com/')
References
Originally reported at huntr.dev A related issue in the handling of HTTP basic authentication was addressed in Twisted 22.1 (GHSA-92x2-jw7w-xvvx, CVE-2022-21712).
Other sources
treq is an HTTP library inspired by requests but written on top of Twisted's Agents. Treq's request methods (treq.get, treq.post, etc.) and treq.client.HTTPClient constructor accept cookies as a dictionary. Such cookies are not bound to a single domain, and are therefore sent to every domain ("supercookies"). This can potentially cause sensitive information to leak upon an HTTP redirect to a different domain., e.g. should https://example.com redirect to http://cloudstorageprovider.com the latter will receive the cookie session. Treq 2021.1.0 and later bind cookies given to request methods (treq.request, treq.get, HTTPClient.request, HTTPClient.get, etc.) to the origin of the url parameter. Users are advised to upgrade. For users unable to upgrade Instead of passing a dictionary as the cookies argument, pass a http.cookiejar.CookieJar instance with properly domain- and scheme-scoped cookies in it.
Affected Software
Event History
Frequently Asked Questions
What is CVE-2022-23607?
CVE-2022-23607 is a high severity vulnerability in the treq HTTP library that allows cookies to be sent to every domain instead of a single domain.
How does CVE-2022-23607 affect Twistedmatrix Treq?
Twistedmatrix Treq versions between 21.1.0 and 22.1.0 are affected by CVE-2022-23607.
How does CVE-2022-23607 affect Debian Debian Linux?
Debian Debian Linux version 9.0 is affected by CVE-2022-23607.
What is the severity of CVE-2022-23607?
CVE-2022-23607 has a severity rating of 7.4 (high).
How can I fix CVE-2022-23607?
To fix CVE-2022-23607, upgrade Twistedmatrix Treq to a version above 22.1.0 or apply the necessary security patches for Debian Debian Linux 9.0.