IPBUF安全漏洞报告
English
CVE-2026-26962 CVSS 4.8 中危

CVE-2026-26962 Rack HTTP头部注入漏洞

披露日期: 2026-04-02

漏洞信息

漏洞编号
CVE-2026-26962
漏洞类型
CRLF注入
CVSS评分
4.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Rack

相关标签

CRLF注入HTTP头部注入RackRuby响应拆分

漏洞概述

Rack是Ruby模块化Web服务器接口。在3.2.0至3.2.6之前的版本中,Rack::Multipart::Parser在解析折叠的multipart请求头时存在缺陷。它未能正确移除折叠行中的换行符,导致解析后的参数值(如filename)中保留了嵌入的CRLF字符。若应用程序将这些值重用于HTTP响应头,攻击者可利用此漏洞进行HTTP头部注入或响应拆分,进而可能导致XSS或缓存投毒。

技术细节

该漏洞源于Rack对RFC规范中“obs-fold”(头部字段折叠)的实现错误。在处理multipart/form-data请求时,解析器理应移除用于长头部换行的CRLF序列。然而,受影响版本却错误地在解析结果中保留了这些控制字符。攻击者可以通过构造特制的文件上传请求,在Content-Disposition头的filename参数中注入\r\n序列。当Rack解析此头部时,CRLF被原样保留。如果应用逻辑直接使用此受污染的文件名生成HTTP响应头(例如设置下载文件的Content-Disposition),保留的CRLF将允许攻击者注入任意响应头或通过双CRLF提前结束头部部分注入恶意响应体,从而实现CRLF注入攻击。这可能导致缓存投毒、XSS攻击或敏感信息泄露。

攻击链分析

STEP 1
步骤1
攻击者构造包含恶意multipart/form-data数据的HTTP POST请求,在filename字段中嵌入CRLF(\r\n)序列。
STEP 2
步骤2
服务器端的Rack::Multipart::Parser接收并解析请求头,由于漏洞未能去除折叠行中的CRLF字符,将其保留在解析后的参数值中。
STEP 3
步骤3
应用程序在生成HTTP响应时(如设置Content-Disposition头),直接使用了受污染的文件名参数。
STEP 4
步骤4
CRLF字符导致响应头被提前终止,攻击者注入的恶意头部或响应体内容被发送给用户,完成攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Example) url = "http://target/upload" # Malicious filename containing CRLF sequence to inject headers # The CRLF (%0d%0a) is preserved because of the unfolding bug files = { 'file': ('evil.txt\r\nX-Injected-Header: Hacked', 'content of file') } response = requests.post(url, files=files) # Check if the response headers contain the injected header if "X-Injected-Header" in response.headers: print("Vulnerable! Header injection successful.") else: print("Not vulnerable or patched.")

影响范围

Rack >= 3.2.0, < 3.2.6

防御指南

临时缓解措施
在未升级版本中,避免直接将用户提供的multipart参数值(如filename)用于HTTP响应头设置,或在设置前手动移除所有\r\n字符。

参考链接

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