URLLIB3 · CVE-2026-97689 · Package
FIX → 2.8.0
urllib3's stream() and read_chunked() methods buffer the chunk-size line of a chunked HTTP response until a newline arrives, with no size limit. A malicious server can send a long run of bytes without a newline, forcing the client to allocate excess memory before the response is rejected.
first public Sep 15, 2026 · 3 sources
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
Applications and libraries that use urllib3 before 2.8.0 to stream chunked HTTP responses from servers they do not trust are exposed, and this includes code using the requests library with streaming enabled. Applications that only call urllib3 for non-streaming reads or only talk to trusted servers have less exposure.
Not affected if non-streaming-reads, trusted-servers-only
Who cares python, requests, self-hosted, urllib3
pip show urllib3 or pip freeze | grep -i urllib3.stream( or .read_chunked( calls on responses from untrusted hosts, including requests streaming with stream=Trueurllib3's streaming API is designed for efficiently handling large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. When decoding a chunked-transfer-encoded response, this API reads each chunk's size field by buffering until it sees \n or EOF.
A malicious HTTP server can return Transfer-Encoding: chunked and then send a very long run of bytes without any newline, causing the streaming client to buffer that entire run before urllib3 can reject the chunk size as invalid and allocate more memory than intended.
To fix the issue, we'll reject chunk-size fields larger than 65536 bytes, as already done in the non-streaming case, which is currently handled by the Python standard library. Note that this only applies to reading the chunk-size field, not the chunk data, which is already handled correctly. As thus, we don't expect any impact for non-malicious servers.
Applications and libraries using urllib3 versions earlier than 2.8.0 may be affected when streaming a chunked response from untrusted sources. Specifically, this affects the read_chunked() and stream() methods of he HTTPResponse object.
This also affects requests streaming API, which uses urllib3 under the hood.
Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
Upgrade to 2.8.0
2.8.0 or later (fixes affected range >= 1.10.3, < 2.8.0)read() instead of streamingUpgrade to urllib3 version 2.8.0 or later, where chunk-size fields larger than 66536 will be rejected. If upgrading is not immediately possible, consider reading the response at once using the read() method.
This page as .md · .json · 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/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
GitHub Advisory Database, CC-BY 4.0 · NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.