CVE-2026-26961Rack是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防护规则。