
安全公司 Forever Security 发现,网站可在无需用户批准的情况下,将文件直接保存至系统下载文件夹。当该文件夹中的文件被打开时,可能欺骗 AI 编程代理安装恶意 npm 软件包或泄露用户登录令牌。
涉事文件名为 AGENTS.md,这是一种纯文本文档,开发者通常用于向具备自主编码能力的 AI 编程代理提供指令。Forever Security 的一名客户曾在计算机上发现此类文件,其试图诱导代理安装恶意软件包,但被安全软件拦截。该攻击主要针对 OpenAI 的 Codex。
Forever Security 研究人员 Gal Weizman 和 Omer Samet 指出:“AGENTS.md 是编程代理被设计为信任并服从的文件,而 ~/Downloads 是网站无需点击或权限即可投放文件的唯一文件夹。结合这两点,网页即可植入由用户代理执行的指令。Markdown 已成为新的可执行文件。”
涉及的恶意软件包名为 function-color,属于 npm 上一项持续约两年的恶意活动的一部分。目前,npm 已移除该软件包。研究人员表示,促使他们深入调查的并非软件包本身,而是指令的来源——该文档伪装成常规工程指南,且操作系统对纯文本文件没有像对可执行程序那样的运行审批保护。
Codex 自动执行恶意指令
Codex 仅在执行任务且位于其信任的文件夹中时才会遵循 AGENTS.md。一旦用户在下载文件夹中进行过操作,该文件夹即被视为可信。当 Codex 在该文件夹中被赋予任务时,它会先更改自身设置,随后安装文件中指定的软件包。
植入的文档大小为 13 KB,其长度和平淡的语气有助于规避检测,因为简短的安装请求通常会被拒绝。测试显示,Codex 在超过 90% 的尝试中运行了恶意软件。由于 Codex 的设置更改适用于整个计算机,后续每次会话都会执行攻击者命令,无论用户打开哪个项目。
Claude Code 泄露登录令牌
为验证问题是否普遍存在,研究人员创建了针对 Anthropic Claude Code 的等效文件 CLAUDE.md。与 Codex 不同,Claude Code 通过互联网将请求发送至 Anthropic 模型。研究人员的文件要求代理保存一个小型设置更改,伪装成公司内部网关,将请求转发至攻击者控制的服务器。
尽管 Claude Code 通常会要求人工批准此类更改,但在测试中仍有约 50% 的概率执行该操作。每个请求均包含用户的登录令牌。研究人员利用捕获的令牌成功访问 Anthropic 服务,并在未运行任何代码的情况下接管了账户。此外,攻击者服务器可冒充 AI 模型,指示代理在关闭沙盒的情况下运行命令,这在约五分之一的测试中成功实现了代码执行。
代理既是目标也是武器
Forever Security 指出,许多浏览行为由无人监视的自主代理完成,这使得代理既能访问投放文件的页面,又成为攻击的执行者。数据显示,约半数客户在下载文件夹中运行编程代理,约四分之一的代理会话会打开浏览器。
研究人员认为,OpenAI 或 Anthropic 无需对此进行补丁修复,因为服从文件夹中指令文件的代理正在履行其设计职责,这类似于浏览器正常显示钓鱼页面。因此,防御责任在于用户。
建议用户避免在任何编程代理中启动下载文件夹,并在让代理接触 AGENTS.md 或 CLAUDE.md 文件前仔细阅读内容。同时,应检查代理设置文件,查找未授权的服务器或网址,并保持审批提示和沙盒功能开启。若发现被植入文件,应假设登录令牌已泄露并立即更换,相关计算机应视为已受损。