GHSA-fhpf-pp6p-55qc

Suggest an improvement
Source
https://github.com/advisories/GHSA-fhpf-pp6p-55qc
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-fhpf-pp6p-55qc/GHSA-fhpf-pp6p-55qc.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-fhpf-pp6p-55qc
Aliases
Published
2022-02-01T00:43:38Z
Modified
2024-11-13T23:23:04.346646Z
Severity
  • 6.5 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N CVSS Calculator
  • 7.1 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N CVSS Calculator
Summary
Unsafe handling of user-specified cookies in treq
Details

Impact

Treq's request methods (treq.get, treq.post, HTTPClient.request, HTTPClient.get, etc.) accept cookies as a dictionary, for example:

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:

from http.cookiejar import CookieJar
from requests.cookies import create_cookie

jar = CookieJar()
jar.add_cookie(
    create_cookie(
        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).
References

Affected packages

PyPI / treq

Package

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
22.1.0

Affected versions

0.*

0.1.0
0.2.0
0.2.1

15.*

15.0.0
15.1.0

16.*

16.12.0

17.*

17.3.0
17.3.1
17.7.0
17.8.0

18.*

18.6.0

20.*

20.3.0rc1
20.3.0
20.4.1
20.9.0rc1
20.9.0

21.*

21.1.0
21.5.0