CVE-2026-97689
Received Received - Intake

urllib3 Unbounded Memory Allocation in Chunked Transfer Encoding

Vulnerability report for CVE-2026-97689, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-29

Last updated on: 2026-09-29

Assigner: GitHub, Inc.

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-29
Last Modified
2026-09-29
Generated
2026-09-29
AI Q&A
2026-09-29
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 3 associated CPEs
Vendor Product Version / Range
urllib3 urllib3 From 1.10.3 (inc) to 2.8.0 (inc)
urllib3 urllib3 2.8.0
urllib3 urllib3 From 1.10.3 (inc) to 2.8.0 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-770 The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

urllib3 versions 1.10.3 to 2.8.0 have a flaw in HTTPResponse.read_chunked and HTTPResponse.stream methods. These methods can allocate excessive memory when parsing chunked transfer encoding from a malicious server. The server sends a very long unterminated chunk-size line without a newline, causing unbounded memory allocation and potential exhaustion of the client process.

Detection Guidance

Detecting this vulnerability requires checking the version of urllib3 in use. Run pip show urllib3 or python -c "import urllib3; print(urllib3.__version__)" to verify if the installed version is below 2.8.0. Monitor network traffic for HTTP responses with Transfer-Encoding: chunked and unusually long chunk-size fields.

Impact Analysis

This vulnerability can cause denial of service by consuming all available memory on the client system. If exploited, it may crash applications using vulnerable urllib3 versions, leading to service disruption or system instability.

Compliance Impact

This vulnerability primarily impacts availability by enabling denial-of-service attacks through memory exhaustion. It does not directly affect confidentiality or integrity of data. Compliance standards like GDPR and HIPAA focus on data protection and availability; while this issue could disrupt services, it does not inherently violate these regulations unless it leads to unauthorized data access or prolonged downtime affecting data processing.

Mitigation Strategies

Upgrade urllib3 to version 2.8.0 or later immediately. Use pip install --upgrade urllib3 or your package manager to update. If upgrading is not possible, restrict network access to untrusted HTTP servers or implement application-level chunk-size length validation.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-97689. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart