Staging Environment: Content and features may be unstable or change without notice.
Search for packages
Package details: pkg:pypi/urllib3@2.0.0a3
purl pkg:pypi/urllib3@2.0.0a3
Next non-vulnerable version 2.6.3
Latest non-vulnerable version 2.6.3
Risk 4.0
Vulnerabilities affecting this package (4)
Vulnerability Summary Fixed by
VCID-7wcj-zvjq-xud3
Aliases:
CVE-2025-50181
GHSA-pq67-6m6q-mj2v
urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation 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: ```python 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: ```python 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](mailto:sethmichaellarson@gmail.com) to discuss sponsorship or contribution opportunities. * Disable redirects at the `request()` level instead of the `PoolManager()` level.
2.5.0
Affected by 3 other vulnerabilities.
VCID-kjka-a931-uygj
Aliases:
CVE-2026-21441
GHSA-38jv-5279-wg99
Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API) ### Impact urllib3's [streaming API](https://urllib3.readthedocs.io/en/2.6.2/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 decoding or decompression based on the HTTP `Content-Encoding` header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming API, the library decompresses only the necessary bytes, enabling partial content consumption. However, for HTTP redirect responses, the library would read the entire response body to drain the connection and decompress the content unnecessarily. This decompression occurred even before any read methods were called, and configured read limits did not restrict the amount of decompressed data. As a result, there was no safeguard against decompression bombs. A malicious server could exploit this to trigger excessive resource consumption on the client (high CPU usage and large memory allocations for decompressed data; CWE-409). ### Affected usages Applications and libraries using urllib3 version 2.6.2 and earlier to stream content from untrusted sources by setting `preload_content=False` when they do not disable redirects. ### Remediation Upgrade to at least urllib3 v2.6.3 in which the library does not decode content of redirect responses when `preload_content=False`. If upgrading is not immediately possible, disable [redirects](https://urllib3.readthedocs.io/en/2.6.2/user-guide.html#retrying-requests) by setting `redirect=False` for requests to untrusted source.
2.6.3
Affected by 0 other vulnerabilities.
VCID-v365-pn8r-e7dh
Aliases:
CVE-2025-66418
GHSA-gm62-xv2j-4w53
urllib3 allows an unbounded number of links in the decompression chain urllib3 supports chained HTTP encoding algorithms for response content according to RFC 9110 (e.g., `Content-Encoding: gzip, zstd`). However, the number of links in the decompression chain was unbounded allowing a malicious server to insert a virtually unlimited number of compression steps leading to high CPU usage and massive memory allocation for the decompressed data.
2.6.0
Affected by 1 other vulnerability.
VCID-zevs-1ge5-y7g7
Aliases:
CVE-2025-66471
GHSA-2xpw-w6gg-jr37
urllib3 streaming API improperly handles highly compressed data urllib3's [streaming API](https://urllib3.readthedocs.io/en/2.5.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. When streaming a compressed response, urllib3 can perform decoding or decompression based on the HTTP `Content-Encoding` header (e.g., `gzip`, `deflate`, `br`, or `zstd`). The library must read compressed data from the network and decompress it until the requested chunk size is met. Any resulting decompressed data that exceeds the requested amount is held in an internal buffer for the next read operation. The decompression logic could cause urllib3 to fully decode a small amount of highly compressed data in a single operation. This can result in excessive resource consumption (high CPU usage and massive memory allocation for the decompressed data; CWE-409) on the client side, even if the application only requested a small chunk of data.
2.6.0
Affected by 1 other vulnerability.
Vulnerabilities fixed by this package (0)
Vulnerability Summary Aliases
This package is not known to fix vulnerabilities.

Date Actor Action Vulnerability Source VulnerableCode Version
2026-04-17T00:06:19.593218+00:00 GitLab Importer Affected by VCID-kjka-a931-uygj https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2026-21441.yml 38.4.0
2026-04-17T00:01:49.569209+00:00 GitLab Importer Affected by VCID-v365-pn8r-e7dh https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-66418.yml 38.4.0
2026-04-17T00:01:49.193423+00:00 GitLab Importer Affected by VCID-zevs-1ge5-y7g7 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-66471.yml 38.4.0
2026-04-16T23:31:17.936029+00:00 GitLab Importer Affected by VCID-7wcj-zvjq-xud3 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-50181.yml 38.4.0
2026-04-12T01:29:40.675762+00:00 GitLab Importer Affected by VCID-kjka-a931-uygj https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2026-21441.yml 38.3.0
2026-04-12T01:24:48.355672+00:00 GitLab Importer Affected by VCID-v365-pn8r-e7dh https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-66418.yml 38.3.0
2026-04-12T01:24:47.931581+00:00 GitLab Importer Affected by VCID-zevs-1ge5-y7g7 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-66471.yml 38.3.0
2026-04-12T00:51:06.341555+00:00 GitLab Importer Affected by VCID-7wcj-zvjq-xud3 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-50181.yml 38.3.0
2026-04-03T01:38:25.071060+00:00 GitLab Importer Affected by VCID-kjka-a931-uygj https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2026-21441.yml 38.1.0
2026-04-03T01:33:26.120808+00:00 GitLab Importer Affected by VCID-v365-pn8r-e7dh https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-66418.yml 38.1.0
2026-04-03T01:33:25.713171+00:00 GitLab Importer Affected by VCID-zevs-1ge5-y7g7 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-66471.yml 38.1.0
2026-04-03T00:59:09.789873+00:00 GitLab Importer Affected by VCID-7wcj-zvjq-xud3 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/urllib3/CVE-2025-50181.yml 38.1.0