你还没敲字,它已经执行了:GitSpawn 与七个编程智能体的共同陷阱

打开一个别人发来的项目文件夹。你还没敲第一个字,屏幕上什么都还没问,Claude Code 已经在后台跑了一条 git status。这条命令本身无害,但跑什么、以谁的身份跑,此刻由文件夹里的一个文本文件说了算。

打开一个别人发来的项目文件夹。你还没敲第一个字,屏幕上什么都还没问,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
Cursor7 月 8 日已修复
OpenAI Codex CLI / Desktop7 月 20 日已修复,CLI ≥ 0.131.0,两个 CVE
Block's Goose7 月 13 日已修复,v1.44.0,CVSS 4.0 得 7.0
Qwen Code7 月 7 日未修复,0.22.3 复测命中
Grok Build7 月 14 日未修复,1.0.13 复测命中
Hermes Agent7 月 20 日未修复,五渠道联系无分诊
Claude Code 第二变体7 月 15 日未修复,配置键名被研究方扣留

坑是哪一寸

主角是 core.fsmonitor。这是 Git 给大仓库准备的正经性能特性:它的值是一条命令,git 在刷新索引时自动执行。正经用途是跑文件监控守护进程。不正经的用途,仓库主人可以自己写。

有一层护栏还在:git clonefetchpull 都不会把恶意配置带过来。研究方自己在文里写明,"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 分析

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens