Every CVE Search/ Get API key

CVE-2026-97688

urllib3: Chunked Deflate streaming can enter an infinite loop

6.9 MediumFix available

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. 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
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
Low

Exploit likelihood

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

What each source reports

CVE List Score used 6.9

urllib3: Chunked Deflate streaming can enter an infinite loop

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.

Record
CVE-2026-97688
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Weakness
CWE-835
Updated
2026-11-02
EUVDEUVD-2026-89007 6.9

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.

Record
EUVD-2026-89007
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-gh4c-6fx4-qh6g 6.9

urllib3: Chunked Deflate streaming can enter an infinite loop

Impact

urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading content in chunks instead of loading the entire response body into memory at once.

urllib3 can decompress response bodies according to the HTTP Content-Encoding header. When streaming a compressed, chunked response, urllib3 first consumes data already buffered by the decoder before reading the next HTTP chunk.

However, urllib3 versions from 2.6.2 through 2.7.0 could enter an infinite loop when a chunked response contained bytes after the end of the Deflate stream. If the decompressed body exceeded the requested streaming chunk size, Python's zlib implementation could retain the trailing bytes as unconsumed input after reaching the end of the compressed stream. urllib3 would repeatedly attempt to decode those same bytes without making progress or reading more data from the network.

A malicious server could exploit this behavior to cause excessive CPU usage and prevent the affected request from completing on the client. Network read timeouts would not interrupt the loop because no further socket operation was required.

Affected usages

Applications and libraries using urllib3 versions 2.6.2 through 2.7.0 may be affected when all of the following conditions are met:

  1. Compressed responses from an untrusted source are streamed using HTTPResponse.stream(amt=N) or HTTPResponse.read_chunked(amt=N) with a positive, finite chunk size.
  2. Content decoding is enabled.
  3. The response uses both Transfer-Encoding: chunked and Content-Encoding: deflate.
  4. The decoded body exceeds the requested chunk size and the encoded body contains bytes after the end of the Deflate stream.

HTTPResponse.stream() uses a finite chunk size by default and is therefore affected when the other conditions are met.

Remediation

Upgrade to urllib3 2.8.0, in which the Deflate decoder stops accepting input after reaching the end of the compressed stream and no longer reports trailing bytes as data that can produce more decoded output.

If upgrading is not immediately possible, disable automatic content decoding for responses from untrusted sources by setting decode_content=False, or reject streamed responses using the Deflate content encoding. Applications that disable automatic decoding must handle the compressed response safely at another layer.

Record
GHSA-gh4c-6fx4-qh6g
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Weakness
CWE-835
Updated
2026-11-02
NVD 6.9

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.

Record
CVE-2026-97688
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/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
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Weakness
CWE-835
Updated
2026-11-02
OSVBELL-CVE-2026-97688 5.3
Record
BELL-CVE-2026-97688
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSV 6.9

urllib3: Chunked Deflate streaming can enter an infinite loop

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.

Record
CVE-2026-97688
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Weakness
CWE-835
Updated
2026-11-02
Show 15 moreShow less
OSVDEBIAN-CVE-2026-97688 5.3

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.

Record
DEBIAN-CVE-2026-97688
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSVGHSA-gh4c-6fx4-qh6g 6.9

urllib3: Chunked Deflate streaming can enter an infinite loop

Impact

urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading content in chunks instead of loading the entire response body into memory at once.

urllib3 can decompress response bodies according to the HTTP Content-Encoding header. When streaming a compressed, chunked response, urllib3 first consumes data already buffered by the decoder before reading the next HTTP chunk.

However, urllib3 versions from 2.6.2 through 2.7.0 could enter an infinite loop when a chunked response contained bytes after the end of the Deflate stream. If the decompressed body exceeded the requested streaming chunk size, Python's zlib implementation could retain the trailing bytes as unconsumed input after reaching the end of the compressed stream. urllib3 would repeatedly attempt to decode those same bytes without making progress or reading more data from the network.

A malicious server could exploit this behavior to cause excessive CPU usage and prevent the affected request from completing on the client. Network read timeouts would not interrupt the loop because no further socket operation was required.

Affected usages

Applications and libraries using urllib3 versions 2.6.2 through 2.7.0 may be affected when all of the following conditions are met:

  1. Compressed responses from an untrusted source are streamed using HTTPResponse.stream(amt=N) or HTTPResponse.read_chunked(amt=N) with a positive, finite chunk size.
  2. Content decoding is enabled.
  3. The response uses both Transfer-Encoding: chunked and Content-Encoding: deflate.
  4. The decoded body exceeds the requested chunk size and the encoded body contains bytes after the end of the Deflate stream.

HTTPResponse.stream() uses a finite chunk size by default and is therefore affected when the other conditions are met.

Remediation

Upgrade to urllib3 2.8.0, in which the Deflate decoder stops accepting input after reaching the end of the compressed stream and no longer reports trailing bytes as data that can produce more decoded output.

If upgrading is not immediately possible, disable automatic content decoding for responses from untrusted sources by setting decode_content=False, or reject streamed responses using the Deflate content encoding. Applications that disable automatic decoding must handle the compressed response safely at another layer.

Record
GHSA-gh4c-6fx4-qh6g
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Weakness
CWE-835
Updated
2026-11-02
OSVPYSEC-2026-4176 6.9

urllib3: Chunked Deflate streaming can enter an infinite loop

Impact

urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading content in chunks instead of loading the entire response body into memory at once.

urllib3 can decompress response bodies according to the HTTP Content-Encoding header. When streaming a compressed, chunked response, urllib3 first consumes data already buffered by the decoder before reading the next HTTP chunk.

However, urllib3 versions from 2.6.2 through 2.7.0 could enter an infinite loop when a chunked response contained bytes after the end of the Deflate stream. If the decompressed body exceeded the requested streaming chunk size, Python's zlib implementation could retain the trailing bytes as unconsumed input after reaching the end of the compressed stream. urllib3 would repeatedly attempt to decode those same bytes without making progress or reading more data from the network.

A malicious server could exploit this behavior to cause excessive CPU usage and prevent the affected request from completing on the client. Network read timeouts would not interrupt the loop because no further socket operation was required.

Affected usages

Applications and libraries using urllib3 versions 2.6.2 through 2.7.0 may be affected when all of the following conditions are met:

  1. Compressed responses from an untrusted source are streamed using HTTPResponse.stream(amt=N) or HTTPResponse.read_chunked(amt=N) with a positive, finite chunk size.
  2. Content decoding is enabled.
  3. The response uses both Transfer-Encoding: chunked and Content-Encoding: deflate.
  4. The decoded body exceeds the requested chunk size and the encoded body contains bytes after the end of the Deflate stream.

HTTPResponse.stream() uses a finite chunk size by default and is therefore affected when the other conditions are met.

Remediation

Upgrade to urllib3 2.8.0, in which the Deflate decoder stops accepting input after reaching the end of the compressed stream and no longer reports trailing bytes as data that can produce more decoded output.

If upgrading is not immediately possible, disable automatic content decoding for responses from untrusted sources by setting decode_content=False, or reject streamed responses using the Deflate content encoding. Applications that disable automatic decoding must handle the compressed response safely at another layer.

Record
PYSEC-2026-4176
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/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
OSVUBUNTU-CVE-2026-97688 6.9

urllib3 is an HTTP client library for Python. From 2.6.2 until 2.8.0, HTTPResponse.stream and HTTPResponse.read_chunked can enter an infinite loop because the Deflate decoder retains trailing bytes as unconsumed input after reaching end-of-stream and repeatedly decodes them without progress. The issue occurs when an untrusted server sends a chunked Deflate response whose decoded body exceeds a positive finite chunk size and whose encoded body has trailing bytes, specifically a response with Transfer-Encoding: chunked and Content-Encoding: deflate, content decoding enabled, and the positive finite amt=N streaming chunk size. The attack mechanism is that a malicious server returns a compressed chunked response with trailing bytes after the Deflate stream. The impact is excessive CPU usage and a request that does not complete, and network read timeouts do not interrupt the loop because no further socket read occurs. This issue is fixed in version 2.8.0.

Record
UBUNTU-CVE-2026-97688
CVSS 4.0
6.9 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
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
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:4649-1 No score

Security update for python-urllib3

This update for python-urllib3 fixes the following issues:

  • 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:4649-1
Updated
2026-11-02
OSVSUSE-SU-2026:4650-1 No score

Security update for python-urllib3

This update for python-urllib3 fixes the following issues:

  • 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:4650-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
2.6.2 up to 2.8.0
2.8.0
py3-urllib3
Alpaquita:stream
1.26.12-r1 up to 2.8.0-r0
2.8.0-r0
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
2.6.2 up to 2.8.0, plus listed versions
2.6.32.7.0
2.8.0
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
Show 52 moreShow less
Affected packages
PackageAffectedFixed
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 12
From an advisory covering 2 CVEs
before 1.25.10-3.54.1
1.25.10-3.54.1
python-urllib3
SUSE:Linux Enterprise Server 12 SP5-LTSS
From an advisory covering 2 CVEs
before 1.25.10-3.54.1
1.25.10-3.54.1
python-urllib3
SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5
From an advisory covering 2 CVEs
before 1.25.10-3.54.1
1.25.10-3.54.1
python-urllib3
SUSE:Linux Enterprise Micro 5.3
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Micro 5.4
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Micro 5.5
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Module for Basesystem 15 SP7
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Server 15 SP4-LTSS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Server 15 SP5-LTSS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Server 15 SP6-LTSS
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Server for SAP Applications 15 SP4
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Server for SAP Applications 15 SP5
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.1
python-urllib3
SUSE:Linux Enterprise Server for SAP Applications 15 SP6
From an advisory covering 2 CVEs
before 1.25.10-150300.4.33.1
1.25.10-150300.4.33.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-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-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
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

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

In short

CVE-2026-97688 is a medium vulnerability (CVSS 6.9) 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.29%, the 21st percentile. Fixed in urllib3 2.8.0.

References

Show 50 moreShow less
MoveEnter Open