CVE-2026-34763Rack是一个流行的Ruby Web服务器接口。在2.2.23、3.1.21和3.2.6版本之前,Rack::Directory组件在生成目录路径时,直接将用户配置的根路径拼接到正则表达式中。如果根路径包含正则元字符(如+, *, .),会导致前缀剥离逻辑失效,进而在HTML输出中暴露完整的文件系统路径。攻击者可利用此漏洞获取服务器敏感目录结构信息。
该漏洞的核心在于Rack::Directory组件在处理路径显示时存在不当的正则表达式使用方式。在受影响的版本中,为了生成用户友好的目录列表,程序需要从完整的物理文件系统路径中移除用户配置的根目录前缀。实现上,代码直接将root path参数拼接到用于替换操作的正则表达式中,而未使用Regexp.escape等方法对特殊字符进行转义。当root path包含正则元字符(如点号.、加号+、星号*等)时,这些字符在正则引擎中会被解释为通配符或量词,而非字面字符。这种语义差异导致正则匹配失败,原本应被剥离的前缀部分保留了下来。因此,在渲染HTML页面时,服务器端直接将完整的绝对路径返回给了客户端。攻击者无需任何权限即可通过简单的HTTP请求触发此逻辑,进而获取服务器端的目录结构、用户名或潜在的敏感文件位置信息,虽然不直接导致代码执行,但为后续攻击提供了重要情报。