CVE-2026-33202Ruby on Rails 的 Active Storage 组件存在严重安全漏洞。在特定版本中,`DiskService#delete_prefixed` 方法未对 blob 键进行过滤即传递给 `Dir.glob`。攻击者可利用此缺陷,通过构造包含 glob 元字符的文件名,删除存储目录下非预期的文件。该漏洞无需认证且无需交互即可远程利用,严重影响系统的完整性和可用性。
该漏洞的根源在于 Ruby on Rails Active Storage 组件中的 `DiskService#delete_prefixed` 方法未对用户输入进行充分的校验和转义。具体而言,当应用需要清理或删除文件时,该方法直接将存储的 blob key(文件键)作为参数传递给 Ruby 原生的 `Dir.glob` 函数。`Dir.glob` 函数设计用于文件路径匹配,它支持通配符扩展,例如 `*` 可匹配任意字符串,`?` 可匹配单个字符,`[]` 可匹配字符集。如果攻击者能够影响 blob key 的生成(例如在文件上传过程中控制文件名),并在 key 中注入如 `*` 之类的 glob 元字符,调用 `Dir.glob` 时将会返回存储目录下所有匹配该模式的文件路径列表。由于代码逻辑随后会遍历该列表并删除文件,攻击者便能利用这一机制绕过正常的文件访问控制,批量删除存储目录下的非预期文件。这不仅包括其他用户的上传数据,还可能覆盖到应用级别的配置文件或资源文件,导致系统完整性被严重破坏,服务可用性受损。由于该攻击通过网络发起且无需预先认证,其危害性极高。