据 The Hacker News 于 9 月 2 日报道,Manifold Security 披露了七款 AI 编程代理中的八个漏洞:文件夹自带的 git 设置会让代理在开发者的电脑上执行命令。这项研究被命名为 GitSpawn。在其中几款代理中,命令会在工具询问该文件夹是否受信任之前就执行。
背景
编程代理打开一个项目时,会运行 git 命令来了解当前分支以及哪些文件发生了变化。Git 有一个性能设置 core.fsmonitor,用来指定 git 为查找已变更文件而运行的程序。如果这个设置来自代码仓库自身的 .git/config,那么运行哪个程序就由代码仓库决定 [1]。
报告内容
Manifold 发现,一个精心构造的 .git/config 可以指定任意命令,该命令随后会以开发者的权限运行,处在代理的沙箱之外,而且不会出现批准提示。报告称,利用这一点需要一个仍保留 .git 目录的文件夹,例如以压缩包形式传送、存放在共享盘或 USB 闪存盘上的文件夹,而普通的克隆则不行 [1]。
触发时机因代理而异。在 Claude Code 和 Hermes Agent 中,命令在工作区信任提示之前执行;在 Qwen Code 中,在身份验证之前执行;在 Grok Build 中,在第一次按键时执行 [1]。
报告将 goose(1.44.0 及更高版本)、Cursor 和 Codex 列为已修复,Claude Code 自 2.1.196 版本起部分修复。Hermes Agent、Qwen Code 和 Grok Build 被列为尚未修复,Manifold 在 Claude Code 2.1.252 版本上确认的第二条路径也是如此。报告称尚未观察到在野利用;尽管多次尝试联系厂商,Hermes Agent 的漏洞报告仍未得到分类处理 [1]。
对 Mac 用户的影响
受影响的群体是使用上述某款代理打开他人提供的项目文件夹的开发者,尤其是复制而非克隆得来的文件夹。报告没有给出操作系统方面的限制,因此用于开发的 Mac 也在其范围之内 [1]。
建议
- 在打开以压缩包形式收到、来自共享盘或 USB 闪存盘的文件夹之前,先阅读其中的 .git/config 文件。
- 查找 core.fsmonitor、core.hooksPath 和 filter 条目,报告指出这些是需要检查的设置。
- 优先从原始托管平台重新执行 git clone,而不是复制整个文件夹。
- 更新你所使用的代理,并查看厂商说明中有关上述修复的内容。
与 FireAI 的关系
FireAI 不读取 git 设置,也无法阻止本地命令运行。它是一款网络防火墙:如果该命令开始下载内容或向外发送文件,在提醒模式下,来自一个没有规则的进程的连接会触发提示,实时世界地图会显示它的去向。在遭受攻击模式下,只有带有明确“允许”规则的 App 才能联网。
局限
本文依据的是一份报告。报告没有说明有多少开发者使用了受影响的版本,其修复列表在 9 月 2 日之后也可能已有变化。报告也没有说明 Claude Code 中部分修复的路径与尚未修复的路径有何不同。
免费试用 HisnLabs 的 FireAI 17 天。