CVE-2026-97688
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.
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
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 Medium
CVSS: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 Medium
CVSS: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:
- Compressed responses from an untrusted source are streamed using
HTTPResponse.stream(amt=N)orHTTPResponse.read_chunked(amt=N)with a positive, finite chunk size. - Content decoding is enabled.
- The response uses both
Transfer-Encoding: chunkedandContent-Encoding: deflate. - 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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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 Medium
CVSS: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:
- Compressed responses from an untrusted source are streamed using
HTTPResponse.stream(amt=N)orHTTPResponse.read_chunked(amt=N)with a positive, finite chunk size. - Content decoding is enabled.
- The response uses both
Transfer-Encoding: chunkedandContent-Encoding: deflate. - 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 Medium
CVSS: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:
- Compressed responses from an untrusted source are streamed using
HTTPResponse.stream(amt=N)orHTTPResponse.read_chunked(amt=N)with a positive, finite chunk size. - Content decoding is enabled.
- The response uses both
Transfer-Encoding: chunkedandContent-Encoding: deflate. - 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 Medium
CVSS: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 High
CVSS: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 Medium
CVSS: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 Medium
CVSS: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
| Package | Affected | Fixed |
|---|---|---|
urllib3PyPI |
2.6.2 up to 2.8.0 | 2.8.0 |
py3-urllib3Alpaquita:stream |
1.26.12-r1 up to 2.8.0-r0 | 2.8.0-r0 |
python-urllib3Debian: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 less2.6.3-22.7.0-12.7.0-22.7.0-3 |
2.8.0-1 |
urllib3PyPI |
2.6.2 up to 2.8.0, plus listed versions 2.6.32.7.0 |
2.8.0 |
python-urllib3Red Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:2.8.0-1.hum1 | 0:2.8.0-1.hum1 |
python3-urllib3+brotliRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:2.8.0-1.hum1 | 0:2.8.0-1.hum1 |
python3-urllib3+h2Red Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:2.8.0-1.hum1 | 0:2.8.0-1.hum1 |
python3-urllib3+socksRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:2.8.0-1.hum1 | 0:2.8.0-1.hum1 |
python3-urllib3+zstdRed Hat:hummingbird:1 From an advisory covering 3 CVEs |
before 0:2.8.0-1.hum1 | 0:2.8.0-1.hum1 |
python3-urllib3Red 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
| Package | Affected | Fixed |
|---|---|---|
python-urllib3SUSE:Linux Micro 6.2 From an advisory covering 3 CVEs |
before 2.5.0-160000.8.1 | 2.5.0-160000.8.1 |
python-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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-urllib3SUSE: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_1SUSE: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_1SUSE: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_1SUSE: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-pipUbuntu: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 less1.5.4-1ubuntu4+esm11.5.4-1ubuntu4+esm21.5.4-1ubuntu4+esm31.5.4-1ubuntu4+esm41.5.4-1ubuntu4+esm5 |
None known |
python-pipUbuntu: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 less8.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-pipUbuntu: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 less9.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-pipUbuntu: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 less20.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-pipUbuntu: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 less22.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-pipUbuntu: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 less24.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-pipUbuntu:26.10 |
All versions, plus listed versions 25.1.1+dfsg-1ubuntu226.1.2+dfsg-1 |
None known |
python-urllib3Ubuntu: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-pipUbuntu: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-urllib3Ubuntu: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-urllib3Ubuntu: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 less1.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-urllib3Ubuntu: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-urllib3Ubuntu: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 less2.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-urllib3Ubuntu: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-urllib3openSUSE:Tumbleweed From an advisory covering 12 CVEs |
before 2.8.0-1.1 | 2.8.0-1.1 |
python-urllib3_1openSUSE:Tumbleweed From an advisory covering 3 CVEs |
before 1.26.20-8.1 | 1.26.20-8.1 |
python-urllib3openSUSE:Leap 16.0 From an advisory covering 3 CVEs |
before 2.5.0-160000.8.1 | 2.5.0-160000.8.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE 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
github.com/urllib3/urllib3/security/advisories/GHSA-gh4c-6fx4-qh6g
github.com/urllib3/urllib3/commit/ea2ad7b21a80da3632f80016526a18864586077f
github.com/urllib3/urllib3/releases/tag/2.8.0
nvd.nist.gov/vuln/detail/CVE-2026-97688
github.com/advisories/GHSA-gh4c-6fx4-qh6g
docs.bell-sw.com/security/cves/CVE-2026-97688
Show 50 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/97xxx/CVE-2026-97688.json
security-tracker.debian.org/tracker/CVE-2026-97688
github.com/urllib3/urllib3
pypi.org/project/urllib3
access.redhat.com/errata/RHSA-2026:69612
images.redhat.com
access.redhat.com/security/cve/CVE-2026-97688
access.redhat.com/security/updates/classification
access.redhat.com/security/cve/CVE-2026-97687
access.redhat.com/security/cve/CVE-2026-97689
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_69612.json
bugzilla.redhat.com/show_bug.cgi?id=2543255
cve.org/CVERecord?id=CVE-2026-97687
nvd.nist.gov/vuln/detail/CVE-2026-97687
github.com/urllib3/urllib3/commit/07408cec79d1856d81bb42c74a904a24fdb9e465
github.com/urllib3/urllib3/commit/b6447295fff7b38fdffc67e0df9712d60cef3cc3
github.com/urllib3/urllib3/pull/5093
github.com/urllib3/urllib3/security/advisories/GHSA-8988-9cw3-xx77
bugzilla.redhat.com/show_bug.cgi?id=2543253
cve.org/CVERecord?id=CVE-2026-97688
bugzilla.redhat.com/show_bug.cgi?id=2543245
cve.org/CVERecord?id=CVE-2026-97689
nvd.nist.gov/vuln/detail/CVE-2026-97689
github.com/urllib3/urllib3/commit/cd770b059b543be29298ea5c52afb0b1b090f5ed
github.com/urllib3/urllib3/security/advisories/GHSA-vxq7-64xx-v4gw
suse.com/support/update/announcement/2026/suse-su-202624125-1
bugzilla.suse.com/1283908
bugzilla.suse.com/1283909
bugzilla.suse.com/1283910
suse.com/security/cve/CVE-2026-97687
suse.com/security/cve/CVE-2026-97688
suse.com/security/cve/CVE-2026-97689
suse.com/support/update/announcement/2026/suse-su-202624217-1
suse.com/support/update/announcement/2026/suse-su-20264649-1
suse.com/support/update/announcement/2026/suse-su-20264650-1
suse.com/support/update/announcement/2026/suse-su-20264704-1
suse.com/support/update/announcement/2026/suse-su-20264948-1
ubuntu.com/security/CVE-2026-97688
ubuntu.com/security/notices/USN-8926-1
ubuntu.com/security/CVE-2026-97687
ubuntu.com/security/CVE-2026-97689
suse.com/security/cve/CVE-2016-9015
suse.com/security/cve/CVE-2018-20060
suse.com/security/cve/CVE-2019-11324
suse.com/security/cve/CVE-2019-9740
suse.com/security/cve/CVE-2020-26137
suse.com/security/cve/CVE-2021-33503
suse.com/security/cve/CVE-2023-43804
suse.com/security/cve/CVE-2023-45803
suse.com/security/cve/CVE-2024-37891