针对不可信仓库命令和 MCP 工具调用的执行检查
测试 Claude Code、Codex 或基于 MCP 的代理时,安全团队应在执行前增加一道检查,拦截任何来自仓库文本或用户控制输入的命令、二进制文件、脚本、文件路径、URL、数据库查询或终端工具调用。检查可以保持简单:标记每个待执行参数的来源,阻止自动批准执行未签名的本地二进制文件和仓库建议运行的脚本,首次运行命令时要求人工说明批准理由,并记录引入该指令的具体仓库文件或 MCP 参数。
需求很明确。一项概念验证在本地 geopy 仓库中加入了看似正常的项目指引、security.sh 脚本、恶意的 code_policies 二进制文件和诱饵源文件。Claude Code 和 Codex 检查这些文件后,将脚本判断为安全,并在自动模式或自动审查模式下运行了恶意二进制文件。报告称,受影响的环境包括多个 Claude Code CLI 版本和 Codex CLI 0.142.4。
MCP 服务器在工具边界上也会出现同类问题。SpellSmith 的 MCP 研究在 53 份漏洞报告中发现了 43 起污染类型案例,其中大多数在调用工具时触发。该研究提出的缓解方法会在工具描述中加入安全指引,并在最终执行前增加一次反思步骤。第一项实际测试可以使用一个小型仓库样本,让现有代理读取看似无害的 README 指引,而该指引要求执行脚本;然后启用检查再次运行,确认代理仍能检查代码,同时失去自动执行的路径。
资料来源
- Document 1794
- Document 1799