漏洞总结:ZMCPTools 路径遍历与任意本地文件读取漏洞 漏洞概述 漏洞名称:路径遍历与任意本地文件读取漏洞 (Path Traversal and Arbitrary Local File Read Vulnerability) 漏洞编号:ZMCPTools #8 漏洞类型:CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) 受影响组件: 和 根本原因:MCP日志资源处理代码 ( ) 接受用户控制的 URI,并在未验证解析后的路径是否位于预期的日志目录内的情况下,构造文件系统路径。攻击者可以通过在 参数中使用 序列读取服务器进程可访问的任意本地文件(如 )。 影响范围 受影响版本:确认受影响版本为 。 安全影响: 机密性 (Confidentiality):高。MCP服务器进程可读的任意本地文件可能会被暴露。 完整性 (Integrity):无(演示的漏洞读取文件系统内容)。 可用性 (Availability):低(大文件或特殊文件可能导致资源消耗或错误条件)。 范围 (Scope):未改变。 修复方案 1. 路径规范化:规范化并解析最终的文件系统路径,使用固定的基准目录,然后强制执行解析后的路径必须位于 下。 2. 使用逻辑标识符:将 和 视为逻辑标识符,而不是原始路径片段;仅允许预期的日志目录和文件名模式。 3. 避免直接拼接:避免在不进行验证的情况下直接将 URI 路径段传递给 。 4. 回归测试:添加针对遍历载荷(如 及其编码等效项)的回归测试。 5. 发布安全公告:在补丁发布后发布维护者安全公告。 概念验证 (POC) 代码 1. 环境准备 2. 利用代码 (Minimal MCP SDK Client) 3. 验证 MCP SDK 客户端发送包含构造的 URI 的 请求。 服务器解析出位于预期日志目录之外的遍历路径,并返回 的内容。 成功的复现将打印主机文件内容,例如 条目。