HTTP重定向可绕过压缩炸弹防护(urllib3流式API漏洞深度解析)

本文详细分析了CVE-2026-21441漏洞,该漏洞影响urllib3库的流式API。当处理HTTP重定向响应时,库会在调用读取方法之前完全解压缩响应体,从而绕过针对压缩炸弹的安全防护机制,可能导致客户端资源被恶意耗尽。

漏洞详情

: pip - urllib3 (pip)

受影响版本: >= 1.22, < 2.6.3

已修复版本: 2.6.3

描述

影响

urllib3的流式API旨在通过分块读取内容(而非一次性将整个响应体加载到内存中)来高效处理大型HTTP响应。urllib3可以根据HTTP Content-Encoding头(例如gzip、deflate、br或zstd)执行解码或解压缩。当使用流式API时,库只解压必要的字节,从而实现部分内容消费。

然而,对于HTTP重定向响应,库会读取整个响应体以排空连接,并且不必要地进行解压缩。这种解压缩甚至在调用任何读取方法之前就发生了,并且配置的读取限制也无法限制解压缩的数据量。因此,系统缺乏针对压缩炸弹的安全防护。恶意服务器可利用此漏洞在客户端触发过度的资源消耗(高CPU使用率和为解压缩数据分配大量内存;CWE-409)。

受影响的使用场景

使用urllib3版本2.6.2及更早版本、通过设置preload_content=False从未受信任的来源流式传输内容,且未禁用重定向的应用程序和库。

修复方案

  • 升级到至少urllib3 v2.6.3,在该版本中,当preload_content=False时,库不会解码重定向响应的内容。
  • 如果无法立即升级,可通过为向不受信任来源的请求设置redirect=False来禁用重定向。

参考信息

严重程度

高危 - CVSS总体评分:8.9 / 10

CVSS v4 基础指标: 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

EPSS 分数:0.014% (第2百分位)

弱点

CWE-409 - 对高压缩数据的处理不当(数据放大) 产品未处理或错误处理具有极高压缩比、会产生大量输出的压缩输入。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计