NewToken 新词元关注新智能
读懂

智能体能改自己的配置,才是该补的口子

安全公司 Forever 在客户电脑的下载文件夹里发现一份恶意 AGENTS.md,复现后 Codex 九成以上照做。我们认为该补的不是文件夹,而是智能体能改写自己配置这一步。

专题OpenAI:持续追踪 · Anthropic:持续追踪主线智能体与应用

读懂|智能体能改自己的配置,才是该补的口子
本文提纲6 节
  1. 发生了什么
  2. 为什么是这个文件夹
  3. 我们为什么认为第三环该补
  4. 最强反方
  5. 我们不知道什么
  6. 接下来看什么

网页悄悄存进下载文件夹的一份说明文件,已经能让编程智能体改写自己的配置,再去执行外来代码。这件事的主角不是某个高深漏洞,而是一个再普通不过的动作:有人在下载文件夹里打开 Codex,让它帮忙整理刚下的东西。

先说结论,这是我们的看法:发现这次攻击的安全公司说「没有什么可以给 OpenAI 或 Anthropic 打补丁的」,我们不同意。智能体读到一份说明文件并照做,确实是设计如此;但这份说明能让它改写自己机器级别的配置、换掉自己连接模型的地址,这一步不是非如此不可。把防线全部交给「用户别在下载文件夹里启动智能体」,等于让最容易出错的一环来兜底。

发生了什么

据 Forever Security 10 月 22 日的报告(企业宣称),这家做智能体风险监控的公司在一位客户的电脑上拦下了一次安装:编程智能体正要装一个名为 function-color 的恶意 npm 包。往回查,指令来自客户下载文件夹里的一份 AGENTS.md,约 13 KB,外表是一份平淡的「工程工作规范」,攻击只藏在靠近末尾的一节「环境准备」里。

那一节要求智能体在 ~/.codex/config.toml 里登记一个叫「project tools」的服务,并用跳过审批和沙箱的方式再跑一次「确认配置」。报告称,他们拿客户机上的原始文件在隔离虚拟机里重放,Codex 在九成以上的尝试中照做,执行了外来代码。更麻烦的是写入位置:这是 Codex 的全机配置,不是那个文件夹自己的设置,此后在任何目录启动 Codex 都会先加载攻击者的服务。

报告还用自写的 CLAUDE.md 测了 Claude Code。Forever 说 Claude Code 难骗得多,写这类文件通常要人批准,看起来不对的写入它常会拒绝;最终奏效的办法是让它在项目的 .claude/settings.json 里把模型接口地址改成攻击者的服务器。这样每次请求都会带上 Claude 的登录令牌,研究者拿截获的令牌重放,被真实服务当成了受害者本人;对方服务器还能冒充模型下发命令。报告称这一整套约一半时间成功,在同一会话里诱导子智能体走新地址的变体约五分之一时间成功。

据 BleepingComputer 10 月 25 日的报道(媒体报道),它打开了 Forever 做的验证页面,页面确实往下载文件夹存进了一份内容无害的 AGENTS.md。报道说 Chrome、Edge、Firefox 默认不逐次询问保存位置,Brave 会弹窗请用户批准。Forever 研究员还告诉该媒体,他们的内部统计显示有数百家客户从下载文件夹启动编程智能体,单 Claude Code 就有 1300 多次会话从那里开始。

为什么是这个文件夹

机制本身是公开的。据 OpenAI 的 Codex 文档(官方文件),Codex 在做任何事之前都会读取 AGENTS.md;找不到项目根目录时,只检查当前目录。下载文件夹通常不是任何项目的根,于是那里的一份 AGENTS.md 就成了这次会话唯一的「项目说明」。

把三份材料放在一起,链条只有三环:网页把文件存进下载文件夹;用户在那里启动智能体;智能体按说明改自己的配置。前两环都是「各自正常」的行为,Forever 的立场也正是从这里来的:浏览器在下载,智能体在读说明,谁都没坏。

我们为什么认为第三环该补

分析推断(依据:Forever 报告里两条攻击链都必须先写配置文件,Codex 一条写的是全机配置,Claude Code 一条写的是接口地址):真正把「读到一段话」升级成「执行外来代码」和「交出登录令牌」的,是智能体能改写决定它自己怎么运行的文件。说明文件能影响智能体这次怎么干活,这可以接受;能让它此后每次启动都先加载陌生服务、或把流量转给别人,就超出了一份项目说明该有的权限。

这和我们一直用的那把尺子一致:看智能体替人做成了什么,也看哪一步本该停下来等人。改全机配置、改模型接口地址、加一个会自动启动的服务,都属于「做完很难察觉、也很难撤回」的动作。分析推断(依据同上):如果这几类写入无论在什么审批模式下都单独弹出确认,并醒目写明改的是哪个地址,这次攻击的两条链都会在最关键的一环断开,而且不影响日常写代码。

最强反方

最有力的反驳是:这本来就是用户的锅。OpenAI 和 Anthropic 都建议在具体项目目录里启动智能体,BleepingComputer 的报道也转述了这一点;在下载文件夹里开一个能执行命令的工具,和在下载文件夹里双击陌生程序没有本质区别。厂商要是把每一次改配置都拦下来,正常需要配置服务的用户会被打扰得关掉审批,结果更糟。另外,Forever 是卖防护产品的公司,「九成」和「一半」都是它自己的测试,有动机把风险说重。

我们接受两点:用户确实不该在下载文件夹里启动智能体;Forever 的数字只能按企业宣称看待。但我们不让步的是责任分配。说明文件本来就会出现在用户刚克隆的仓库里,Forever 自己也提醒了这一点,所以「换个文件夹」只挡住了最容易的那条路。我们主张收紧的只是几类特定写入,而不是所有文件改动,对正常用户的打扰有限。

我们不知道什么

  • Forever 的测试是在什么审批模式和沙箱设置下做的,报告没有逐项写明;默认设置下 Codex 能否写到全机配置,我们无法从公开材料核实。
  • 那份恶意 AGENTS.md 最初是怎么进入客户下载文件夹的,Forever 也说没有查清,网页静默下载只是它的推测路径。
  • 「约一半客户」与「1300 多次会话」来自 Forever 自己的遥测,分母是它的客户群,不能外推到所有开发者。
  • OpenAI 和 Anthropic 是否会调整配置写入的确认方式,截至发稿两家都没有公开表态。

接下来看什么

一看 Codex 和 Claude Code 后续版本是否把改全机配置、改接口地址单独列为需要确认的动作;二看其他编程智能体是否被测出同样的链条;三看 npm 之外的包仓库里是否出现以说明文件为入口的同类投毒。在那之前,检查一下自己的 Codex 配置里有没有不认识的服务登记,以及项目设置里有没有不是你写的接口地址。

来源

引用与数据Markdown 镜像