<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Urllib3 (&gt;= 2.6.0, &lt; 2.7.0) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/urllib3--2.6.0--2.7.0/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Mon, 11 May 2026 14:53:45 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/urllib3--2.6.0--2.7.0/feed.xml" rel="self" type="application/rss+xml"/><item><title>Urllib3 Decompression Bomb Vulnerability in Streaming API (CVE-2026-44432)</title><link>https://feed.craftedsignal.io/briefs/2026-05-urllib3-decompression-bomb/</link><pubDate>Mon, 11 May 2026 14:53:45 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-urllib3-decompression-bomb/</guid><description>Urllib3 versions before 2.7.0 are vulnerable to excessive resource consumption when using the streaming API to decompress responses, particularly when using the Brotli library or calling HTTPResponse.drain_conn() after partial decompression, leading to high CPU usage and memory allocation, potentially causing a denial-of-service condition (CVE-2026-44432).</description><content:encoded><![CDATA[<p>Urllib3&rsquo;s streaming API, designed for efficient handling of large HTTP responses by reading content in chunks, contains a vulnerability in versions prior to 2.7.0. When decompressing content based on the HTTP <code>Content-Encoding</code> header (<code>gzip</code>, <code>deflate</code>, <code>br</code>, or <code>zstd</code>), the library could decompress the entire response instead of the requested portion in specific cases: when using the Brotli library during the second <code>HTTPResponse.read(amt=N)</code> call, or when <code>HTTPResponse.drain_conn()</code> was called after the response was partially read and decompressed. This can lead to excessive resource consumption (high CPU usage and memory allocation) on the client side, creating a denial-of-service condition. The vulnerability affects applications streaming compressed responses from untrusted sources. This issue is tracked as CVE-2026-44432.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker hosts a malicious server with a compressed response (e.g., using Brotli compression) designed to trigger a decompression bomb.</li>
<li>A vulnerable application using urllib3 initiates a request to the attacker&rsquo;s server via HTTP.</li>
<li>The server responds with a small, highly compressed payload and a <code>Content-Encoding</code> header indicating the compression type (e.g., <code>br</code>).</li>
<li>The application uses urllib3&rsquo;s streaming API to read the response body in chunks with <code>HTTPResponse.read(amt=N)</code>.</li>
<li>If using Brotli, and the application calls <code>HTTPResponse.read(amt=N)</code> a second time, urllib3 attempts to decompress the <em>entire</em> response body, regardless of how much data was requested.</li>
<li>Alternatively, if the application calls <code>HTTPResponse.drain_conn()</code> after partially decompressing the response, urllib3 will attempt to decompress the rest of the payload.</li>
<li>The large amount of data resulting from the decompression bomb consumes excessive CPU and memory resources on the client.</li>
<li>The client application becomes unresponsive, potentially leading to a denial-of-service condition.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability can lead to a denial-of-service (DoS) condition on the client side. Applications using affected versions of urllib3 (&gt;= 2.6.0, &lt; 2.7.0) that process compressed data from untrusted sources are vulnerable. The primary damage is excessive CPU and memory consumption, which can render the application unusable. While the exact number of victims is unknown, any application relying on urllib3 for handling compressed HTTP responses is potentially at risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to urllib3 version 2.7.0 or later to remediate CVE-2026-44432 as noted in the <a href="https://github.com/advisories/GHSA-mf9v-mfxr-j63j">GHSA-mf9v-mfxr-j63j advisory</a>.</li>
<li>If upgrading is not immediately possible and the Brotli library is being used, consider switching from the <code>brotli</code> package to <code>brotlicffi</code> as a temporary workaround, as described in the <a href="https://github.com/advisories/GHSA-mf9v-mfxr-j63j">GHSA-mf9v-mfxr-j63j advisory</a>.</li>
<li>Review your code for explicit calls to <code>HTTPResponse.drain_conn()</code> and replace them with <code>HTTPResponse.close()</code> if connection reuse is not required, as recommended in the <a href="https://github.com/advisories/GHSA-mf9v-mfxr-j63j">GHSA-mf9v-mfxr-j63j advisory</a>.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>decompression-bomb</category><category>denial-of-service</category><category>vulnerability</category></item></channel></rss>