Skip to content

chore(deps): update dependency requests to >=2.32.4, <2.33 [security]#357

Draft
renovate[bot] wants to merge 1 commit intodevfrom
renovate/pypi-requests-vulnerability
Draft

chore(deps): update dependency requests to >=2.32.4, <2.33 [security]#357
renovate[bot] wants to merge 1 commit intodevfrom
renovate/pypi-requests-vulnerability

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Aug 12, 2025

This PR contains the following updates:

Package Change Age Confidence
requests (source, changelog) >=2.28, <2.31>=2.32.4, <2.33 age confidence

GitHub Vulnerability Alerts

CVE-2023-32681

Impact

Since Requests v2.3.0, Requests has been vulnerable to potentially leaking Proxy-Authorization headers to destination servers, specifically during redirects to an HTTPS origin. This is a product of how rebuild_proxies is used to recompute and reattach the Proxy-Authorization header to requests when redirected. Note this behavior has only been observed to affect proxied requests when credentials are supplied in the URL user information component (e.g. https://username:password@proxy:8080).

Current vulnerable behavior(s):

  1. HTTP → HTTPS: leak
  2. HTTPS → HTTP: no leak
  3. HTTPS → HTTPS: leak
  4. HTTP → HTTP: no leak

For HTTP connections sent through the proxy, the proxy will identify the header in the request itself and remove it prior to forwarding to the destination server. However when sent over HTTPS, the Proxy-Authorization header must be sent in the CONNECT request as the proxy has no visibility into further tunneled requests. This results in Requests forwarding the header to the destination server unintentionally, allowing a malicious actor to potentially exfiltrate those credentials.

The reason this currently works for HTTPS connections in Requests is the Proxy-Authorization header is also handled by urllib3 with our usage of the ProxyManager in adapters.py with proxy_manager_for. This will compute the required proxy headers in proxy_headers and pass them to the Proxy Manager, avoiding attaching them directly to the Request object. This will be our preferred option going forward for default usage.

Patches

Starting in Requests v2.31.0, Requests will no longer attach this header to redirects with an HTTPS destination. This should have no negative impacts on the default behavior of the library as the proxy credentials are already properly being handled by urllib3's ProxyManager.

For users with custom adapters, this may be potentially breaking if you were already working around this behavior. The previous functionality of rebuild_proxies doesn't make sense in any case, so we would encourage any users impacted to migrate any handling of Proxy-Authorization directly into their custom adapter.

Workarounds

For users who are not able to update Requests immediately, there is one potential workaround.

You may disable redirects by setting allow_redirects to False on all calls through Requests top-level APIs. Note that if you're currently relying on redirect behaviors, you will need to capture the 3xx response codes and ensure a new request is made to the redirect destination.

import requests
r = requests.get('http://github.com/', allow_redirects=False)

Credits

This vulnerability was discovered and disclosed by the following individuals.

Dennis Brinkrolf, Haxolot (https://haxolot.com/)
Tobias Funke, (tobiasfunke93@​gmail.com)

CVE-2024-35195

When using a requests.Session, if the first request to a given origin is made with verify=False, TLS certificate verification may remain disabled for all subsequent requests to that origin, even if verify=True is explicitly specified later.

This occurs because the underlying connection is reused from the session's connection pool, causing the initial TLS verification setting to persist for the lifetime of the pooled connection. As a result, applications may unintentionally send requests without certificate verification, leading to potential man-in-the-middle attacks and compromised confidentiality or integrity.

This behavior affects versions of requests prior to 2.32.0.

CVE-2024-47081

Impact

Due to a URL parsing issue, Requests releases prior to 2.32.4 may leak .netrc credentials to third parties for specific maliciously-crafted URLs.

Workarounds

For older versions of Requests, use of the .netrc file can be disabled with trust_env=False on your Requests Session (docs).

References

https://github.com/psf/requests/pull/6965
https://seclists.org/fulldisclosure/2025/Jun/2


Release Notes

psf/requests (requests)

v2.32.4

Compare Source

Security

  • CVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted
    environment will retrieve credentials for the wrong hostname/machine from a
    netrc file.

Improvements

  • Numerous documentation improvements

Deprecations

  • Added support for pypy 3.11 for Linux and macOS.
  • Dropped support for pypy 3.9 following its end of support.

v2.32.3

Compare Source

Bugfixes

  • Fixed bug breaking the ability to specify custom SSLContexts in sub-classes of
    HTTPAdapter. (#​6716)
  • Fixed issue where Requests started failing to run on Python versions compiled
    without the ssl module. (#​6724)

v2.32.2

Compare Source

Deprecations

  • To provide a more stable migration for custom HTTPAdapters impacted
    by the CVE changes in 2.32.0, we've renamed _get_connection to
    a new public API, get_connection_with_tls_context. Existing custom
    HTTPAdapters will need to migrate their code to use this new API.
    get_connection is considered deprecated in all versions of Requests>=2.32.0.

    A minimal (2-line) example has been provided in the linked PR to ease
    migration, but we strongly urge users to evaluate if their custom adapter
    is subject to the same issue described in CVE-2024-35195. (#​6710)

v2.32.1

Compare Source

Bugfixes

  • Add missing test certs to the sdist distributed on PyPI.

v2.32.0

Compare Source

Security

  • Fixed an issue where setting verify=False on the first request from a
    Session will cause subsequent requests to the same origin to also ignore
    cert verification, regardless of the value of verify.
    (GHSA-9wx4-h78v-vm56)

Improvements

  • verify=True now reuses a global SSLContext which should improve
    request time variance between first and subsequent requests. It should
    also minimize certificate load time on Windows systems when using a Python
    version built with OpenSSL 3.x. (#​6667)
  • Requests now supports optional use of character detection
    (chardet or charset_normalizer) when repackaged or vendored.
    This enables pip and other projects to minimize their vendoring
    surface area. The Response.text() and apparent_encoding APIs
    will default to utf-8 if neither library is present. (#​6702)

Bugfixes

  • Fixed bug in length detection where emoji length was incorrectly
    calculated in the request content-length. (#​6589)
  • Fixed deserialization bug in JSONDecodeError. (#​6629)
  • Fixed bug where an extra leading / (path separator) could lead
    urllib3 to unnecessarily reparse the request URI. (#​6644)

Deprecations

  • Requests has officially added support for CPython 3.12 (#​6503)
  • Requests has officially added support for PyPy 3.9 and 3.10 (#​6641)
  • Requests has officially dropped support for CPython 3.7 (#​6642)
  • Requests has officially dropped support for PyPy 3.7 and 3.8 (#​6641)

Documentation

  • Various typo fixes and doc improvements.

Packaging

  • Requests has started adopting some modern packaging practices.
    The source files for the projects (formerly requests) is now located
    in src/requests in the Requests sdist. (#​6506)
  • Starting in Requests 2.33.0, Requests will migrate to a PEP 517 build system
    using hatchling. This should not impact the average user, but extremely old
    versions of packaging utilities may have issues with the new packaging format.

v2.31.0

Compare Source

Security

  • Versions of Requests between v2.3.0 and v2.30.0 are vulnerable to potential
    forwarding of Proxy-Authorization headers to destination servers when
    following HTTPS redirects.

    When proxies are defined with user info (https://user:pass@proxy:8080), Requests
    will construct a Proxy-Authorization header that is attached to the request to
    authenticate with the proxy.

    In cases where Requests receives a redirect response, it previously reattached
    the Proxy-Authorization header incorrectly, resulting in the value being
    sent through the tunneled connection to the destination server. Users who rely on
    defining their proxy credentials in the URL are strongly encouraged to upgrade
    to Requests 2.31.0+ to prevent unintentional leakage and rotate their proxy
    credentials once the change has been fully deployed.

    Users who do not use a proxy or do not supply their proxy credentials through
    the user information portion of their proxy URL are not subject to this
    vulnerability.

    Full details can be read in our Github Security Advisory
    and CVE-2023-32681.

v2.30.0

Compare Source

Dependencies

v2.29.0

Compare Source

Improvements

  • Requests now defers chunked requests to the urllib3 implementation to improve
    standardization. (#​6226)
  • Requests relaxes header component requirements to support bytes/str subclasses. (#​6356)

v2.28.2

Compare Source

Dependencies

  • Requests now supports charset_normalizer 3.x. (#​6261)

Bugfixes

  • Updated MissingSchema exception to suggest https scheme rather than http. (#​6188)

v2.28.1

Compare Source

Improvements

  • Speed optimization in iter_content with transition to yield from. (#​6170)

Dependencies

  • Added support for chardet 5.0.0 (#​6179)
  • Added support for charset-normalizer 2.1.0 (#​6169)

Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Aug 12, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from ea61e11 to a5af41f Compare August 12, 2025 16:14
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Aug 12, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch 2 times, most recently from ec5df99 to 192c5e6 Compare August 12, 2025 19:39
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Aug 12, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 192c5e6 to 0c2b790 Compare August 13, 2025 13:09
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Aug 13, 2025
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Aug 13, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 0c2b790 to fd66675 Compare August 13, 2025 20:04
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Aug 19, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch 2 times, most recently from 684f541 to 0d62973 Compare August 19, 2025 20:54
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Aug 19, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 0d62973 to e1da2ca Compare September 25, 2025 18:02
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Sep 25, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from e1da2ca to f7b65c5 Compare September 25, 2025 23:36
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Sep 25, 2025
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Oct 9, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from f7b65c5 to ccd7c71 Compare October 9, 2025 11:52
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Oct 9, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from ccd7c71 to 4512488 Compare October 9, 2025 15:36
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Nov 10, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 4512488 to 2663605 Compare November 10, 2025 22:10
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Nov 11, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 2663605 to 5dbf90a Compare November 11, 2025 05:12
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Dec 15, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 5dbf90a to 15f26cb Compare December 15, 2025 15:07
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Dec 15, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 15f26cb to 322075d Compare December 15, 2025 18:51
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Dec 30, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 322075d to bbdb546 Compare December 30, 2025 15:36
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Dec 30, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch 2 times, most recently from f02fbca to 175921c Compare December 31, 2025 18:44
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Dec 31, 2025
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Dec 31, 2025
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 175921c to 45a7044 Compare December 31, 2025 23:27
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Jan 23, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 45a7044 to 243557f Compare January 23, 2026 20:47
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Jan 24, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 243557f to 07d6bf8 Compare January 24, 2026 02:46
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 07d6bf8 to 98c1d66 Compare February 2, 2026 15:52
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Feb 2, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 98c1d66 to 42078db Compare February 2, 2026 22:03
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Feb 2, 2026
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Feb 12, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch 2 times, most recently from 31b0e84 to b8f14e2 Compare February 12, 2026 20:34
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Feb 12, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from b8f14e2 to 67f1427 Compare February 16, 2026 11:38
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Feb 16, 2026
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Feb 16, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 67f1427 to b4c9116 Compare February 16, 2026 16:11
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32.4, <2.33 [security] chore(deps): update dependency requests to >=2.32, <2.33 [security] Feb 27, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from b4c9116 to 88d635c Compare February 27, 2026 18:56
@renovate renovate bot changed the title chore(deps): update dependency requests to >=2.32, <2.33 [security] chore(deps): update dependency requests to >=2.32.4, <2.33 [security] Feb 27, 2026
@renovate renovate bot force-pushed the renovate/pypi-requests-vulnerability branch from 88d635c to 7226c94 Compare February 27, 2026 22:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants