9 月 1 日,Manifold Security 披露一类名为 GitSpawn 的漏洞,影响 Claude Code、OpenAI Codex、Cursor、Goose、Hermes Agent、Qwen Code、Grok Build 七款命令行编码 Agent。它不涉及提示注入、不涉及模型,而是利用 Git 一个性能配置项,在用户批准任何操作之前静默执行攻击者代码——这是编码 Agent 安全模型被「绕过」而非「攻破」的典型案例。
完整事件全貌
Git 的 core.fsmonitor 配置项可以指向一个外部程序,Git 在刷新索引时自动运行它以提升大仓库性能。该配置写在仓库自己的 .git/config 里,随仓库目录一起流动。编码 Agent 启动时会静默运行 git status / git diff 来收集上下文,这一调用触发了被投毒的 core.fsmonitor,在登录用户权限下执行攻击者命令,绕过沙箱与批准流。Manifold 记录了 8 个发现跨 7 款 Agent,披露时 4 款仍未修复(Hermes Agent 0.21.0 / CVE-2026-71963、Qwen Code 0.22.3、Grok Build 1.0.13、以及 Claude Code 2.1.252 上的另一条路径)。已修复侧:Claude Code 在 2.1.196 修复 fsmonitor 路径(CVE-2026-55607),Goose 1.44.0(CVE-2026-72718,CVSS 7.0),Codex 与 Cursor 也已修补。
核心差异化亮点
它绕开了编码 Agent 赖以建立信任的「权限提示」设计:命令不是由 Agent 在对话里「提议并被批准运行」,而是 Git 自己运行的,连批准流都看不到。攻击者借此可拿到 SSH 密钥、云凭证、API token、源码,以及该开发者账号能触及的其他仓库。换言之,Agent 的沙箱只覆盖「Agent 主动做的事」,却没覆盖「Agent 启动即 spawn 的子进程」。
落地短板与局限
这并非「远程蠕虫」,需要受害者拿到带有 .git 目录的仓库——压缩包、共享盘、同步文件夹、U 盘、外包交接包都是现实载体;普通 git clone/fetch/pull 不会携带远程配置,攻击面受限但不消失。修复极其简单(调用时加 git -c core.fsmonitor=false status),但这恰恰暴露系统性盲区:Agent 在沙箱武装前就 spawn 了子进程。版本号迭代很快,实际防护以你本机安装版本为准。
横向同行对比
与传统的提示注入、越狱不同,GitSpawn 是「旧软件供应链的新可达面」——VS Code(CVE-2021-43891)、JetBrains(CVE-2022-24346)早有同类 pre-trust 绕过;Sonar 今年 4 月就报告过同一 sink,Anthropic 曾在 2025 年 11 月缓解,却又在 6 月的 2.1.193 回归。说明这是「被自主软件继承的旧利器」反复发作,而非孤立新漏洞。
中长期趋势研判
短期,企业应盘点在用 CLI 编码 Agent 并锁定到已修补版本,把外部仓库当作不可信可执行文件对待——开目录前先检查或剥离 .git/config;中期,Agent 威胁模型必须把「启动即运行什么」纳入,而不只是「提示词」;长期,编码 Agent 会把「仓库信任 + 配置消毒」做成出厂默认,类似浏览器对待下载文件。对开发者,最朴素的一条纪律是:用 Agent 打开不掌控的仓库前,先看一眼 .git/config。