OSPulse

Is urllib3 healthy, maintained, and safe?

55/ 100
urllib3v2.7.0
Medium riskconfidence: Highview on pypi.org

No — urllib3 carries 1 unpatched critical advisory and should not be adopted without a remediation plan.

vital-signs traceirregular · weakening

The verdict

urllib3 earns a health score of 55/100, a medium risk rating, computed deterministically from live PyPI release history, and the OSV vulnerability database. No — urllib3 carries 1 unpatched critical advisory and should not be adopted without a remediation plan.

Its most recent release shipped on 7 May 2026 — 81 days ago — so development is clearly active. Across 100 releases the cadence has been steady, which is a good sign of an ongoing maintenance rhythm. PyPI doesn't expose a reliable maintainer count, so bus-factor isn't scored here — treat maintenance depth as unknown rather than assumed.

OSV lists 38 known advisories for urllib3, including 1 critical and 9 high. Open critical advisories are the strongest possible signal to pin to a patched version, replace, or fork before shipping. Each advisory is listed with its OSV/GHSA identifier below.

urllib3 is usable but carries real signals — pin versions, watch for new advisories, and keep a fallback in mind. This is a one-time snapshot of a single package — real projects depend on dozens or hundreds of packages, and any one of them can drift or be compromised between releases. Run your own requirements.txt through the free health check, or have OSPulse monitor your whole dependency tree continuously.

Evidence trail — deterministic, auditable

Last release recency
81 days ago · active
Release cadence
steady · typical gap ~47d
Maintainer bus factor
not available from PyPI — not penalised
Known vulnerabilities (OSV)
38 advisories · 1 critical · 9 high
-45
Package age
16.6 years · 100 releases

Known vulnerabilities (38)

  • GHSA-2xpw-w6gg-jr37HIGHCVE-2025-66471PYSEC-2026-1994

    urllib3 streaming API improperly handles highly compressed data

  • GHSA-34jh-p97f-mpxfMODERATECVE-2024-37891PYSEC-2026-1995

    urllib3's Proxy-Authorization request header isn't stripped during cross-origin redirects

  • GHSA-38jv-5279-wg99HIGHCVE-2026-21441PYSEC-2026-1996

    Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API)

  • GHSA-48p4-8xcf-vxj5MODERATECVE-2025-50182PYSEC-2026-1997

    urllib3 does not control redirects in browsers and Node.js

  • GHSA-5phf-pp7p-vc2rMODERATECVE-2021-28363PYSEC-2021-59

    Using default SSLContext for HTTPS requests in an HTTPS proxy doesn't verify certificate hostname for proxy connection

  • GHSA-g4mx-q9vg-27p4MODERATECVE-2023-45803PYSEC-2023-212

    urllib3's request body not stripped after redirect from 303 status changes request method to GET

  • GHSA-gm62-xv2j-4w53HIGHCVE-2025-66418PYSEC-2026-1998

    urllib3 allows an unbounded number of links in the decompression chain

  • GHSA-gwvm-45gx-3cf8MODERATECVE-2018-25091PYSEC-2023-207

    Authorization Header forwarded on redirect

  • GHSA-hmv2-79q8-fv6gHIGHCVE-2020-7212PYSEC-2020-149

    Uncontrolled Resource Consumption in urllib3

  • GHSA-mf9v-mfxr-j63jHIGHCVE-2026-44432PYSEC-2026-142

    urllib3: Decompression-bomb safeguards bypassed in parts of the streaming API

  • GHSA-mh33-7rrq-662wHIGHCVE-2019-11324PYSEC-2019-133

    Improper Certificate Validation in urllib3

  • GHSA-pq67-6m6q-mj2vMODERATECVE-2025-50181PYSEC-2026-1999

    urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation

  • GHSA-q2q7-5pp4-w6pgHIGHCVE-2021-33503PYSEC-2021-108

    Catastrophic backtracking in URL authority parser when passed URL containing many @ characters

  • GHSA-qccp-gfcp-xxvcHIGHCVE-2026-44431PYSEC-2026-141

    urllib3: Sensitive headers forwarded across origins in proxied low-level redirects

  • GHSA-r64q-w8jr-g9qpMODERATECVE-2019-11236PYSEC-2019-132

    Improper Neutralization of CRLF Sequences in urllib3 library for Python

  • GHSA-v4w5-p2hg-8fh6MODERATECVE-2016-9015PYSEC-2017-98

    Urllib3 Incorrect Certificate Validation

  • GHSA-v845-jxx5-vc9fHIGHCVE-2023-43804PYSEC-2023-192

    `Cookie` HTTP header isn't stripped on cross-origin redirects

  • GHSA-wqvq-5m8c-6g24MODERATECVE-2020-26137PYSEC-2020-148

    CRLF injection in urllib3

  • GHSA-www2-v7xj-xrc6CRITICALCVE-2018-20060PYSEC-2018-32

    Exposure of Sensitive Information to an Unauthorized Actor in urllib3

  • PYSEC-2017-98UNKNOWNCVE-2016-9015GHSA-v4w5-p2hg-8fh6

    Versions 1.17 and 1.18 of the Python urllib3 library suffer from a vulnerability that can cause them, in certain configurations, to not correctly validate TLS certificates. This places users of the li

  • PYSEC-2018-32UNKNOWNCVE-2018-20060GHSA-www2-v7xj-xrc6

    urllib3 before version 1.23 does not remove the Authorization HTTP header when following a cross-origin redirect (i.e., a redirect that differs in host, port, or scheme). This can allow for credential

  • PYSEC-2019-132UNKNOWNCVE-2019-11236GHSA-r64q-w8jr-g9qp

    In the urllib3 library through 1.24.1 for Python, CRLF injection is possible if the attacker controls the request parameter.

  • PYSEC-2019-133UNKNOWNCVE-2019-11324GHSA-mh33-7rrq-662w

    The urllib3 library before 1.24.2 for Python mishandles certain cases where the desired set of CA certificates is different from the OS store of CA certificates, which results in SSL connections succe

  • PYSEC-2020-148UNKNOWNCVE-2020-26137GHSA-wqvq-5m8c-6g24

    urllib3 before 1.25.9 allows CRLF injection if the attacker controls the HTTP request method, as demonstrated by inserting CR and LF control characters in the first argument of putrequest(). NOTE: thi

  • PYSEC-2020-149UNKNOWNCVE-2020-7212GHSA-hmv2-79q8-fv6g

    The _encode_invalid_chars function in util/url.py in the urllib3 library 1.25.2 through 1.25.7 for Python allows a denial of service (CPU consumption) because of an inefficient algorithm. The percent_

  • PYSEC-2021-108UNKNOWNCVE-2021-33503GHSA-q2q7-5pp4-w6pg

    An issue was discovered in urllib3 before 1.26.5. When provided with a URL containing many @ characters in the authority component, the authority regular expression exhibits catastrophic backtracking,

  • PYSEC-2021-59UNKNOWNCVE-2021-28363GHSA-5phf-pp7p-vc2r

    The urllib3 library 1.26.x before 1.26.4 for Python omits SSL certificate validation in some cases involving HTTPS to HTTPS proxies. The initial connection to the HTTPS proxy (if an SSLContext isn't g

  • PYSEC-2023-192LOWCVE-2023-43804GHSA-v845-jxx5-vc9f

    urllib3 is a user-friendly HTTP client library for Python. urllib3 doesn't treat the `Cookie` HTTP header special or provide any helpers for managing cookies over HTTP, that is the responsibility of t

  • PYSEC-2023-207LOWCVE-2018-25091GHSA-gwvm-45gx-3cf8

    urllib3 before 1.24.2 does not remove the authorization HTTP header when following a cross-origin redirect (i.e., a redirect that differs in host, port, or scheme). This can allow for credentials in t

  • PYSEC-2023-212LOWCVE-2023-45803GHSA-g4mx-q9vg-27p4

    urllib3 is a user-friendly HTTP client library for Python. urllib3 previously wouldn't remove the HTTP request body when an HTTP redirect response using status 301, 302, or 303 after the request had i

  • PYSEC-2026-141LOWCVE-2026-44431GHSA-qccp-gfcp-xxvc

    urllib3 is an HTTP client library for Python. From 1.23 to before 2.7.0, cross-origin redirects followed from the low-level API via ProxyManager.connection_from_url().urlopen(..., assert_same_host=Fal

  • PYSEC-2026-142LOWCVE-2026-44432GHSA-mf9v-mfxr-j63j

    urllib3 is an HTTP client library for Python. From 2.6.0 to before 2.7.0, urllib3 could decompress the whole response instead of the requested portion (1) during the second HTTPResponse.read(amt=N) ca

  • PYSEC-2026-1994MEDIUMCVE-2025-66471GHSA-2xpw-w6gg-jr37

    urllib3 streaming API improperly handles highly compressed data

  • PYSEC-2026-1995LOWCVE-2024-37891GHSA-34jh-p97f-mpxf

    urllib3's Proxy-Authorization request header isn't stripped during cross-origin redirects

  • PYSEC-2026-1996LOWCVE-2026-21441GHSA-38jv-5279-wg99

    Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API)

  • PYSEC-2026-1997LOWCVE-2025-50182GHSA-48p4-8xcf-vxj5

    urllib3 does not control redirects in browsers and Node.js

  • PYSEC-2026-1998MEDIUMCVE-2025-66418GHSA-gm62-xv2j-4w53

    urllib3 allows an unbounded number of links in the decompression chain

  • PYSEC-2026-1999LOWCVE-2025-50181GHSA-pq67-6m6q-mj2v

    urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation

Key facts

Latest version
v2.7.0
Last release
7 May 2026 (81 days ago)
Total releases
100
First release
11 December 2009
Package age
16.6 years
Maintainers
not exposed by PyPI
Known advisories
38
Confidence
High

Frequently asked

Is urllib3 still maintained?

Yes — urllib3 released as recently as 7 May 2026 (81 days ago), so it is actively maintained.

Does urllib3 have known security vulnerabilities?

Yes — OSV lists 38 advisories for urllib3, including 1 rated critical. See the advisory list on this page for the OSV/GHSA identifiers.

Is urllib3 safe to use?

No — urllib3 carries 1 unpatched critical advisory and should not be adopted without a remediation plan. OSPulse rates it 55/100 (medium risk) based on release recency, cadence and known vulnerabilities.

Alternatives to urllib3

Other PyPI packages we've checked

Browse all checked packages →

urllib3 is one package. What about the other hundreds in your tree?

Paste your own requirements.txt into the free health check for an instant snapshot — or let OSPulse monitor your whole dependency tree continuously, before your CVE scanner wakes up.

Data from the PyPI registry & OSV.dev · snapshot generated 2026-07-27 · scores are deterministic and recomputed on each refresh.