用户希望我总结一张关于安全漏洞的网页截图。 我需要提取以下关键信息: 1. 漏洞概述 (Summary/Description): 解释这个漏洞是什么。 2. 影响范围 (Affected versions): 哪些版本受影响。 3. 修复方案 (Mitigation): 如何修复。 4. POC/利用代码: 如果有的话,完整提取。 分析截图内容: 标题: 'Rack::Static' prefix matching can expose unintended files under the static root. (Rack::Static 前缀匹配可能暴露静态根目录下的意外文件) CVE ID: CVE-2023-3170 CVSS Score: 7.5 / 10 (High) Description (概述): 决定哪些文件应该作为静态文件服务,通过检查请求路径是否以配置的静态根目录开头。 当 配置为 时,它匹配任何以 开头的请求路径。 这导致意外文件被服务,因为 只检查请求路径是否以配置的前缀开头,而不检查路径边界。 这可能导致信息泄露。 Details (细节): 使用类似 的逻辑。 代码示例: 会匹配 。 这意味着它只检查请求路径是否以配置的前缀开头,不需要前缀后的路径边界。 举例: 配置 。 预期匹配: 。 意外匹配: (如果 在 目录下,但不在 子目录下,或者更准确地说,如果请求是 ,它会被匹配,因为 以 开头... 等等,让我仔细看图中的例子)。 图中的例子有点绕。 配置: 。 预期匹配: 。 意外匹配: (这里可能是指如果文件就在 目录下,而不是子目录)。 更严重的例子: 和 和 。 关键点:如果文件在配置的前缀目录中,Rack 会将其作为静态文件服务。 这意味着原本意图是暴露子目录(如 和 ),但也可能暴露前缀目录本身(如 )中的文件。 Impact (影响): 攻击者可以请求配置前缀下的文件,即使文件名不包含配置的前缀。 这可能导致暴露配置文件、秘密、备份、环境文件等。 Mitigation (修复方案): 更新到修复了此问题的 Rack 版本。 使用路径前缀时,确保前缀以 结尾(例如 )。 避免暴露前缀目录下的意外文件(例如,不要将 放在 目录下)。 使用 时,确保前缀以 结尾。 Affected versions (受影响版本): = 3.0, = 3.2, = 3.0, = 3.2, Rack::Static 前缀匹配漏洞 (CVE-2023-3170) 漏洞概述 组件在决定哪些文件应作为静态文件服务时,仅检查请求路径是否以配置的静态根目录开头(逻辑类似于 )。它不检查前缀后的路径边界。 当 配置为 或类似前缀时,这会导致意外文件被服务。攻击者可以请求配置前缀下的文件,即使文件名不包含配置的前缀,从而导致信息泄露(如配置文件、秘密、备份文件等)。 影响范围 以下版本的 Rack 受影响: 修复版本: 修复方案 (Mitigation) 1. 更新版本: 将 Rack 更新到上述修复版本之一。 2. 配置前缀: 使用路径前缀时,确保前缀以 结尾(例如 )。 3. 文件管理: 避免将意外文件(如 目录)放在静态文件根目录下。 4. 路径检查**: 确保 的前缀以 结尾,以正确区分目录边界。 漏洞原理代码示例 页面中展示了导致漏洞的匹配逻辑及受影响的路径示例: