Commit e160125
authored
Update dependency urllib3 to v2.7.0 [SECURITY] (#7888)
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [urllib3](https://redirect.github.com/urllib3/urllib3)
([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
| `2.6.3` → `2.7.0` |

|

|
---
> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/357) for more information.
---
### urllib3: Decompression-bomb safeguards bypassed in parts of the
streaming API
[CVE-2026-44432](https://nvd.nist.gov/vuln/detail/CVE-2026-44432) /
[GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
<details>
<summary>More information</summary>
#### Details
##### Impact
urllib3's [streaming
API](https://urllib3.readthedocs.io/en/2.7.0/advanced-usage.html#streaming-and-i-o)
is designed for the efficient handling of large HTTP responses by
reading the content in chunks, rather than loading the entire response
body into memory at once.
urllib3 can perform decompression based on the HTTP `Content-Encoding`
header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the
streaming API since version 2.6.0, the library decompresses only the
necessary bytes, enabling partial content consumption.
However, urllib3 before version 2.7.0 could still decompress the whole
response instead of the requested portion in two cases:
1. During the second `HTTPResponse.read(amt=N)` call when the response
was decompressed using the official
[Brotli](https://pypi.org/project/brotli/) library.
2. When `HTTPResponse.drain_conn()` was called after the response had
been read and decompressed partially (compression algorithm did not
matter here).
These issues could cause urllib3 to fully decode a small amount of
highly compressed data in a single operation. This could result in
excessive resource consumption (high CPU usage and massive memory
allocation for the decompressed data; CWE-409) on the client side.
##### Affected usages
Applications and libraries using urllib3 versions earlier than 2.7.0 may
be affected when streaming compressed responses from untrusted sources
in either of these cases, unless decompression is explicitly disabled:
1. A response encoded with `br` is read incrementally with at least two
`HTTPResponse.read(amt=N)` or `HTTPResponse.stream(amt=N)` calls while
using the official [Brotli](https://pypi.org/project/brotli/) library.
2. `HTTPResponse.drain_conn()` is called after response decompression
has already started.
##### Remediation
Upgrade to at least urllib3 version 2.7.0 in which the library:
1. Is more efficient for reads with Brotli.
2. Always skips decompression for `HTTPResponse.drain_conn()`.
If upgrading is not immediately possible, the following workarounds may
reduce exposure in specific cases:
1. For the Brotli-specific issue only, switch from
[brotli](https://pypi.org/project/brotli/) to
[brotlicffi](https://pypi.org/project/brotlicffi/) until you can upgrade
urllib3; the official Brotli package is affected because of
[https://github.com/google/brotli/issues/1396](https://redirect.github.com/google/brotli/issues/1396).
2. If your code explicitly calls `HTTPResponse.drain_conn()`, call
`HTTPResponse.close()` instead when connection reuse is not important.
##### Credits
The Brotli-specific issue was reported by @​kimkou2024.
`HTTPResponse.drain_conn()` inefficiency was reported by
@​Cycloctane.
#### Severity
- CVSS Score: 8.9 / 10 (High)
- Vector String:
`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H`
#### References
-
[https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j)
-
[https://github.com/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
This data is provided by the [GitHub Advisory
Database](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
([CC-BY
4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>
---
### Release Notes
<details>
<summary>urllib3/urllib3 (urllib3)</summary>
###
[`v2.7.0`](https://redirect.github.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#270-2026-05-07)
[Compare
Source](https://redirect.github.com/urllib3/urllib3/compare/2.6.3...2.7.0)
\=======================
## Security
Addressed high-severity security issues.
Impact was limited to specific use cases detailed in the accompanying
advisories; overall user exposure was estimated to be marginal.
- Decompression-bomb safeguards of the streaming API were bypassed:
1. When `HTTPResponse.drain_conn()` was called after the response had
been
read and decompressed partially.
2. During the second `HTTPResponse.read(amt=N)` or
`HTTPResponse.stream(amt=N)` call when the response was decompressed
using the official `Brotli <https://pypi.org/project/brotli/>`\_\_
library.
See `GHSA-mf9v-mfxr-j63j
<https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j>`\_\_
for details.
- HTTP pools created using `ProxyManager.connection_from_url` did not
strip
sensitive headers specified in `Retry.remove_headers_on_redirect` when
redirecting to a different host.
(`GHSA-qccp-gfcp-xxvc
<https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc>`\_\_)
## Deprecations and Removals
- Used `FutureWarning` instead of `DeprecationWarning` for better
visibility of existing deprecation notices. Rescheduled the removal of
deprecated features to version 3.0.
(`#​3763 <https://github.com/urllib3/urllib3/issues/3763>`\_\_)
- Removed support for end-of-life Python 3.9.
(`#​3720 <https://github.com/urllib3/urllib3/issues/3720>`\_\_)
- Removed support for end-of-life PyPy3.10.
(`#​4979 <https://github.com/urllib3/urllib3/issues/4979>`\_\_)
- Bumped the minimum supported pyOpenSSL version to 19.0.0.
(`#​3777 <https://github.com/urllib3/urllib3/issues/3777>`\_\_)
## Bugfixes
- Fixed a bug where `HTTPResponse.read(amt=None)` was ignoring
decompressed
data buffered from previous partial reads.
(`#​3636 <https://github.com/urllib3/urllib3/issues/3636>`\_\_)
- Fixed a bug where `HTTPResponse.read()` could cache only part of the
response after a partial read when `cache_content=True`.
(`#​4967 <https://github.com/urllib3/urllib3/issues/4967>`\_\_)
- Fixed `HTTPResponse.stream()` and `HTTPResponse.read_chunked()` to
handle
`amt=0`.
(`#​3793 <https://github.com/urllib3/urllib3/issues/3793>`\_\_)
- Updated `_TYPE_BODY` type alias to include missing `Iterable[str]`,
matching the documented and runtime behavior of chunked request bodies.
(`#​3798 <https://github.com/urllib3/urllib3/issues/3798>`\_\_)
- Fixed `LocationParseError` when paths resembling schemeless URIs were
passed to `HTTPConnectionPool.urlopen()`.
(`#​3352 <https://github.com/urllib3/urllib3/issues/3352>`\_\_)
- Fixed `BaseHTTPResponse.readinto()` type annotation to accept
`memoryview` in addition to `bytearray`, matching the
`io.RawIOBase.readinto` contract and enabling use with
`io.BufferedReader` without type errors.
(`#​3764 <https://github.com/urllib3/urllib3/issues/3764>`\_\_)
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- ""
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **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.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/vortex-data/vortex).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvY2hvcmUiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>1 parent af7839a commit e160125
1 file changed
Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments