新闻公告使用手机扫一扫查看
< 返回

Python urllib3 内容解码机制存在高危安全隐患

2025-12-27 17:40 作者:数掘云算 阅读量:2

漏洞概述

2025年12月8日,Python 常用 HTTP 客户端库 urllib3 官方发布安全通告,披露了两个高危安全漏洞(CVSS 均为 8.9)。攻击者可通过构造恶意响应触发资源耗尽,导致客户端程序异常退出。由于 urllib3 是大量 Python 应用的底层依赖组件,潜在影响范围极广。

 

漏洞技术分析

 

CVE-2025-66418:解压缩链无限扩展漏洞

该漏洞源于 urllib3 对压缩数据流的处理逻辑。库支持多种压缩算法的链式组合(如 gzip、zstd 等),但在实现中未对压缩链的层数进行限制。攻击者可构造包含大量嵌套压缩步骤的响应,使客户端在解码过程中持续消耗 CPU 和内存资源,最终形成类似“解压缩炸弹”的拒绝服务效果。

CVE-2025-66471:流式解码导致的资源耗尽问题

该问题影响 urllib3 的流式读取接口。原本用于按块高效读取大响应的流式 API,在处理压缩内容时存在缺陷:为满足指定的读取块大小,库会一次性解压高度压缩的数据。由于少量压缩数据可能膨胀为大量明文内容,导致解码结果被完整加载到内存中,引发 CPU 占用飙升和内存大量分配的问题。

 

影响范围

 

凡使用 urllib3 2.5.0 及之前版本,并从不可信服务端获取数据的应用程序均可能受到影响,包括默认启用内容解码的普通请求,以及 stream()、read()、read_chunked() 等流式接口调用。

 

修复与缓解建议

 

官方修复方案

立即升级至 urllib3 2.6.0 或更高版本

若使用 Brotli 压缩,需同步升级至 Brotli 1.2.0 或 brotlicffi 1.2.0.0

临时缓解措施

对于暂时无法升级的环境,可关闭自动内容解码(设置 preload_content=False),并在应用层手动校验 Content-Encoding 头部,限制可接受的压缩编码层级,以降低被利用风险。

 

联系我们
返回顶部