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.
Published: 2026-09-29
Score: 8.9 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Apply Patch
AI Analysis

Impact

urllib3's HTTPResponse.read_chunked and HTTPResponse.stream methods allow a malicious server to send an excessively long chunk-size line without a terminating newline, causing the library to buffer the line indefinitely and allocate unbounded memory. This flaw can lead to exhaustion of the client process's memory and result in a denial of service. The weakness is a case of unchecked memory allocation (CWE-770).

Affected Systems

The vulnerability affects the urllib3 HTTP client library for Python. All installed versions from 1.10.3 up through the releases prior to 2.8.0 are affected. Version 2.8.0 and later include the fix.

Risk and Exploitability

The CVSS score of 8.9 indicates a high severity risk. Although an EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, attackers can exploit it by controlling a server that serves HTTP responses to the vulnerable client. By sending a chunked transfer encoding containing a very long, unterminated chunk-size line, the attacker can trigger an unbounded memory allocation inside the client, potentially causing the process to crash or become unresponsive. The attack vector is network‑based and requires the client to accept responses from a malicious server, which is feasible in many real‑world scenarios where untrusted services are accessed via urllib3.

Generated by OpenCVE AI on September 30, 2026 at 01:34 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade urllib3 to version 2.8.0 or later, where the chunk‑size parsing limits the input length.
  • For applications that cannot immediately upgrade, configure the environment to avoid sending untrusted HTTP responses or disable chunked transfer encoding where possible, and enforce strict TLS verification to limit exposure to malicious servers.
  • Implement process resource limits or watchdog mechanisms to detect and recover from excessive memory consumption, ensuring the application can restart gracefully if memory exhaustion occurs.

Generated by OpenCVE AI on September 30, 2026 at 01:34 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-vxq7-64xx-v4gw urllib3: HTTPResponse.stream()/read_chunked() buffers an unbounded chunk-size line into memory
History

Tue, 13 Oct 2026 20:30:00 +0000

Type Values Removed Values Added
First Time appeared Python
Python urllib3
CPEs cpe:2.3:a:python:urllib3:*:*:*:*:*:*:*:*
Vendors & Products Python
Python urllib3

Wed, 30 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Important


Tue, 29 Sep 2026 17:30:00 +0000

Type Values Removed Values Added
First Time appeared Urllib3
Urllib3 urllib3
Vendors & Products Urllib3
Urllib3 urllib3
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 29 Sep 2026 15:45:00 +0000

Type Values Removed Values Added
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.
Title urllib3: HTTPResponse.stream()/read_chunked() buffers an unbounded chunk-size line into memory
Weaknesses CWE-770
References
Metrics cvssV4_0

{'score': 8.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-29T16:23:23.167Z

Reserved: 2026-09-24T21:43:37.208Z

Link: CVE-2026-97689

cve-icon Vulnrichment

Updated: 2026-09-29T16:23:05.435Z

cve-icon NVD

Status : Analyzed

Published: 2026-09-29T16:17:18.837

Modified: 2026-10-13T20:20:06.950

Link: CVE-2026-97689

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-29T15:36:05Z

Links: CVE-2026-97689 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T01:45:19Z

Weaknesses
  • CWE-770

    Allocation of Resources Without Limits or Throttling