Every CVE Search/ Get API key

CVE-2026-97687

urllib3: HTTPS proxy TLS configuration may be ignored or overridden

7.6 HighFix available

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
Passive

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
None

Exploit likelihood

0.21%Unchanged since Sep 30, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.6

urllib3: HTTPS proxy TLS configuration may be ignored or overridden

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
CVE-2026-97687
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-295, CWE-440
Updated
2026-11-02
EUVDEUVD-2026-89000 7.6

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
EUVD-2026-89000
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-8988-9cw3-xx77 7.6

urllib3: HTTPS proxy TLS configuration may be ignored or overridden

Impact

urllib3 supports configuring TLS independently for an HTTPS proxy and the target server.

proxy_ssl_context, proxy_assert_hostname, and proxy_assert_fingerprint configure the TLS connection to the proxy. ssl_context and the other target-specific TLS parameters configure the connection to the target server.

In urllib3 versions 1.26.0 through 2.7.0, these configurations were not consistently separated. Depending on the proxy mode, urllib3 could:

  1. Ignore proxy_ssl_context and use the target server's SSL context for the TLS connection to an HTTPS forwarding proxy.
  2. Override the HTTPS proxy's certificate-verification policy with the target server's certificate-verification policy.
  3. Apply target-specific SNI, hostname assertions, certificate fingerprint assertions, or TLS client credentials to the TLS connection to an HTTPS forwarding proxy.

In particular, configuring cert_reqs="CERT_NONE" for a target server could overwrite the verify_mode of the SSL context configured for the HTTPS proxy. This modification occurred in place and persisted on the context object, potentially disabling proxy certificate verification for later connections that reused the same context.

An attacker able to intercept the connection to an HTTPS proxy may be able to impersonate the proxy when the effective proxy TLS configuration disables certificate verification or otherwise accepts the attacker's certificate. This may occur, for example, when the target server's trust or identity policy is incorrectly applied to the proxy connection.

When HTTPS forwarding is enabled, an impersonated proxy can observe or modify forwarded requests and responses, potentially exposing credentials, authentication tokens, request bodies, response data, and other sensitive information.

A TLS client certificate intended for the target server may also be presented to the proxy or to an attacker impersonating it. This can disclose the client's identity and provide proof of possession of the corresponding private key. The private key itself is not transmitted during the TLS handshake.

In CONNECT tunneling mode, impersonating the HTTPS proxy does not by itself defeat the separate end-to-end TLS connection between the client and the target server.

Affected Usages

Code using urllib3 versions 1.26.0 through 2.7.0 may be affected in any of the following cases.

1. The target SSL context is used for an HTTPS forwarding proxy

HTTPS requests are forwarded through an HTTPS proxy with use_forwarding_for_https=True, and proxy_ssl_context is configured for the proxy.

urllib3 may ignore proxy_ssl_context and use the target server's ssl_context for the proxy TLS handshake. The proxy may therefore be verified using the target server's trust and certificate policy instead of the policy explicitly configured for the proxy.

2. The target verification policy overrides the proxy policy

An HTTPS proxy is configured with proxy_ssl_context, while the target server uses a different certificate-verification policy.

urllib3 may apply the target server's cert_reqs value to the proxy SSL context. For example, setting cert_reqs="CERT_NONE" for the target server may also disable certificate verification for the HTTPS proxy, even when proxy_ssl_context was configured to require verification.

This issue can affect the TLS connection to an HTTPS proxy in both forwarding and CONNECT tunneling configurations.

3. A mutated proxy SSL context is reused

The same SSL context is reused as proxy_ssl_context across multiple connections, and certificate verification is disabled for one target server.

urllib3 may modify the proxy SSL context's verify_mode in place. Later connections that reuse the same context may therefore connect to the HTTPS proxy without certificate verification.

4. Target-specific TLS identity or credentials are applied to the proxy

HTTPS requests are forwarded through an HTTPS proxy with…

Record
GHSA-8988-9cw3-xx77
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-295, CWE-440
Updated
2026-11-02
NVD 7.6

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
CVE-2026-97687
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
Weakness
CWE-295, CWE-440
Updated
2026-11-02
OSVBELL-CVE-2026-97687 8.1
Record
BELL-CVE-2026-97687
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSV 7.6

urllib3: HTTPS proxy TLS configuration may be ignored or overridden

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
CVE-2026-97687
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-295, CWE-440
Updated
2026-11-02
Show 41 moreShow less
OSVDEBIAN-CVE-2026-97687 8.1

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
DEBIAN-CVE-2026-97687
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVGHSA-8988-9cw3-xx77 7.6

urllib3: HTTPS proxy TLS configuration may be ignored or overridden

Impact

urllib3 supports configuring TLS independently for an HTTPS proxy and the target server.

proxy_ssl_context, proxy_assert_hostname, and proxy_assert_fingerprint configure the TLS connection to the proxy. ssl_context and the other target-specific TLS parameters configure the connection to the target server.

In urllib3 versions 1.26.0 through 2.7.0, these configurations were not consistently separated. Depending on the proxy mode, urllib3 could:

  1. Ignore proxy_ssl_context and use the target server's SSL context for the TLS connection to an HTTPS forwarding proxy.
  2. Override the HTTPS proxy's certificate-verification policy with the target server's certificate-verification policy.
  3. Apply target-specific SNI, hostname assertions, certificate fingerprint assertions, or TLS client credentials to the TLS connection to an HTTPS forwarding proxy.

In particular, configuring cert_reqs="CERT_NONE" for a target server could overwrite the verify_mode of the SSL context configured for the HTTPS proxy. This modification occurred in place and persisted on the context object, potentially disabling proxy certificate verification for later connections that reused the same context.

An attacker able to intercept the connection to an HTTPS proxy may be able to impersonate the proxy when the effective proxy TLS configuration disables certificate verification or otherwise accepts the attacker's certificate. This may occur, for example, when the target server's trust or identity policy is incorrectly applied to the proxy connection.

When HTTPS forwarding is enabled, an impersonated proxy can observe or modify forwarded requests and responses, potentially exposing credentials, authentication tokens, request bodies, response data, and other sensitive information.

A TLS client certificate intended for the target server may also be presented to the proxy or to an attacker impersonating it. This can disclose the client's identity and provide proof of possession of the corresponding private key. The private key itself is not transmitted during the TLS handshake.

In CONNECT tunneling mode, impersonating the HTTPS proxy does not by itself defeat the separate end-to-end TLS connection between the client and the target server.

Affected Usages

Code using urllib3 versions 1.26.0 through 2.7.0 may be affected in any of the following cases.

1. The target SSL context is used for an HTTPS forwarding proxy

HTTPS requests are forwarded through an HTTPS proxy with use_forwarding_for_https=True, and proxy_ssl_context is configured for the proxy.

urllib3 may ignore proxy_ssl_context and use the target server's ssl_context for the proxy TLS handshake. The proxy may therefore be verified using the target server's trust and certificate policy instead of the policy explicitly configured for the proxy.

2. The target verification policy overrides the proxy policy

An HTTPS proxy is configured with proxy_ssl_context, while the target server uses a different certificate-verification policy.

urllib3 may apply the target server's cert_reqs value to the proxy SSL context. For example, setting cert_reqs="CERT_NONE" for the target server may also disable certificate verification for the HTTPS proxy, even when proxy_ssl_context was configured to require verification.

This issue can affect the TLS connection to an HTTPS proxy in both forwarding and CONNECT tunneling configurations.

3. A mutated proxy SSL context is reused

The same SSL context is reused as proxy_ssl_context across multiple connections, and certificate verification is disabled for one target server.

urllib3 may modify the proxy SSL context's verify_mode in place. Later connections that reuse the same context may therefore connect to the HTTPS proxy without certificate verification.

4. Target-specific TLS identity or credentials are applied to the proxy

HTTPS requests are forwarded through an HTTPS proxy with…

Record
GHSA-8988-9cw3-xx77
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-295, CWE-440
Updated
2026-11-02
OSVOESA-2026-4624 7.6

python-urllib3 security update

Sanity-friendly HTTP client for Python

Security Fix(es):

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.(CVE-2026-97687)

Record
OESA-2026-4624
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-4625 8.9

python-urllib3 security update

Sanity-friendly HTTP client for Python

Security Fix(es):

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.(CVE-2026-97687)

urllib3 is an HTTP client library for Python. From 1.10.3 until 2.8.0, the HTTPResponse.read_chunked and HTTPResponse.stream methods can allocate unbounded memory because the streaming chunk parser buffers the chunk-size field until newline or EOF without a length bound. The trigger is that a malicious server returns Transfer-Encoding: chunked followed by a very long run of bytes without a newline. The attack mechanism is that a malicious HTTP server sends a very long unterminated chunk-size line. The impact is that unbounded memory allocation can exhaust the client process. This issue is fixed in version 2.8.0.(CVE-2026-97689)

Record
OESA-2026-4625
CVSS 4.0
8.9 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-4626 7.6

python-urllib3 security update

Sanity-friendly HTTP client for Python

Security Fix(es):

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.(CVE-2026-97687)

Record
OESA-2026-4626
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVOESA-2026-4627 7.6

python-urllib3 security update

Sanity-friendly HTTP client for Python

Security Fix(es):

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.(CVE-2026-97687)

Record
OESA-2026-4627
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVPYSEC-2026-4175 7.6

urllib3: HTTPS proxy TLS configuration may be ignored or overridden

Impact

urllib3 supports configuring TLS independently for an HTTPS proxy and the target server.

proxy_ssl_context, proxy_assert_hostname, and proxy_assert_fingerprint configure the TLS connection to the proxy. ssl_context and the other target-specific TLS parameters configure the connection to the target server.

In urllib3 versions 1.26.0 through 2.7.0, these configurations were not consistently separated. Depending on the proxy mode, urllib3 could:

  1. Ignore proxy_ssl_context and use the target server's SSL context for the TLS connection to an HTTPS forwarding proxy.
  2. Override the HTTPS proxy's certificate-verification policy with the target server's certificate-verification policy.
  3. Apply target-specific SNI, hostname assertions, certificate fingerprint assertions, or TLS client credentials to the TLS connection to an HTTPS forwarding proxy.

In particular, configuring cert_reqs="CERT_NONE" for a target server could overwrite the verify_mode of the SSL context configured for the HTTPS proxy. This modification occurred in place and persisted on the context object, potentially disabling proxy certificate verification for later connections that reused the same context.

An attacker able to intercept the connection to an HTTPS proxy may be able to impersonate the proxy when the effective proxy TLS configuration disables certificate verification or otherwise accepts the attacker's certificate. This may occur, for example, when the target server's trust or identity policy is incorrectly applied to the proxy connection.

When HTTPS forwarding is enabled, an impersonated proxy can observe or modify forwarded requests and responses, potentially exposing credentials, authentication tokens, request bodies, response data, and other sensitive information.

A TLS client certificate intended for the target server may also be presented to the proxy or to an attacker impersonating it. This can disclose the client's identity and provide proof of possession of the corresponding private key. The private key itself is not transmitted during the TLS handshake.

In CONNECT tunneling mode, impersonating the HTTPS proxy does not by itself defeat the separate end-to-end TLS connection between the client and the target server.

Affected Usages

Code using urllib3 versions 1.26.0 through 2.7.0 may be affected in any of the following cases.

1. The target SSL context is used for an HTTPS forwarding proxy

HTTPS requests are forwarded through an HTTPS proxy with use_forwarding_for_https=True, and proxy_ssl_context is configured for the proxy.

urllib3 may ignore proxy_ssl_context and use the target server's ssl_context for the proxy TLS handshake. The proxy may therefore be verified using the target server's trust and certificate policy instead of the policy explicitly configured for the proxy.

2. The target verification policy overrides the proxy policy

An HTTPS proxy is configured with proxy_ssl_context, while the target server uses a different certificate-verification policy.

urllib3 may apply the target server's cert_reqs value to the proxy SSL context. For example, setting cert_reqs="CERT_NONE" for the target server may also disable certificate verification for the HTTPS proxy, even when proxy_ssl_context was configured to require verification.

This issue can affect the TLS connection to an HTTPS proxy in both forwarding and CONNECT tunneling configurations.

3. A mutated proxy SSL context is reused

The same SSL context is reused as proxy_ssl_context across multiple connections, and certificate verification is disabled for one target server.

urllib3 may modify the proxy SSL context's verify_mode in place. Later connections that reuse the same context may therefore connect to the HTTPS proxy without certificate verification.

4. Target-specific TLS identity or credentials are applied to the proxy

HTTPS requests are forwarded through an HTTPS proxy with…

Record
PYSEC-2026-4175
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Updated
2026-11-02
OSVRHSA-2026:69612 7.5

Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update

Record
RHSA-2026:69612
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2026:84577 7.5

Red Hat Security Advisory: python3.14-urllib3 security update

Record
RHSA-2026:84577
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2026:84578 7.5

Red Hat Security Advisory: python3.14-urllib3 security update

Record
RHSA-2026:84578
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRLSA-2026:84577 7.5

Important: python3.14-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)

  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:84577
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRLSA-2026:84578 7.5

Important: python3.14-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)

  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:84578
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRLSA-2026:85929 7.5

Important: python3.12-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)

  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:85929
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRLSA-2026:85930 7.5

Important: python-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)

  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:85930
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-03
OSVRLSA-2026:90494 7.5

Important: python-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)

  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:90494
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRLSA-2026:92474 7.5

Important: python3.12-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)

  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:92474
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-97687 7.6

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
UBUNTU-CVE-2026-97687
CVSS 4.0
7.6 HighCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVALSA-2026:84577 No score

Important: python3.14-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)
  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:84577
Updated
2026-11-02
OSVALSA-2026:84578 No score

Important: python3.14-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)
  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:84578
Updated
2026-11-02
OSVALSA-2026:85929 No score

Important: python3.12-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)
  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:85929
Updated
2026-11-02
OSVALSA-2026:85930 No score

Important: python-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)
  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:85930
Updated
2026-11-02
OSVALSA-2026:90494 No score

Important: python-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)
  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:90494
Updated
2026-11-02
OSVALSA-2026:92474 No score

Important: python3.12-urllib3 security update

Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.

Security Fix(es):

  • urllib3: urllib3: Denial of Service via unbounded memory allocation in chunk parser (CVE-2026-97689)
  • urllib3: urllib3: Traffic interception via HTTPS proxy TLS configuration override (CVE-2026-97687)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:92474
Updated
2026-11-02
OSVAZL-105651 No score

CVE-2026-97687 affecting package python-pip 24.2-10

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
AZL-105651
Updated
2026-11-02
OSVAZL-105663 No score

CVE-2026-97687 affecting package python-urllib3 2.0.7-6

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
AZL-105663
Updated
2026-11-02
OSVAZL-105678 No score

CVE-2026-97687 affecting package python-virtualenv 20.36.1-6

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
AZL-105678
Updated
2026-11-02
OSVAZL-105693 No score

CVE-2026-97687 affecting package python3 3.12.14-2

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
AZL-105693
Updated
2026-11-02
OSVAZL-105909 No score

CVE-2026-97687 affecting package tensorflow 2.16.1-11

urllib3 is an HTTP client library for Python. From 1.26.0 until 2.8.0, the proxy_ssl_context, proxy_assert_hostname, proxy_assert_fingerprint, ssl_context, cert_reqs, verify_mode, use_forwarding_for_https=True, and CERT_NONE configuration paths fail to remain separated because target-server TLS settings are incorrectly applied to the HTTPS proxy connection. The trigger is that an application uses an HTTPS proxy and configures target-server TLS settings that must remain separate from the proxy TLS handshake, including HTTPS forwarding with target-specific identity or credentials. Applying cert_reqs=CERT_NONE can overwrite proxy_ssl_context.verify_mode in place, and the mutation persists so later connections reusing the same context may connect to the HTTPS proxy without certificate verification. The attack mechanism is that an attacker intercepts and impersonates the HTTPS proxy after the effective proxy policy accepts the attacker's certificate. The impact is that the attacker can observe or modify forwarded traffic or receive a target TLS client certificate, while CONNECT tunneling still preserves the separate end-to-end target TLS connection. This issue is fixed in version 2.8.0.

Record
AZL-105909
Updated
2026-11-02
OSVCLSA-2026-1790834041 No score

TuxCare security update for urllib3 (2 CVEs)

TuxCare rebuilt urllib3 to address 2 CVEs. Fixed in 2.0.7.post4+tuxcare.

Record
CLSA-2026-1790834041
Updated
2026-11-02
OSVCLSA-2026-1790847237 No score

TuxCare security update for urllib3 (2 CVEs)

TuxCare rebuilt urllib3 to address 2 CVEs. Fixed in 1.26.20.post5+tuxcare.

Record
CLSA-2026-1790847237
Updated
2026-11-02
OSVCLSA-2026-1791264856 No score

TuxCare security update for urllib3 (2 CVEs)

TuxCare rebuilt urllib3 to address 2 CVEs. Fixed in 1.26.4.post6+tuxcare.

Record
CLSA-2026-1791264856
Updated
2026-11-02
OSVCLSA-2026-1791270635 No score

TuxCare security update for urllib3 (5 CVEs)

TuxCare rebuilt urllib3 to address 5 CVEs. Fixed in 2.5.0.post2+tuxcare.

Record
CLSA-2026-1791270635
Updated
2026-11-02
OSVopenSUSE-SU-2026:12044-1 No score

python313-urllib3-2.8.0-1.1 on GA media

These are all security issues fixed in the python313-urllib3-2.8.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:12044-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:12119-1 No score

python313-urllib3_1-1.26.20-8.1 on GA media

These are all security issues fixed in the python313-urllib3_1-1.26.20-8.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:12119-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:22071-1 No score

Security update for python-urllib3

This update for python-urllib3 fixes the following issues:

  • CVE-2026-97687: traffic interception due to possible HTTPS proxy TLS configuration override (bsc#1283908).
  • CVE-2026-97688: denial of service due to infinite loop during chunked Deflate decoding (bsc#1283909).
  • CVE-2026-97689: denial of service due to unbounded memory allocation in chunk parser (bsc#1283910).
Record
openSUSE-SU-2026:22071-1
Updated
2026-11-02
OSVROOT-APP-PYPI-CVE-2026-97687 No score

CVE-2026-97687 in urllib3 - Patched by Root

Root has patched CVE-2026-97687 in the urllib3 package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-97687
Updated
2026-11-03
OSVSUSE-SU-2026:24125-1 No score

Security update for python-urllib3

This update for python-urllib3 fixes the following issues:

  • CVE-2026-97687: traffic interception due to possible HTTPS proxy TLS configuration override (bsc#1283908).
  • CVE-2026-97688: denial of service due to infinite loop during chunked Deflate decoding (bsc#1283909).
  • CVE-2026-97689: denial of service due to unbounded memory allocation in chunk parser (bsc#1283910).
Record
SUSE-SU-2026:24125-1
Updated
2026-11-02
OSVSUSE-SU-2026:24217-1 No score

Security update for python-urllib3

This update for python-urllib3 fixes the following issues:

  • CVE-2026-97687: traffic interception due to possible HTTPS proxy TLS configuration override (bsc#1283908).
  • CVE-2026-97688: denial of service due to infinite loop during chunked Deflate decoding (bsc#1283909).
  • CVE-2026-97689: denial of service due to unbounded memory allocation in chunk parser (bsc#1283910).
Record
SUSE-SU-2026:24217-1
Updated
2026-11-02
OSVSUSE-SU-2026:4704-1 No score

Security update for python-urllib3

This update for python-urllib3 fixes the following issues:

  • CVE-2026-97687: traffic interception due to possible HTTPS proxy TLS configuration override (bsc#1283908).
  • CVE-2026-97688: denial of service due to infinite loop during chunked Deflate decoding (bsc#1283909).
  • CVE-2026-97689: denial of service due to unbounded memory allocation in chunk parser (bsc#1283910).
Record
SUSE-SU-2026:4704-1
Updated
2026-11-02
OSVSUSE-SU-2026:4948-1 No score

Security update for python-urllib3_1

This update for python-urllib3_1 fixes the following issues:

  • CVE-2026-97687: traffic interception due to possible HTTPS proxy TLS configuration override (bsc#1283908).
  • CVE-2026-97688: denial of service due to infinite loop during chunked Deflate decoding (bsc#1283909).
  • CVE-2026-97689: denial of service due to unbounded memory allocation in chunk parser (bsc#1283910).
Record
SUSE-SU-2026:4948-1
Updated
2026-11-02
OSVUSN-8926-1 No score

python-urllib3 vulnerabilities

Yu-Fu Fu, Seth Larson and Yonatan Magier discovered that urllib3 did not correctly handle certain certificate validations. An attacker could possibly use this issue to observe or modify forwarded traffic. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-97687)

Martin Desrumaux discovered that urllib3 did not correctly handle decoding certain deflate responses. An attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-97688)

It was discovered that urllib3 did not correctly handle certain memory operations. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-97689)

Record
USN-8926-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
urllib3
PyPI
1.26.0 up to 2.8.0
2.8.0
python3.14-urllib3
AlmaLinux:9
From an advisory covering 2 CVEs
before 2.6.3-2.el9_8.6
2.6.3-2.el9_8.6
python3.14-urllib3
AlmaLinux:10
From an advisory covering 2 CVEs
before 2.6.3-2.el10_2.6
2.6.3-2.el10_2.6
python3.12-urllib3
AlmaLinux:9
From an advisory covering 2 CVEs
before 1.26.19-3.el9_8.2
1.26.19-3.el9_8.2
python3-urllib3
AlmaLinux:10
From an advisory covering 2 CVEs
before 1.26.19-4.el10_2.2
1.26.19-4.el10_2.2
python3-urllib3
AlmaLinux:9
From an advisory covering 2 CVEs
before 1.26.5-8.el9_8.2
1.26.5-8.el9_8.2
python3.12-urllib3
AlmaLinux:8
From an advisory covering 2 CVEs
before 1.26.19-5.el8_10
1.26.19-5.el8_10
python-pip
Azure Linux:3
through 24.2-10 None known
python-urllib3
Azure Linux:3
through 2.0.7-6 None known
python-virtualenv
Azure Linux:3
through 20.36.1-6 None known
Show 67 moreShow less
Affected packages
PackageAffectedFixed
python3
Azure Linux:3
through 3.12.14-2 None known
tensorflow
Azure Linux:3
through 2.16.1-11 None known
py3-urllib3
Alpaquita:stream
1.26.12-r1 up to 2.8.0-r0
2.8.0-r0
urllib3
TuxCare:PyPI
From an advisory covering 2 CVEs
2.0.7 up to 2.0.7.post4+tuxcare, plus listed versions
2.0.7.post1+tuxcare2.0.7.post2+tuxcare2.0.7.post3+tuxcare
2.0.7.post4+tuxcare
urllib3
TuxCare:PyPI
From an advisory covering 2 CVEs
1.26.20 up to 1.26.20.post5+tuxcare, plus listed versions
1.26.20.post1+tuxcare1.26.20.post2+tuxcare1.26.20.post3+tuxcare1.26.20.post4+tuxcare
1.26.20.post5+tuxcare
urllib3
TuxCare:PyPI
From an advisory covering 2 CVEs
1.26.4 up to 1.26.4.post6+tuxcare, plus listed versions
1.26.4.post1+tuxcare1.26.4.post2+tuxcare1.26.4.post3+tuxcare1.26.4.post4+tuxcare1.26.4.post5+tuxcare
1.26.4.post6+tuxcare
urllib3
TuxCare:PyPI
From an advisory covering 5 CVEs
2.5.0 up to 2.5.0.post2+tuxcare, plus listed versions
2.5.0.post1+tuxcare
2.5.0.post2+tuxcare
python-urllib3
Debian:12
All versions, plus listed versions
1.26.12-11.26.12-1+deb12u11.26.12-1+deb12u21.26.12-1+deb12u31.26.12-1+deb12u4
Show 23 moreShow less
1.26.16-11.26.17-11.26.18-11.26.18-22.0.7-12.0.7-22.2.3-12.2.3-22.2.3-32.2.3-42.3.0-12.3.0-22.3.0-32.5.0-12.5.0-1.12.5.0-22.6.3-12.6.3-22.7.0-12.7.0-22.7.0-32.8.0-12.8.0-2
None known
python-urllib3
Debian:13
All versions, plus listed versions
2.3.0-32.3.0-3+deb13u12.3.0-3+deb13u22.5.0-12.5.0-1.1
Show 8 moreShow less
2.5.0-22.6.3-12.6.3-22.7.0-12.7.0-22.7.0-32.8.0-12.8.0-2
None known
python-urllib3
Debian:14
before 2.8.0-1, plus listed versions
2.3.0-32.5.0-12.5.0-1.12.5.0-22.6.3-1
Show 4 moreShow less
2.6.3-22.7.0-12.7.0-22.7.0-3
2.8.0-1
urllib3
PyPI
1.26.0 up to 2.8.0, plus listed versions
1.26.11.26.101.26.111.26.121.26.13
Show 40 moreShow less
1.26.141.26.151.26.161.26.171.26.181.26.191.26.21.26.201.26.31.26.41.26.51.26.61.26.71.26.81.26.92.0.02.0.0a12.0.0a22.0.0a32.0.0a42.0.12.0.22.0.32.0.42.0.52.0.62.0.72.1.02.2.02.2.12.2.22.2.32.3.02.4.02.5.02.6.02.6.12.6.22.6.32.7.0
2.8.0
python-urllib3
openEuler:24.03-LTS-SP4
before 1.26.18-11.oe2403sp4
1.26.18-11.oe2403sp4
python-urllib3
openEuler:22.03-LTS-SP4
From an advisory covering 2 CVEs
before 1.26.12-16.oe2203sp4
1.26.12-16.oe2203sp4
python-urllib3
openEuler:24.03-LTS-SP1
before 1.26.18-11.oe2403sp1
1.26.18-11.oe2403sp1
python-urllib3
openEuler:24.03-LTS-SP3
before 1.26.18-11.oe2403sp3
1.26.18-11.oe2403sp3
python-urllib3
Red Hat:hummingbird:1
From an advisory covering 3 CVEs
before 0:2.8.0-1.hum1
0:2.8.0-1.hum1
python3-urllib3+brotli
Red Hat:hummingbird:1
From an advisory covering 3 CVEs
before 0:2.8.0-1.hum1
0:2.8.0-1.hum1
python3-urllib3+h2
Red Hat:hummingbird:1
From an advisory covering 3 CVEs
before 0:2.8.0-1.hum1
0:2.8.0-1.hum1
python3-urllib3+socks
Red Hat:hummingbird:1
From an advisory covering 3 CVEs
before 0:2.8.0-1.hum1
0:2.8.0-1.hum1
python3-urllib3+zstd
Red Hat:hummingbird:1
From an advisory covering 3 CVEs
before 0:2.8.0-1.hum1
0:2.8.0-1.hum1
python3-urllib3
Red Hat:hummingbird:1
From an advisory covering 3 CVEs
before 0:2.8.0-1.hum1
0:2.8.0-1.hum1
python3.14-urllib3
Red Hat:enterprise_linux:9::appstream
From an advisory covering 2 CVEs
before 0:2.6.3-2.el9_8.6
0:2.6.3-2.el9_8.6
python3.14-urllib3
Red Hat:enterprise_linux:10.2
From an advisory covering 2 CVEs
before 0:2.6.3-2.el10_2.6
0:2.6.3-2.el10_2.6
python3.14-urllib3
Rocky Linux:9
From an advisory covering 2 CVEs
before 0:2.6.3-2.el9_8.6
0:2.6.3-2.el9_8.6
python3.14-urllib3
Rocky Linux:10
From an advisory covering 2 CVEs
before 0:2.6.3-2.el10_2.6
0:2.6.3-2.el10_2.6
python3.12-urllib3
Rocky Linux:9
From an advisory covering 2 CVEs
before 0:1.26.19-3.el9_8.2
0:1.26.19-3.el9_8.2
python-urllib3
Rocky Linux:10
From an advisory covering 2 CVEs
before 0:1.26.19-4.el10_2.2
0:1.26.19-4.el10_2.2
python-urllib3
Rocky Linux:9
From an advisory covering 2 CVEs
before 0:1.26.5-8.el9_8.2
0:1.26.5-8.el9_8.2
python3.12-urllib3
Rocky Linux:8
From an advisory covering 2 CVEs
before 0:1.26.19-5.el8_10
0:1.26.19-5.el8_10
urllib3
Root:PyPI
before 1.26.18+aikido.5
1.26.18+aikido.52.7.0+aikido.12.2.3+aikido.61.26.5+aikido.111.26.12+aikido.62.6.3+aikido.32.6.2+aikido.41.26.14+aikido.101.26.6+aikido.71.26.8+aikido.71.26.7+aikido.71.26.15+aikido.71.26.13+aikido.81.26.19+aikido.71.26.20+aikido.51.26.16+aikido.92.5.0+aikido.72.5.0+aikido.81.26.9+aikido.102.4.0+aikido.8
python-urllib3
SUSE:Linux Micro 6.2
From an advisory covering 3 CVEs
before 2.5.0-160000.8.1
2.5.0-160000.8.1
python-urllib3
SUSE:Linux Enterprise Server 16.0
From an advisory covering 3 CVEs
before 2.5.0-160000.8.1
2.5.0-160000.8.1
python-urllib3
SUSE:Linux Enterprise Server for SAP applications 16.0
From an advisory covering 3 CVEs
before 2.5.0-160000.8.1
2.5.0-160000.8.1
python-urllib3
SUSE:Linux Enterprise Module for Public Cloud 15 SP4
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Module for Python 3 15 SP7
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Server 15 SP4-LTSS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Server 15 SP5-LTSS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Server 15 SP6-LTSS
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Server for SAP Applications 15 SP4
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Server for SAP Applications 15 SP5
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3
SUSE:Linux Enterprise Server for SAP Applications 15 SP6
From an advisory covering 3 CVEs
before 2.0.7-150400.7.36.1
2.0.7-150400.7.36.1
python-urllib3_1
SUSE:Linux Enterprise Module for Python 3 15 SP7
From an advisory covering 3 CVEs
before 1.26.18-150600.3.14.1
1.26.18-150600.3.14.1
python-urllib3_1
SUSE:Linux Enterprise Server 15 SP6-LTSS
From an advisory covering 3 CVEs
before 1.26.18-150600.3.14.1
1.26.18-150600.3.14.1
python-urllib3_1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6
From an advisory covering 3 CVEs
before 1.26.18-150600.3.14.1
1.26.18-150600.3.14.1
python-pip
Ubuntu:Pro:14.04:LTS
All versions, plus listed versions
1.4.1-21.5.4-11.5.4-1ubuntu11.5.4-1ubuntu31.5.4-1ubuntu4
Show 5 moreShow less
1.5.4-1ubuntu4+esm11.5.4-1ubuntu4+esm21.5.4-1ubuntu4+esm31.5.4-1ubuntu4+esm41.5.4-1ubuntu4+esm5
None known
python-pip
Ubuntu:Pro:16.04:LTS
All versions, plus listed versions
1.5.6-7ubuntu11.5.6-7ubuntu28.0.2-78.0.3-18.0.3-2
Show 17 moreShow less
8.1.0-18.1.0-28.1.1-18.1.1-28.1.1-2ubuntu0.18.1.1-2ubuntu0.28.1.1-2ubuntu0.48.1.1-2ubuntu0.68.1.1-2ubuntu0.6+esm28.1.1-2ubuntu0.6+esm38.1.1-2ubuntu0.6+esm48.1.1-2ubuntu0.6+esm58.1.1-2ubuntu0.6+esm68.1.1-2ubuntu0.6+esm88.1.1-2ubuntu0.6+esm108.1.1-2ubuntu0.6+esm118.1.1-2ubuntu0.6+esm12
None known
python-pip
Ubuntu:Pro:18.04:LTS
All versions, plus listed versions
9.0.1-29.0.1-2.3~ubuntu19.0.1-2.3~ubuntu1.18.04.19.0.1-2.3~ubuntu1.18.04.29.0.1-2.3~ubuntu1.18.04.3
Show 15 moreShow less
9.0.1-2.3~ubuntu1.18.04.49.0.1-2.3~ubuntu1.18.04.59.0.1-2.3~ubuntu1.18.04.5+esm29.0.1-2.3~ubuntu1.18.04.5+esm39.0.1-2.3~ubuntu1.18.04.69.0.1-2.3~ubuntu1.18.04.6+esm19.0.1-2.3~ubuntu1.18.04.79.0.1-2.3~ubuntu1.18.04.7+esm19.0.1-2.3~ubuntu1.18.04.89.0.1-2.3~ubuntu1.18.04.8+esm19.0.1-2.3~ubuntu1.18.04.8+esm29.0.1-2.3~ubuntu1.18.04.8+esm49.0.1-2.3~ubuntu1.18.04.8+esm69.0.1-2.3~ubuntu1.18.04.8+esm79.0.1-2.3~ubuntu1.18.04.8+esm8
None known
python-pip
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
18.1-518.1-5build118.1-5ubuntu120.0.2-220.0.2-4
Show 16 moreShow less
20.0.2-520.0.2-5ubuntu120.0.2-5ubuntu1.120.0.2-5ubuntu1.320.0.2-5ubuntu1.420.0.2-5ubuntu1.520.0.2-5ubuntu1.620.0.2-5ubuntu1.720.0.2-5ubuntu1.820.0.2-5ubuntu1.920.0.2-5ubuntu1.1020.0.2-5ubuntu1.10+esm220.0.2-5ubuntu1.1120.0.2-5ubuntu1.11+esm220.0.2-5ubuntu1.11+esm320.0.2-5ubuntu1.11+esm4
None known
python-urllib3
Ubuntu:22.04:LTS
All versions, plus listed versions
1.26.5-1~exp11.26.5-1~exp1ubuntu0.11.26.5-1~exp1ubuntu0.21.26.5-1~exp1ubuntu0.31.26.5-1~exp1ubuntu0.4
Show 4 moreShow less
1.26.5-1~exp1ubuntu0.51.26.5-1~exp1ubuntu0.61.26.5-1~exp1ubuntu0.71.26.5-1~exp1ubuntu0.8
None known
python-pip
Ubuntu:Pro:22.04:LTS
All versions, plus listed versions
20.3.4-421.3.1+dfsg-322.0.2+dfsg-122.0.2+dfsg-1ubuntu0.122.0.2+dfsg-1ubuntu0.2
Show 8 moreShow less
22.0.2+dfsg-1ubuntu0.322.0.2+dfsg-1ubuntu0.422.0.2+dfsg-1ubuntu0.522.0.2+dfsg-1ubuntu0.622.0.2+dfsg-1ubuntu0.722.0.2+dfsg-1ubuntu0.7+esm122.0.2+dfsg-1ubuntu0.7+esm222.0.2+dfsg-1ubuntu0.7+esm3
None known
python-urllib3
Ubuntu:24.04:LTS
All versions, plus listed versions
1.26.16-11.26.18-12.0.7-12.0.7-1ubuntu0.12.0.7-1ubuntu0.2
Show 6 moreShow less
2.0.7-1ubuntu0.32.0.7-1ubuntu0.42.0.7-1ubuntu0.52.0.7-1ubuntu0.62.0.7-1ubuntu0.72.0.7-1ubuntu0.8
None known
python-pip
Ubuntu:Pro:24.04:LTS
All versions, plus listed versions
23.2+dfsg-123.3+dfsg-124.0+dfsg-124.0+dfsg-1ubuntu124.0+dfsg-1ubuntu1.1
Show 5 moreShow less
24.0+dfsg-1ubuntu1.224.0+dfsg-1ubuntu1.324.0+dfsg-1ubuntu1.3+esm124.0+dfsg-1ubuntu1.3+esm224.0+dfsg-1ubuntu1.3+esm3
None known
python-pip
Ubuntu:26.10
All versions, plus listed versions
25.1.1+dfsg-1ubuntu226.1.2+dfsg-1
None known
python-urllib3
Ubuntu:26.04:LTS
before 2.6.3-1ubuntu1.2, plus listed versions
2.3.0-32.5.0-12.5.0-1ubuntu12.5.0-1ubuntu22.6.3-1ubuntu12.6.3-1ubuntu1.1
2.6.3-1ubuntu1.2
python-pip
Ubuntu:Pro:26.04:LTS
All versions, plus listed versions
25.1.1+dfsg-1ubuntu225.1.1+dfsg-1ubuntu2+esm125.1.1+dfsg-1ubuntu2+esm225.1.1+dfsg-1ubuntu2+esm3
None known
python-urllib3
Ubuntu:Pro:18.04:LTS
From an advisory covering 3 CVEs
before 1.22-1ubuntu0.18.04.2+esm5, plus listed versions
1.21.1-11.22-11.22-1ubuntu0.18.04.11.22-1ubuntu0.18.04.21.22-1ubuntu0.18.04.2+esm11.22-1ubuntu0.18.04.2+esm21.22-1ubuntu0.18.04.2+esm31.22-1ubuntu0.18.04.2+esm4
1.22-1ubuntu0.18.04.2+esm5
python-urllib3
Ubuntu:Pro:20.04:LTS
From an advisory covering 3 CVEs
before 1.25.8-2ubuntu0.4+esm6, plus listed versions
1.24.1-1ubuntu11.24.1-1ubuntu21.25.8-11.25.8-21.25.8-2ubuntu0.1
Show 8 moreShow less
1.25.8-2ubuntu0.21.25.8-2ubuntu0.31.25.8-2ubuntu0.41.25.8-2ubuntu0.4+esm11.25.8-2ubuntu0.4+esm21.25.8-2ubuntu0.4+esm31.25.8-2ubuntu0.4+esm41.25.8-2ubuntu0.4+esm5
1.25.8-2ubuntu0.4+esm6
python-urllib3
Ubuntu:22.04:LTS
From an advisory covering 3 CVEs
before 1.26.5-1~exp1ubuntu0.8, plus listed versions
1.26.5-1~exp11.26.5-1~exp1ubuntu0.11.26.5-1~exp1ubuntu0.21.26.5-1~exp1ubuntu0.31.26.5-1~exp1ubuntu0.41.26.5-1~exp1ubuntu0.51.26.5-1~exp1ubuntu0.61.26.5-1~exp1ubuntu0.7
1.26.5-1~exp1ubuntu0.8
python-urllib3
Ubuntu:24.04:LTS
From an advisory covering 3 CVEs
before 2.0.7-1ubuntu0.8, plus listed versions
1.26.16-11.26.18-12.0.7-12.0.7-1ubuntu0.12.0.7-1ubuntu0.2
Show 5 moreShow less
2.0.7-1ubuntu0.32.0.7-1ubuntu0.42.0.7-1ubuntu0.52.0.7-1ubuntu0.62.0.7-1ubuntu0.7
2.0.7-1ubuntu0.8
python-urllib3
Ubuntu:26.04:LTS
From an advisory covering 3 CVEs
before 2.6.3-1ubuntu1.2, plus listed versions
2.3.0-32.5.0-12.5.0-1ubuntu12.5.0-1ubuntu22.6.3-1ubuntu12.6.3-1ubuntu1.1
2.6.3-1ubuntu1.2
python-urllib3
openSUSE:Tumbleweed
From an advisory covering 12 CVEs
before 2.8.0-1.1
2.8.0-1.1
python-urllib3_1
openSUSE:Tumbleweed
From an advisory covering 3 CVEs
before 1.26.20-8.1
1.26.20-8.1
python-urllib3
openSUSE:Leap 16.0
From an advisory covering 3 CVEs
before 2.5.0-160000.8.1
2.5.0-160000.8.1

History

History
RecordedChangedSources
affected, facts
affectedOSV
affected, aliases, referencesOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-97687 is a high vulnerability (CVSS 7.6) in Python Urllib3, published September 29, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.21%, the 10th percentile. Fixed in urllib3 2.8.0.

References

Show 74 moreShow less
This page doesn't list everything

Left out here: the rest of 3 source descriptions. The JSON record has them.

MoveEnter Open