2026 年 9 月 · 6 分钟阅读
解压即中招:恶意仓库能让 Claude Code、Codex、Cursor、Grok 执行代码

关键定义
GitSpawn Manifold Security 命名的一类漏洞:AI 编码 Agent 在后台用 git 收集上下文时未剥离仓库自带的 git 配置,恶意设置(如 core.fsmonitor)让仓库以文件形式到达时,就在宿主上以开发者权限执行任意代码。
core.fsmonitor git 的性能设置:为大型仓库,git 不再逐一检查磁盘文件,而是调用一个辅助程序询问哪些文件变了,并在索引刷新时运行它。git 从仓库自己的 .git/config 读取这个设置——仓库可以自己指定要跑的命令。
上下文收集(context gathering) CLI AI Agent 启动时在后台执行的流程:用 git 弄清当前分支、改动文件、变更内容等,发生在用户输入提示词之前(有的甚至早于认证),是本次漏洞的入口。
9 月 1 日,Manifold Security 发布研究 GitSpawn:用 Claude Code 打开一个文件夹,它会在你输入任何内容之前跑一条 git status 收集上下文——如果这个文件夹是从别处来的,那么仓库本身决定了这条命令实际执行了什么。多个主流编码 Agent(Claude Code、Goose、Grok Build、Qwen Code、Hermes,Codex 与 Cursor 同属此类)在后台用 git 收集上下文时没有剥离仓库自带的 git 配置,恶意仓库可以在信任提示之前、沙箱之外,以开发者权限执行任意代码。
机制:『你没跑的那条 git』
CLI AI Agent 启动时都在做同一件事:后台收集项目上下文。它们用 git 完成——当前分支、改了哪些文件、变更涉及什么。问题是:这些上下文收集调用没有剥离仓库自身的 git 配置,而 git 里有几种设置是命令执行点。
core.fsmonitor 是为大型仓库准备的性能设置:git 不再逐一检查磁盘文件,而是调用一个辅助程序询问哪些文件变了。git 从仓库自己的 .git/config 读取它。所以一个仓库可以自带这样一段配置:
[core]
fsmonitor = <command>
然后任何会刷新索引的 git 命令——git status、git diff,Agent 用哪条都无所谓——都会运行这个命令。执行链是:Agent 启动 → 后台 git status/diff → 索引刷新 → 仓库 .git/config 里指定的命令 → 以你的权限在宿主上运行。这是 Agent 自己的代码 spawn 的子进程,所以跑在沙箱外、没有批准提示,权限模型根本看不到它。
传播方式:不是 clone,是『以文件形式到达』
这里值得精确说明,因为 git 本身从不携带这个东西:克隆一个恶意 URL 不会触发,fetch、pull 也不会。仓库必须带着它的 .git 目录以文件形式到达——共享的 zip、共享盘、同步文件夹、U 盘。同事之间传项目、顾问给客户交付项目,都是这种方式。Manifold 的每个 PoC 用的都是 zip。
波及范围:7 个 Agent,8 个发现,4 个未修复
Goose — 已修复
goose review 构建 diff 时触发。受影响 1.41.0,修复于 1.44.0。CVE-2026-72718,维护者评分 7.0,在我们的报告之后分配。
Claude Code(core.fsmonitor) — 已修复
启动时在沙箱外以内部子进程跑 git status。确认于 2.1.193,修复于 2.1.196。我们的报告被标记为同日另一报告的重复。
Claude Code(ultrareview) — 未修复
不是 core.fsmonitor,而是同类的另一个 git 设置,review 路径没有剥离它。恶意命令在启动时、工作区信任提示出现之前就会执行。2.1.252 确认仍未修复。
Qwen Code — 未修复
启动时跑 git status 收集上下文。0.19.6 报告给阿里 SRC 并被接受,0.22.3 确认仍未修复。注意触发点早于用户认证。
Grok Build — 未修复
用 git 收集上下文。最早 7 月 1 日同类报告被 xAI 关闭为『informative』;我们的报告 7 月 14 日被标记为重复。1.0.13 确认仍未修复。
Hermes Agent — 未修复
在会话目录跑 git status 收集仓库上下文,未剥离仓库配置。0.18.2 报告后,五个渠道六次联系没有收到分诊,0.21.0 确认仍未修复;CVE-2026-71963 由独立 CNA VulnCheck 分配。
Codex 与 Cursor — 已修复
属同类机制但变体不同,均已在发布前被修复;Manifold 的报告被标记为其他研究者已提交的重复。
为什么这是系统性问题
这不是某个厂商的孤立 bug。所有被检查的 Agent 都在用同一个流程:用 git 收集上下文,而不清理仓库配置。Manifold 的 8 个报告里 5 个被标记为其他研究者已经独立提交的重复,其中一个是同一天提交的。这意味着这个问题正被多方独立发现——它不是研究上的偶然,而是编码 Agent 底层管道的普遍缺陷。
覆盖面也说明问题:仅 Claude Code 每月就有超过 7700 万次 npm 下载;被点名的几个项目在 GitHub 上合计接近 50 万 star。编码 Agent 已经从可选工具变成了团队默认的开发入口——而这个入口可以在用户毫无察觉的情况下执行任意代码。
对企业与开发者意味着什么
编码 Agent 是新的供应链端点
打开一个 zip 或共享目录让编码 Agent 工作,等于让这段代码在你机器上获得执行权。开发者的机器里有 SSH 密钥、云凭据与所有仓库——这是攻击者最想要的目标。
升级不等于修复
4 个发现发布时仍未修复,而且同类的其他 git 设置(非 core.fsmonitor)也存在。先确认你的版本是否已修复,别假设『最新版就安全』。
把编码 Agent 当沙箱对象对待
对运行编码 Agent 的开发机,用操作系统级隔离与网络出口控制限制 Agent 进程;对来自外部(zip、共享盘、客户交付)的仓库,先检查 .git/config 再打开。
三步行动
检查你用的编码 Agent 版本是否已修复
对照受影响清单核对版本:Claude Code ≥2.1.196(core.fsmonitor 已修,但 ultrareview 未修)、Goose ≥1.44.0;Qwen Code、Grok Build、Hermes 暂未修复——为这些 Agent 采取额外防护。
把外部仓库当成不可信代码
打开 zip、共享盘或客户交付的项目前,先检查 .git/config 里有没有可疑的设置(core.fsmonitor、core.pager、alias 等命令执行点)。开发团队统一这个检查动作。
为编码 Agent 加操作系统级隔离
在受控环境或沙箱里运行编码 Agent,限制网络出口,隔离开发机的凭据与密钥;如果 Agent 支持,关闭后台自动 git 上下文收集或强制 sanitize 配置(例如 git -c core.fsmonitor=false)。
参考来源
- Manifold Security: GitSpawn — A Single Flaw Lets Untrusted Repos Run Code in Claude Code, Codex, Cursor, and Grok (2026-09-01) — www.manifold.security/blog/ai-coding-agents-git-hijack
- Goose advisory: GHSA-r5pp-p5r8-466r / CVE-2026-72718 — github.com/aaif-goose/goose/security/advisories/GHSA-r5pp-p5r8-466r
- Hermes Agent CVE-2026-71963 — www.cve.org/CVERecord?id=CVE-2026-71963
常见问题
GitSpawn 是什么?+
Manifold Security 9 月 1 日披露的一类编码 Agent 漏洞:Agent 启动时后台跑 git 收集上下文,却没有剥离仓库自身的 git 配置,恶意 core.fsmonitor 等设置会在索引刷新时于宿主上以开发者权限执行任意命令——发生在工作区信任提示之前、沙箱之外。
攻击者能得到什么?+
以开发者权限在沙箱外执行任意代码,屏幕上没有任何显示、无需批准提示。包括 SSH 密钥、环境里的云凭据、shell 配置里的 token、磁盘上所有仓库,以及在这台机器上的立足点。
恶意仓库是怎么传播的?+
不能靠 git clone——克隆恶意 URL、fetch、pull 都不会触发。仓库必须带着 .git 目录以文件形式到达:共享 zip、共享盘、同步文件夹、U 盘。同事之间传项目、顾问给客户交付就是这样。
哪些 Agent 受影响?+
Manifold 披露了 7 个 Agent 上的 8 个发现(Claude Code ×2、Goose、Grok Build、Qwen Code、Hermes,Codex 与 Cursor 属同类但已修复)。发布时 4 个未修复:Qwen Code、Grok Build、Claude Code ultrareview、Hermes(CVE-2026-71963)。Goose 已修(CVE-2026-72718),Claude Code 的 core.fsmonitor 变体已修。
为什么说这是系统性问题?+
因为这不是单个厂商的 bug:所有被检查的 agent 都用『git 收集上下文而不清理仓库配置』的同一流程,Manifold 的 8 个报告里 5 个被标记为其他研究者已独立提交的重复。同一缺陷被多方同时发现,说明它是编码 agent 底层的普遍问题。
相关文章
AI 网关只告诉你请求去了哪,JetStream 回答它该不该发
JetStream Clearance 把零信任的信任边界从身份下移到单次动作:AI Blueprints 契约 + 参数级权限 + 序列检测,在 MCP 调用执行前逐动作授权。网关已成商品,授权引擎是下一个战场。
审查过的 MCP 工具在第四次调用开始背叛你:Deadbugz 的运行时门控投毒
Pillar Security 披露活跃 MCP 供应链活动 Deadbugz:恶意服务器伪装成文本格式化工具,前三次调用一切正常,第四次起改写返回的工具元数据,指示 agent 搜寻 SSH 密钥、AWS 凭证并隐藏行为。一次性审查被系统性绕过——工具描述是运行时安全边界,批准应发生在动作执行之时。
OWASP Agentic Top 10 落地清单:从风险到控制
把 OWASP Agentic Top 10(ASI01-ASI10)变成可执行评估清单:每项风险对应的具体控制措施、可审计证据与最常被忽略的三项(供应链、记忆投毒、级联失效)。
Unit 42 实录:多 Agent 前沿 AI 勒索攻击 10 小时拿下企业,还留下 80 页审计
Palo Alto Unit 42 记录 9 月 2 日事件:多个前沿 AI Agent 并行,10 小时用 50+ ATT&CK 技术拆掉云/身份/CI-CD/SaaS 四层防线——人类红队通常要两周。攻击结束后 Agent 还生成 80 页技术审计交给受害者。