CVE-2026-21441urllib3是Python中广泛使用的HTTP客户端库。CVE-2026-21441是该库中一个高危的安全漏洞,存在于流式API处理HTTP重定向响应时的解压机制中。漏洞源于urllib3在处理重定向响应时,会在用户调用任何读取方法之前就自动读取并解压整个响应体内容,即使配置了preload_content=False参数。这种设计导致解压炸弹防护机制失效,恶意服务器可以通过构造携带高度压缩payload(如zip炸弹或bzip炸弹)的HTTP 302重定向响应,诱使客户端在接收任何数据前就执行大量解压操作。最终造成CPU、内存等系统资源的过度消耗,可能导致应用程序崩溃或服务中断。该漏洞影响所有在生产环境中使用urllib3流式API且需要处理重定向响应的应用。
urllib3的流式API设计初衷是高效处理大型HTTP响应,通过分块读取避免将整个响应体加载到内存中。库支持多种Content-Encoding格式的自动解码(gzip、deflate、br、zstd等)。在正常流式读取场景下,库会按需解压数据并应用配置的读取限制。然而,在HTTP 302/301等重定向响应处理流程中,urllib3为了确保连接正确关闭,会预先读取并解压整个响应体。这个预解压操作发生在任何read()方法调用之前,且绕过了用户配置的read_limit和chunk_size限制。攻击者可以架设恶意HTTP服务器,当受害客户端发起请求时,返回一个302重定向到精心构造的响应。该响应包含极小体积但解压后巨大的恶意数据(典型的zip炸弹在解压后可达数十GB)。由于预解压机制,客户端在收到重定向响应后会立即执行解压操作,在应用程序代码有机会检查或拒绝数据之前就消耗大量系统资源。CVSS向量AV:N/AC:L/PR:N/UI:N/S:U表明该漏洞可通过网络直接利用,无需认证或用户交互。