Update dependency urllib3 to v2.5.0 [SECURITY] by renovate[bot] · Pull Request #282 · DiamondLightSource/python-zocalo
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| urllib3 (changelog) | ==2.2.3 -> ==2.5.0 |
GitHub Vulnerability Alerts
CVE-2025-50181
urllib3 handles redirects and retries using the same mechanism, which is controlled by the Retry object. The most common way to disable redirects is at the request level, as follows:
resp = urllib3.request("GET", "https://httpbin.org/redirect/1", redirect=False) print(resp.status) # 302
However, it is also possible to disable redirects, for all requests, by instantiating a PoolManager and specifying retries in a way that disable redirects:
import urllib3 http = urllib3.PoolManager(retries=0) # should raise MaxRetryError on redirect http = urllib3.PoolManager(retries=urllib3.Retry(redirect=0)) # equivalent to the above http = urllib3.PoolManager(retries=False) # should return the first response resp = http.request("GET", "https://httpbin.org/redirect/1")
However, the retries parameter is currently ignored, which means all the above examples don't disable redirects.
Affected usages
Passing retries on PoolManager instantiation to disable redirects or restrict their number.
By default, requests and botocore users are not affected.
Impact
Redirects are often used to exploit SSRF vulnerabilities. An application attempting to mitigate SSRF or open redirect vulnerabilities by disabling redirects at the PoolManager level will remain vulnerable.
Remediation
You can remediate this vulnerability with the following steps:
- Upgrade to a patched version of urllib3. If your organization would benefit from the continued support of urllib3 1.x, please contact sethmichaellarson@gmail.com to discuss sponsorship or contribution opportunities.
- Disable redirects at the
request()level instead of thePoolManager()level.
CVE-2025-50182
urllib3 supports being used in a Pyodide runtime utilizing the JavaScript Fetch API or falling back on XMLHttpRequest. This means you can use Python libraries to make HTTP requests from your browser or Node.js. Additionally, urllib3 provides a mechanism to control redirects.
However, the retries and redirect parameters are ignored with Pyodide; the runtime itself determines redirect behavior.
Affected usages
Any code which relies on urllib3 to control the number of redirects for an HTTP request in a Pyodide runtime.
Impact
Redirects are often used to exploit SSRF vulnerabilities. An application attempting to mitigate SSRF or open redirect vulnerabilities by disabling redirects may remain vulnerable if a Pyodide runtime redirect mechanism is unsuitable.
Remediation
If you use urllib3 in Node.js, upgrade to a patched version of urllib3.
Unfortunately, browsers provide no suitable way which urllib3 can use: XMLHttpRequest provides no control over redirects, the Fetch API returns opaqueredirect responses lacking data when redirects are controlled manually. Expect default browser behavior for redirects.
Release Notes
urllib3/urllib3 (urllib3)
v2.5.0
==================
Features
- Added support for the
compression.zstdmodule that is new in Python 3.14.
SeePEP 784 <https://peps.python.org/pep-0784/>_ for more information. (#​3610 <https://github.com/urllib3/urllib3/issues/3610>__) - Added support for version 0.5 of
hatch-vcs(#​3612 <https://github.com/urllib3/urllib3/issues/3612>__)
Bugfixes
- Fixed a security issue where restricting the maximum number of followed
redirects at theurllib3.PoolManagerlevel via theretriesparameter
did not work. - Made the Node.js runtime respect redirect parameters such as
retries
andredirects. - Raised exception for
HTTPResponse.shutdownon a connection already released to the pool. (#​3581 <https://github.com/urllib3/urllib3/issues/3581>__) - Fixed incorrect
CONNECTstatement when using an IPv6 proxy withconnection_from_host. Previously would not be wrapped in[]. (#​3615 <https://github.com/urllib3/urllib3/issues/3615>__)
v2.4.0
==================
Features
- Applied PEP 639 by specifying the license fields in pyproject.toml. (
#​3522 <https://github.com/urllib3/urllib3/issues/3522>__) - Updated exceptions to save and restore more properties during the pickle/serialization process. (
#​3567 <https://github.com/urllib3/urllib3/issues/3567>__) - Added
verify_flagsoption tocreate_urllib3_contextwith a default ofVERIFY_X509_PARTIAL_CHAINandVERIFY_X509_STRICTfor Python 3.13+. (#​3571 <https://github.com/urllib3/urllib3/issues/3571>__)
Bugfixes
- Fixed a bug with partial reads of streaming data in Emscripten. (
#​3555 <https://github.com/urllib3/urllib3/issues/3555>__)
Misc
- Switched to uv for installing development dependecies. (
#​3550 <https://github.com/urllib3/urllib3/issues/3550>__) - Removed the
multiple.intoto.jsonlasset from GitHub releases. Attestation of release files since v2.3.0 can be found on PyPI. (#​3566 <https://github.com/urllib3/urllib3/issues/3566>__)
v2.3.0
==================
Features
- Applied PEP 639 by specifying the license fields in pyproject.toml. (
#​3522 <https://github.com/urllib3/urllib3/issues/3522>__) - Updated exceptions to save and restore more properties during the pickle/serialization process. (
#​3567 <https://github.com/urllib3/urllib3/issues/3567>__) - Added
verify_flagsoption tocreate_urllib3_contextwith a default ofVERIFY_X509_PARTIAL_CHAINandVERIFY_X509_STRICTfor Python 3.13+. (#​3571 <https://github.com/urllib3/urllib3/issues/3571>__)
Bugfixes
- Fixed a bug with partial reads of streaming data in Emscripten. (
#​3555 <https://github.com/urllib3/urllib3/issues/3555>__)
Misc
- Switched to uv for installing development dependecies. (
#​3550 <https://github.com/urllib3/urllib3/issues/3550>__) - Removed the
multiple.intoto.jsonlasset from GitHub releases. Attestation of release files since v2.3.0 can be found on PyPI. (#​3566 <https://github.com/urllib3/urllib3/issues/3566>__)
Configuration
📅 Schedule: Branch creation - "" in timezone Europe/London, 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.