filesystem-mcp-server 路径前缀检查绕过漏洞总结 漏洞概述 漏洞名称:filesystem-mcp-server ALLOWED_PATHS Prefix-Check Bypass via read_file_tool / write_file_tool 漏洞编号:#1 报告时间:2026年4月13日 漏洞类型:CWE-73 (外部控制文件名或路径) 严重程度:CVSS v3.1 9.8 (Critical) 核心问题: 的安全检查机制存在缺陷。代码使用 获取绝对路径后,仅通过字符串前缀匹配 ( ) 来验证路径是否在允许范围内。攻击者可以通过构造与允许路径具有相同前缀但实际位于允许目录之外的路径(如 与 )来绕过此检查。 影响范围 受影响产品:geekgod382/filesystem-mcp-server 受影响版本:确认受影响 commit 影响组件: , 及其他文件管理工具(delete, move, copy, list) 安全影响: - 机密性:高(可读取敏感本地文件) - 完整性:高(可覆盖、创建或删除文件) - 可用性:中至高(取决于关键文件是否受影响) 修复方案 1. 路径规范化:在每次文件系统操作前,添加路径规范化(canonicalization)并强制执行根目录边界检查。 2. 严格验证:替换自由表单路径输入,使用结构化标识符或允许的相对路径。 3. 防御性编程:添加回归测试,覆盖 、绝对路径、符号链接逃逸和混合编码遍历载荷。 4. 文档规范:为所有面向文件的 MCP/HTTP 工具记录预期的信任边界。 概念验证 (POC) 触发条件: 假设 设置为 ,攻击者构造路径 。 JSON-RPC 请求示例: 原理分析: 返回的字符串以 开头,因此 返回 ,导致文件被写入到允许目录之外的 中。