---
id: CVE-2026-97689
title: urllib3 is an HTTP client library for Python
summary: >-
  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 newl…
severity: high
cvss: 8.9
cvssVector: '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'
cwe:
  - CWE-770
vendor: urllib3
product: urllib3
affected:
  - 'urllib3 >= 1.10.3, < 2.8.0'
published: '2026-09-29'
updated: '2026-09-29'
sourceUpdated: '2026-09-29T17:17:16.493'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-97689'
references:
  - url: >-
      https://github.com/urllib3/urllib3/commit/cd770b059b543be29298ea5c52afb0b1b090f5ed
    label: security-advisories@github.com
  - url: 'https://github.com/urllib3/urllib3/releases/tag/2.8.0'
    label: security-advisories@github.com
  - url: 'https://github.com/urllib3/urllib3/security/advisories/GHSA-vxq7-64xx-v4gw'
    label: security-advisories@github.com
tags:
  - nvd
  - cve.org
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-09-29T16:21:49.840583Z'
cvssSource: cna
ingestedAt: '2026-09-29T16:39:33.273Z'
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
