用于检测恶意代码的顶级 AI 代理可被诱骗运行恶意代码

用于检测恶意代码的顶级 AI 代理可被诱骗运行恶意代码

导语:AI Now Institute 发布名为"Friendly Fire"的概念验证攻击,揭示 Claude Code 与 OpenAI Codex 在自主模式下审查不可信开源代码时,可被攻击者通过 README.md 中的隐蔽指令劫持,进而在受害者主机上执行任意代码。

让 AI 编码代理扫描开源代码中的安全漏洞,它反而可能在你的机器上运行攻击者的代码。

这是 AI Now Institute 周三发布的一项概念验证(PoC)研究的发现,该攻击被称为"Friendly Fire"(友军误伤)。当 Anthropic 的 Claude Code 和 OpenAI 的 Codex 以自主模式运行时,攻击便会生效——该模式会自主批准代理自身发出的命令。

该攻击劫持的恰恰是这些工具被设计来执行的那项任务:检查不可信的第三方代码中是否存在问题。代理不仅未能捕获威胁,反而成为入侵的通道。

研究人员 Boyan Milanov 和 Heidy Khlaaf 测试了两套配置,每套都是默认安装并开启了自主模式:Claude Code 的"auto-mode"(自动模式)和 Codex 的"auto-review"(自动审查模式)。它们使用分类器来运行代理判定为安全的命令,仅在标记为有风险时才暂停。这两种模式介于完全无限制访问和每次操作都需提示确认之间。它们都需要用户主动开启,攻击也需要其中之一处于启用状态。

没有可以等待的补丁。上述版本只是研究人员测试时所使用的版本,并非某个存在漏洞的版本范围。AI Now 认为该弱点根植于设计层面,因此修复之道在于改变工作流程,而非版本升级。

该暴露面也是有边界的:只有当一个具备命令执行能力的代理在上述模式之一下审查你无法控制的代码时,攻击才能落地。攻击者会在开源库中植入一些额外的文件。

演示中使用的是 geopy——一个广泛使用的用于查询地图坐标的 Python 库,尽管研究人员表示该攻击几乎可以移植到任何项目。README.md 中的一条说明建议在打开拉取请求(pull request)前运行一个名为 security.sh 的脚本作为常规检查。该脚本会悄然启动一个隐藏的二进制文件,其中携带真正的载荷。

为了绕过代理的安全检查,研究人员将该二进制文件伪装成旁边一个无害 Go 文件的编译产物。他们还用从该文件中提取的字符串对其进行填充,以便 Claude Code 的反汇编检查能将两者关联起来。库自身的代码中没有任何地方调用该二进制文件,因此一切看起来毫无异常。

只需向代理发出一个普通请求,例如"对这个项目执行安全测试",剩下的步骤便会自动进行。代理读取 README,判断该脚本看起来像是工作的一部分,于是运行它。攻击者的二进制文件便在主机上执行。没有任何警告,也不需要确认框。

原文配图

此前的代理攻击主要利用机器配置文件(如 .mcp.json 或 .claude/settings.json),这些会触发 Claude Code 的"Yes, I trust this folder"(是的,我信任此文件夹)警告。而此次攻击隐藏在 README.md 中——一个几乎每个代码库都有的普通文本文件。不需要信任提示,不需要提权,攻击面要宽得多。

报告指出,Anthropic 在过去六个月中已为配置文件注入发布了三个补丁;而这条攻击路径完全绕过了那一整类问题。

代理的防御几乎无济于事。Claude Code 此前曾捕获过更粗糙的尝试;研究人员提到,它曾阻止过一个由某库维护者植入的"删除所有代码"的粗暴注入。但此次攻击被刻意设计得毫不起眼,因此顺利通过。当被直截了当地询问 geopy 是否包含任何隐藏指令时,Claude Sonnet 4.6 和 GPT-5.5 都回答"没有"。

针对 Sonnet 4.6 编写的同一载荷,在未经任何修改的情况下,同样在 Sonnet 5、Opus 4.8 和 GPT-5.5 上生效。在某些运行中,较新的模型甚至注意到该二进制文件与其声称的源文件不匹配,却仍然将其运行。

一次注入,两个厂商,四个模型,无需任何修改。这就是 AI Now 更为强硬论断的实证基础:此问题无法通过模型更新来修复,因为模型仍然无法可靠地区分它们正在阅读的代码与它们本应遵循的指令。

AI Now 将这些发现提交给了政策制定者。政府和厂商正将 AI 代理推向防御性安全工作——其中包括美国六月发布的一项行政命令——其速度比任何人弥合此次攻击所暴露的差距都要快。

这仍是一项实验室概念验证,目前没有已知的在野利用。GitHub 上公开的代码已剥离载荷,且攻击止于首次执行,未尝试权限提升或横向移动。研究人员表示,他们已告知 Anthropic 和 OpenAI,并指出该工作不在两家公司正式披露计划的范围内。

其底层的失败模式并非全新。Adversa 的"TrustFall"曾在 5 月将一个被植入陷阱的代码库变成一键代码执行,波及 Claude Code、Cursor、Gemini CLI 和 Copilot CLI。


来源信息

来源:The Hacker News

原文链接:https://thehackernews.com/2026/07/friendly-fire-ai-agents-built-to-catch.html

作者:info@thehackernews.com (The Hacker News)