漏洞概述 漏洞名称: Path Traversal in knowns MCP create_doc tool (.md File Write Outside Intended Directory) 漏洞描述: 该漏洞允许攻击者通过构造恶意 参数,将文件写入到预期的 目录之外。 漏洞原因是 工具在处理 参数时,仅去除了前导和尾随斜杠,但未对路径遍历序列进行过滤或拒绝。 影响范围 受影响版本: 所有版本,包括v0.11.4 漏洞类型: CWE-22: Improper Limitation of a Pathname to a Restricted Directory (Path Traversal) 严重程度: 中等 风险: 中等 影响: - 可以在任意可写文件系统位置创建.md文件(扩展名硬编码为.md,不是任意文件写入) - 通过 创建任意目录 - 文件内容完全由攻击者控制(通过 参数),但仅以.md格式写入 - 可以与 工具结合使用,通过创建 目录结构来劫持项目根目录 - 无法覆盖现有文件( 检查防止了这一点,仅在目标文件不存在时写入) 修复方案 1. 验证 参数: 通过解析完整路径并验证其是否仍在预期的基本目录下来防止路径遍历。 2. 额外防御措施: 拒绝包含 的路径组件。 3. 应用相同路径验证: 对 (用于 和 )应用相同的路径验证,因为它有类似的漏洞。 4. 回归测试: 为 和 参数添加回归测试,以检测路径遍历载荷。 POC代码 PoC 1: 逃逸 — 写入项目根目录 PoC 2: 完全逃逸项目根目录 — 写入 PoC 3: 与 结合用于项目根目录劫持 验证结果 所有三个PoC在macOS上成功执行,使用knowns v0.11.4(commit 62b0daa)。 文件 在 创建,位于 之外。 文件 在 创建,完全在项目目录之外。 成功,因为 存在,所有后续MCP操作使用 作为项目根目录。