打开一个别人发来的项目文件夹。你还没敲第一个字,屏幕上什么都还没问,Claude Code 已经在后台跑了一条 git status。这条命令本身无害,但跑什么、以谁的身份跑,此刻由文件夹里的一个文本文件说了算。
这不是提示注入,模型全程没参与。9 月 1 日,Manifold Security 的攻击安全工程师 Francisco Rosales 把这条路走通了七遍,写成一篇文章,标题里的名字叫 GitSpawn。
发生了什么
一句话:一批主流编程智能体在启动时会生成 git 子进程来确认自己在哪,这个子进程原样继承仓库自带的 .git/config;如果配置里藏着命令,它就会在沙箱外、审批层外、以你的用户权限执行。
Manifold 的原话是:"This is the agent's own code spawning a subprocess to use git, so the command runs outside the sandbox, without an approval prompt. The permission model never sees it. We call it GitSpawn."
8 项发现,7 个智能体,发布时 4 项未修复。这个 7×8 的账,Cloud Security Alliance 的研究笔记(9 月 4 日)列成了表:
| 智能体 | 报告日 | 截至 9 月初 |
|---|---|---|
| Claude Code(core.fsmonitor) | 6 月 26 日 | 已修复,v2.1.196 |
| Cursor | 7 月 8 日 | 已修复 |
| OpenAI Codex CLI / Desktop | 7 月 20 日 | 已修复,CLI ≥ 0.131.0,两个 CVE |
| Block's Goose | 7 月 13 日 | 已修复,v1.44.0,CVSS 4.0 得 7.0 |
| Qwen Code | 7 月 7 日 | 未修复,0.22.3 复测命中 |
| Grok Build | 7 月 14 日 | 未修复,1.0.13 复测命中 |
| Hermes Agent | 7 月 20 日 | 未修复,五渠道联系无分诊 |
| Claude Code 第二变体 | 7 月 15 日 | 未修复,配置键名被研究方扣留 |
坑是哪一寸
主角是 core.fsmonitor。这是 Git 给大仓库准备的正经性能特性:它的值是一条命令,git 在刷新索引时自动执行。正经用途是跑文件监控守护进程。不正经的用途,仓库主人可以自己写。
有一层护栏还在:git clone、fetch、pull 都不会把恶意配置带过来。研究方自己在文里写明,"For every proof of concept in this post, we used a .zip"——仓库得以文件形式到达,带着现成的 .git 目录。压缩包、共享盘、同步文件夹,都在这个名单上。
触发时机比我预想的更早。Claude Code 是打开项目文件夹就执行,早于工作区信任提示;Qwen Code 早于用户认证;Grok Build 在你敲下第一个字符时。 Goose 更直白,其 GitHub 安全公告的原话是 "no submitted prompt, no model call, no tool approval, no trust prompt"。
为什么值得盯住
第一,攻击面不在模型里。红队这半年围着提示注入打转,GitSpawn 绕开了整个战场——它利用的是智能体启动时必做的那件家务事。研究方的定位原话:"The vulnerability is not in the model, or in anything new. It is in the ordinary plumbing underneath."
第二,这是旧病复发。Sonar 去年 4 月就写过 Claude Code 在信任对话框之前跑 git status,2.0.34 修掉了;今年 6 月的 2.1.193 里同一行为回归。再往前,VS Code 2021 年的 CVE-2021-43891、JetBrains 2022 年的 CVE-2022-24346,是同一个信任绕过模式。RedEye 的总结只有一句:"A repository can hand your AI coding agent a command, and the agent will run it, as you, outside its sandbox, with no approval prompt."
第三,修复纪律值得单独记账。8 份报告里,4 个被厂商关成"与内部报告重复",其中两个先被定为 informative 再被关。截至 9 月 2 日,Qwen Code 的 0.22.3 仍是 npm 上的最新版。发稿时没有任何来源报告在野利用,CISA KEV 目录(9 月 1 日版,1687 条)里也没有相关 CVE。窗口还开着。
今天能做什么
版本升上去:Claude Code ≥ 2.1.196,Codex CLI ≥ 0.131.0,Goose ≥ 1.44.0。外来目录交给智能体之前先问一句 git config --get core.fsmonitor。最稳妥的处置是 RedEye 给的:删掉 .git 重新 clone——"The .git directory is the payload carrier, and re-cloning is cheaper than auditing every executable-valued key"。四家未修复的,放进一次性容器里跑,别挂凭据。还有个更省心的开关:git config --global core.fsmonitor false。
我没找到任何一家厂商的公开公告,Claude Code 的两个发现也没进 npm 包的更新说明。所以最后那句是给所有人的:问你正在用的智能体厂商,GitSpawn 修了吗。答不上来的,按未修复处理。
延伸阅读:Manifold 原始披露 · CSA 研究笔记 · The Hacker News 报道 · RedEye 分析
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。