CVE-2026-33195Ruby on Rails的Active Storage组件存在一个严重的路径遍历漏洞。在受影响的版本中,`DiskService#path_for`方法未对解析后的文件系统路径进行有效性验证,未能确保其保持在存储根目录内。如果应用程序将用户输入作为blob键传递,攻击者可以通过构造包含路径遍历序列(如`../`)的键值,读取、写入或删除服务器上的任意文件。该漏洞可能导致敏感信息泄露、数据篡改或系统拒绝服务,且攻击无需认证且无需用户交互,影响范围极广。
该漏洞的根本原因在于Ruby on Rails Active Storage组件中的`DiskService`类未能妥善处理文件路径的安全边界。具体而言,`DiskService#path_for`方法负责将抽象的blob key转换为服务器上的实际物理路径。在正常的设计模式下,blob key应当是由系统生成的不可预测字符串(例如UUID),因此开发者往往假定该输入是安全的。然而,若应用程序错误地将用户可控的输入直接用作blob key,攻击者便有机会注入恶意路径。当构造的key中包含`../`(父目录引用)或`..\`(Windows路径)等序列时,路径拼接操作会导致解析后的路径跳出预定的存储根目录。由于该旧版本代码未对最终路径进行规范化或验证其是否位于根目录之内,攻击者便能借此访问文件系统上的任意位置。这不仅允许读取敏感配置文件(如数据库凭证、环境变量),还可能导致覆盖关键系统文件或删除Web应用代码,从而造成严重的数据泄露和系统沦陷。