CVE-2025-66471urllib3是Python语言中广泛使用的用户友好型HTTP客户端库。该漏洞影响urllib3 1.0至2.6.0版本,存在于其流式API组件中。urllib3的流式API设计用于高效处理大型HTTP响应,通过分块读取内容而非一次性将整个响应体加载到内存中。当流式传输压缩响应时,urllib3会根据HTTP Content-Encoding头(如gzip、deflate、br或zstd)执行解码或解压缩操作。库必须从网络读取压缩数据并进行解压缩,直到满足请求的块大小。任何超过请求量的解压数据都会保存在内部缓冲区中供下次读取操作使用。然而,解压缩逻辑可能导致urllib3在单次操作中完全解码少量高度压缩的数据,这会造成过度资源消耗,包括高CPU使用率和为解压缩数据分配大量内存。攻击者可通过构造包含高度压缩数据的HTTP响应来触发此漏洞,导致目标系统出现拒绝服务情况。
urllib3的流式API在处理压缩数据时存在设计缺陷。当客户端请求流式传输大文件且服务器返回压缩内容时,解压缩逻辑会在单次操作中尝试完全解码整个压缩块。具体来说,当接收到高度压缩的数据(如压缩比极高的gzip或zstd数据)时,解压缩过程会在一次调用中展开整个数据,而不考虑目标块大小限制。这导致以下问题:1) CPU资源被大量消耗用于解压缩计算;2) 内存被分配用于存储远超预期的解压后数据;3) 内部缓冲区管理机制被破坏。攻击者可利用此漏洞构造恶意HTTP服务器或中间人攻击场景,发送包含极高度压缩数据的响应。当受害者的Python应用使用urllib3流式API获取内容时,将触发拒绝服务。该漏洞的CVSS评分7.5主要源于其高可用性影响(AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H),攻击者无需认证即可通过网络发起攻击。