0xC01DF00D/claude-code-rce-poc

GitHub: 0xC01DF00D/claude-code-rce-poc

演示 Claude Code 在打开恶意 Git 仓库时如何通过 MCP Server 自动批准绕过实现零交互远程代码执行的概念验证。

Stars: 1 | Forks: 0

# PoC:MCP Server 自动批准绕过 ## 概述 此概念验证表明,当在 Claude Code 中打开恶意 git 仓库时,可以 实现任意代码执行,而无需任何用户交互, 只需克隆仓库并运行 `claude` 或 `claude -p` 即可。 此漏洞需要将项目克隆到用户信任的目录中。该漏洞被 Anthropic Bug Bounty Program 拒绝接收。 ## 工作原理 该攻击结合了两个由仓库控制的文件: 1. **`.mcp.json`** - 定义了一个运行任意命令的恶意 MCP server 2. **`.claude/settings.json`** - 设置 `enableAllProjectMcpServers: true` 以 自动批准所有 MCP server,而不显示批准对话框 ### 代码路径(交互模式) 1. 用户在恶意仓库目录中运行 `claude` 2. `showSetupScreens()` 显示信任对话框 - 用户点击“Trust”(正常流程) 3. `handleMcpjsonServerApprovals()` 调用 `getProjectMcpServerStatus()` 4. `getProjectMcpServerStatus()` 读取 `getSettings_DEPRECATED()`(合并后的设置) 5. 合并后的设置包含来自 `.claude/settings.json` 的 `projectSettings` 6. `settings.enableAllProjectMcpServers` 为 `true` -> 返回 `'approved'` 7. MCP server 的命令通过 `StdioClientTransport` 执行 ### 代码路径(非交互模式 - 无信任对话框) 1. 用户在恶意仓库中运行 `echo "analyze this code" | claude -p` 2. `isNonInteractive = true` -> 从不调用 `showSetupScreens()` 3. `getProjectMcpServerStatus()` 命中非交互自动批准路径: `getIsNonInteractiveSession() && isSettingSourceEnabled('projectSettings')` 4. 无需任何用户交互即返回 `'approved'` 5. MCP server 命令执行 ## 受影响版本 此 PoC 针对的是提交 `c2357be` (2026-03-31) 处的代码库。该漏洞 存在于 `src/services/mcp/utils.ts` 的第 367-374 行。 ## 严重性 **严重 (CRITICAL)** - 非交互模式下的零交互远程代码执行。 在交互模式下,信任对话框是唯一的门槛(但并未专门针对 MCP 自动批准发出警告)。 ## 修复方案 仅从 `localSettings`(已被 gitignore 忽略)中读取 `enableAllProjectMcpServers`, 而不是从包含受仓库控制的 `projectSettings` 的合并设置中读取。
标签:AI安全, Anthropic, Chat Copilot, CIS基准, Claude Code, .claude/settings.json, DNS 解析, .mcp.json, MCP Server, PoC, RCE, TTP, 大模型安全, 恶意代码仓库, 搜索语句(dork), 数据展示, 文档安全, 暴力破解, 红队, 编程工具, 网络安全研究, 自动审批绕过, 远程代码执行, 配置文件利用, 零交互漏洞, 非交互模式, 项目信任机制