一、概述
12 月 8 日,Python 的 urllib3 库曝出两个高危漏洞,分别是 CVE-2025-66418 和 CVE-2025-66471,两个漏洞的 CVSS 评分均为 8.9 分,主要涉及到内容解压和流式处理机制,攻击者可通过精心构造请求来导致客户端崩溃或拒绝服务(DoS)。
CVE‑2025‑66418
- 机理和表现:当服务端返回启用了"链式压缩(chained HTTP encoding)"的内容(比如 gzip → zstd → ...),urllib3 会对这些压缩层(链)逐层解压 --- 但它没有限制压缩链的数量。攻击者可以构造极长压缩链,使客户端不断解压、消耗大量 CPU 和内存资源------类似"decompression bomb"。
- 危害:高 CPU、内存开销,可导致客户端崩溃或不可用。对依赖 urllib3 的数百万应用构成严重 DoS 风险。
CVE‑2025‑66471
- 机理和表现:漏洞出现在 urllib3 的流式 API(stream / read / read_chunked)处理压缩响应时:即使请求的是"流式读取小块数据",如果压缩数据经过解压后膨胀很多,urllib3 会一次性解压并将全部结果缓存到内存中。也就是说,用流式下载本应节省资源,但这时却导致一次性解压大量数据。
- 危害:导致资源被瞬间耗尽(高 CPU + 大量内存分配),破坏"流式处理"的初衷,同样可能引发客户端 DoS。
二、影响版本
版本 :所有 urllib3 版本 ≥ 1.24 且 ≤ 2.5.0 都存在问题。
使用场景:凡使用默认开启内容解码(content decoding)的 HTTP 请求,或通过流式 API(stream(), read(), read_chunked() 等)下载压缩内容的,都可能触发漏洞。对应用广泛。
攻击条件:客户端与恶意/不受信任服务器交互时,即可触发------ --- 不需要认证、权限,也不需要用户交互。
三、修复与缓解建议
- 立即升级:将 urllib3 升级到 2.6.0 或更高版本。
- 如果使用 Brotli 编码:同时升级 brotli 至 1.2.0,或 brotlicffi 至 1.2.0.0。
- 暂缓升级时的权宜处理(不推荐长期使用):在请求中禁用自动内容解码(例如设 preload_content=False),并自己检查 HTTP Content‑Encoding header,只允许安全/受信任的单一编码方式 ------ 避免链式或多级压缩
四、艾体宝 Mend.io 解决方案
艾体宝(Mend.io)是一款专注于软件供应链安全的解决方案,旨在帮助企业发现和管理其软件组件中的安全漏洞、合规性问题及其他风险。
- 增强供应链安全性
Mend.io 专注于软件供应链的安全,帮助企业识别和修复来自第三方组件的安全漏洞。随着越来越多企业在其产品中使用开源软件,第三方组件的安全性变得至关重要。Mend.io 提供对开源组件和其他外部库的深入扫描,帮助企业及时发现并修复潜在的漏洞和安全隐患,从而减少外部攻击的风险。
- 自动化漏洞管理
Mend.io 通过自动化扫描工具,实时检测应用程序中的漏洞。其强大的漏洞检测能力能够迅速发现软件中的已知漏洞并提供详细的修复建议,减少了人工检查和修复的时间和成本。对于开发团队来说,这意味着他们可以更快、更高效地修复漏洞,从而提高整体开发速度。
- 降低安全漏洞的风险
Mend.io 提供了全生命周期的安全性保障,支持从开发阶段到生产部署的各个环节。通过集成到持续集成(CI)/持续部署(CD)管道中,Mend.io 可以在代码提交、构建、测试和生产阶段实时检测潜在的安全问题,确保漏洞尽早被发现并处理。这样能显著降低在生产环境中出现安全漏洞的风险,减少安全事件的发生。