漏洞关键信息总结 漏洞概述 漏洞名称: Relative Path Traversal in scitokens-cpp CVE编号: CVE-2024-22725 CWE: CWE-22 (Path Traversal), CWE-863 (Incorrect Authorization) 严重程度: High (8.3/10) scitokens-cpp 在处理基于路径的令牌作用域时存在授权绕过漏洞。库在授权前对令牌中的作用域路径进行规范化,将 路径组件折叠而非拒绝,导致攻击者可通过父目录遍历扩大授权范围,访问预期目录之外的资源。 --- 影响范围 受影响版本范围: v0.1.0 至 v1.4.0,以及从这些版本派生的预修复开发快照 --- 漏洞原理 问题行为: 1. 令牌中的作用域路径在授权前被规范化 2. 规范化将 折叠而非拒绝 存在漏洞的代码逻辑: --- POC代码/利用示例 示例1: 逃逸到父目录 令牌作用域: 规范化后: 请求资源: 结果: 被错误授权 --- 示例2: 逃逸到根目录 令牌作用域: 规范化后: 请求资源: 结果: 被错误授权 --- 复现步骤 场景一: 1. 创建或获取有效令牌,作用域为 2. 调用 enforcer: - authorization: - requested resource: 3. 观察授权成功 场景二: 1. 创建或获取有效令牌,作用域为 2. 调用 enforcer: - authorization: - requested resource: 3. 观察授权成功 --- 修复方案 推荐修复措施 拒绝包含父目录遍历组件的任何作用域路径 在授权匹配前执行验证 对边界百分号解码后出现的遍历同样拒绝 保持请求路径规范化安全,但不允许令牌作用域规范化扩大访问范围 实际修复内容 开发分支已通过以下方式修复: 引入严格的令牌作用域路径规范化 在授权前拒绝遍历组件 添加针对原始和编码遍历输入的回归测试 加固修复 修复还拒绝编码和双重编码的遍历形式: