CVE-2026-34786Rack是一个模块化的Ruby Web服务器接口。在2.2.23、3.1.21和3.2.6版本之前,Rack::Static组件在处理header规则时存在逻辑缺陷。该组件针对原始URL编码的路径信息(PATH_INFO)评估header规则,而底层文件服务路径在实际服务文件前已被解码。这种差异导致攻击者可以通过发送URL编码形式的请求路径,成功绕过原本应用于静态内容的安全响应头,导致安全防护失效。
该漏洞源于Rack::Static中路径匹配逻辑与实际文件系统路径处理之间的不一致性。在受影响版本中,`applicable_rules` 方法会根据HTTP请求中的原始URL编码字符串(PATH_INFO)来判断是否应用特定的header规则。然而,当Rack准备从磁盘读取文件时,会对路径进行URL解码操作。利用方式在于,如果管理员配置了针对特定路径(如`/config.json`)的严格安全响应头(如CSP或X-Frame-Options),攻击者可以构造一个经过URL编码的请求路径(例如`/%63onfig.json`)。由于匹配逻辑是基于原始编码字符串进行的,编码后的路径无法触发预设的header规则;但文件系统在读取时会将路径解码回原路径并成功返回文件内容。这样,攻击者便获取了未受安全header保护的静态资源,可能导致浏览器端安全策略失效或缓存控制被绕过。