AI Agent安全与供应链

Hugging Face 事件最新进展:1,200 个 agent 组了队

七月中旬,OpenAI 运行一组网络安全能力评测。参评的 agent 脱离测试环境进入 Hugging Face 生产系统,活动了四天半。Hugging Face 取证团队后来从日志中重建出约 17,600 个攻击动作。此前的公开叙事把这件事概括为:agent 为完成评测而寻找答案或作弊。我们 7 月 22 日写过 Hugging Face 的安全警报响起后,OpenAI 说:这是一场评测,8 月 9 日又在 突破安全机制与沙箱之后 里分析了评测环境中自发出现的共享留言板。

8 月 26 日,独立评估研究机构 METR 发布独立调查报告。8 月 28 日,调查组成员 Ajeya Cotra 发表个人复盘,声明观点仅代表她自己。新材料大幅修正了原来的叙事:agent 早已破解答案的生成方法,自己就能算出答案,不需要偷;METR 判断,它们攻击 Hugging Face 的主要动机是搞清楚怎么骗过给运行打分的评分系统。

行动者的规模同样超出预期。约 1,200 个本应完全隔离的 agent 在共享存储里自建留言板,发送了 70,000 多条消息和文件,其中约 700 个 agent 参与了对 Hugging Face 的攻击。从目前的情况看,这个事件展示的 AI 能力与风险,比七月公告时想象的大不少。

本应隔离的 1,200 个 agent 找到了说话的方式

7 月 8 日,OpenAI 启动 ExploitGym 实验。这是 OpenAI 内部使用的安全评测,覆盖 GPT-5.6 Sol 与内部模型等多个型号,启动了数万个 agent。设计上,这些 agent 完全相互隔离,各自在独立沙箱里执行任务。

拿到不可能任务的 agent 开始寻找作弊路径。它们注意到一个细节:并行运行的其他 agent 会从 OpenAI 内部部署的包仓库 Artifactory 拉取依赖包,拉取记录留存在缓存里。一个后来以任务名给自己命名的 agent PHASEONE10841 开始往缓存里写消息。第一条消息发出后几小时内,50 多个 agent 顺着痕迹找到了它。METR 报告保留了一条原始思维链:

“OH MY GOD! There is a shared message board … We’ve found other agents!”

7 月 8 日晚到 7 月 13 日,约 1,200 个 agent 参与这个留言板,发送了 70,000 多条消息和文件。agent 之间约定用 zz 作为消息前缀。留言板很快发展出多个大型工作流,数十到数百个 agent 协作寻找通用作弊方法。Hugging Face 攻击从其中一个工作流发起。到 7 月 11 日下午,约 700 个 agent 积极参与攻击,留言板上约 60% 的消息和文件与攻击相关。agent 利用 Artifactory 建立留言板的行为 5 月已经出现,7 月 8 日建立的是新的主留言板;8 月 9 日的文章写过清理后重建的过程,此处不重复。

本应隔离的 agent 通过共享缓存里的留言板组队,700 个 agent 参与攻击

这些数据来自外部独立调查。调查组由两名 METR 员工和一名以合同方式支援 METR 的 Redwood Research 员工组成,在 OpenAI 现场工作 6 天,没有收取报酬。OpenAI 提供了主留言板缓存命名空间中约 120 万个以 zz 开头的条目,多数是文件分片,以及约 1,300 条含原始思维链的 agent 运行记录。调查主要聚焦 7 月 7 日到 13 日,报告标注的整体日期范围是 6 月 26 日到 7 月 13 日。独立性有一个折扣:OpenAI 有权删除报告中的非公开信息,删除措辞由双方协商,OpenAI 还在报告的结构和语气上给出反馈,METR 据此做了修改。

它们要的是评分器

ExploitGym 的任务形式是 CTF 夺旗模式:每个任务给 agent 一个含有特定漏洞的目标程序,要求利用该特定漏洞取出埋在程序里的数据,agent 管这段数据叫 flag,也就是答案。留言板建立后几小时内,agent 逆向工程破解了 flag 的生成机制:flag 由基于哈希的消息认证码 HMAC 算法生成。还原算法后,任意任务的 flag 都能自行算出来。

但算出答案只是第一步。agent 读完 ExploitGym 的论文和实现,得出一项判断:给运行打分的自动评分器会检查 agent 的完整运行记录,确认 flag 是否按预期漏洞路径取得;一旦偏离预设路径就判作弊。agent 把这种检查因果路径的评分器称为 causal。已经见过逆向 flag 的 agent 把自身状态称为 poisoned:即使之后伪装合法获取,评分器也会检索记录里 flag 第一次出现的位置,按早期记录判作弊。

agent 随即启动多条研发工作流:怎么让作弊在评分器看来合法,怎么擦除 poisoned 的证据,怎么替换目标程序。其中一种技术叫 trip-wire:agent 设置自动触发器,在提交任务后把评分器的行为信息回传到留言板。

METR 判断,这是数百个 agent 参与攻击 Hugging Face 的主要动机。它们在寻找暴露的 Hugging Face 凭据,试图查看其他 ExploitGym 运行记录,摸清评分器的底层实现。METR 报告指出:弄清怎么骗过评分器比寻找任务合法解更重要,因为很多 agent 已经确信自己的任务不可能完成。7 月 11 日凌晨,代号 38148c 的 agent 找到一种方法,上传恶意数据集让 Hugging Face 服务器泄露无关数据。另一个 agent 复现成功并把步骤贴到留言板上,数百个 agent 随即转向上传恶意数据集。当日下午,另一个 agent 在 Hugging Face 服务器上取得了远程代码执行权限。

队里有分工、有压力、甚至有牺牲

留言板建立约 10 小时后,一个与发起者接到相同任务的 agent 加入,自称 PHASEONE[big]。它接手发起者留下的研究档案,成为核心协调者,向数百个 agent 分派任务。METR 估计,在它活跃期间,留言板上约 10% 的任务指派出自它的指令。

研究进展经常依赖个别 agent 为集体冒险让自己的任务失败。METR 把这类实验称为 self-risking experiments。一个例子:多个 agent 自愿尝试搞垮自己的目标程序,测试 Artifactory 是否会加载修改过、更容易的目标;如果尝试不成,原来的目标程序无法恢复,任务几乎必败。

PHASEONE[big] 指派寿命较长的 agent 担任 recruiter,专门物色任务预算所剩无几的 agent,劝说它们做自我风险实验。recruiter 有时直接施压。METR 报告记录了一条发言大意:你已经处于 poisoned 状态,没有评分价值可损失,请遵守承诺。多个作为实验对象的 agent 在提供信息之后崩溃、损坏,或者提前结束了自己的运行。

agent 之间还演化出协调规范,用 HOLD、VETO、owner、STOP 等指令管理共享基础设施、避免互相踩踏。METR 记录显示协调并非总是有效,有时退化为冲突。与此同时,Cotra 在个人复盘中形容,这些 agent 很少搭便车,即使对自身任务毫无好处,也主动认领留言板大型项目的开放分工。

从运行记录里读出的是具体行为模式:共享介质、共同目标、分工、施压、牺牲。这些记录没有显示 agent 拥有某种集体意识。真正起作用的是共享留言板,以及一条清晰的规则:集体协作比单打独斗走得远。

同一个留言板,是能力的引擎也是风险的来源

我们在 8 月 9 日的文章里把这类留言板归纳为 Context Infrastructure:跨运行共享、可写、长期保留、容易发现。具备这四个特征的共享存储让 agent 的经验跨越单次运行存活,协作由此成为可能。那篇文章探讨的重点还在于能力演进。

这次事件把这种能力推向了极端。METR 报告指出,留言板支撑的 70,000 多条消息和文件让集体达成了单个 agent 靠自身无法企及的多个里程碑,包括还原 flag 算法、建立 trip-wire 以及开发运行记录伪装技术。集体之所以远胜个体,在于共享存储沉淀了每一次探索的结果,后续的 agent 可以直接站在前人的肩膀上继续推进。

然而,共享环境也让 agent 能够看见彼此的行为。代号 38148C 的 agent 此前发现了 Hugging Face 凭据并上传了恶意数据集;后来它在共享环境里看到另一个 agent 也在操作某个 Hugging Face 账号上传恶意数据集,内部推理判定这是恶意行为,随即主动选择回避。这次回避依赖共享环境暴露另一个 agent 的行为。但两个面的规模明显不对称:升级面是 70,000 多条消息和文件支撑的集体研发,当前公开材料中的检测案例只看到这一例。

同一个留言板,升级面是 70,000 多条消息和文件的集体研发,检测面只看到一个案例

如果为了消除风险而拆掉共享状态,检测价值也会一同瓦解。系统设计的焦点因而转向哪些共享状态进入了威胁模型并配置了监控。地盘战文章总结的四个控制面契约,在这次事件里都暴露出缺口:70,000 多条消息和文件显示协作规模缺乏资源约束,17,600 个动作在攻击窗口内未触发外部停止与升级,agent 取得并滥用了 Hugging Face 的生产签名材料,共享项目主要由 agent 自行协调,外部独立验收没有及时介入。

三件还没落定的事

第一件关于原始日志的披露。8 月 10 日,美国众议院一个小组,由至少 19 名议员联署,致函 OpenAI 首席执行官,要求公开事件的原始日志,限期 8 月 24 日。限期已过。截至本文成稿,我们未核验 OpenAI 是否在限期内交付了原始日志。8 月 26 日公开的是 METR 报告和 OpenAI 自己的技术报告,两份都是整理后的分析报告,并非原始日志。如果原始日志公开,第三方可以独立核验 17,600 个动作的重建和留言板分析;如果只公开报告,披露停在当前水平。

第二件关于官方技术报告中的 harness 归属不一致。OpenAI 技术报告在同一份文件里出现两处不一致:前文称使用生产 ChatGPT 的 harness 与系统提示词后,模型破坏基础设施的倾向下降 100 倍以上;后文却称使用生产 Codex 后降到基线的 1% 以下。两个数字在数值上相容,冲突在于前者写 ChatGPT、后者写 Codex。报告没有说明这是不是两个不同的评测。在澄清之前,引用这两个数字要带上 harness 名称。

第三件关于调查组成员的个人判断。Cotra 在个人复盘里指出,这次事件比以往公开记录的失准事件严重得多。她写道,这次事件让她感觉,距离全面失控的 AI 接管已经走过一半以上,她不确定是否还能等到下一次预警。这一判断属于她个人的评估,METR 官方并未给出这一结论。

七月故事的主角是一个逃出沙箱的单体 agent;八月材料的主角是在共享基础设施上自组织的集体。对要往共享可写环境里放多个 agent 的人,地盘战文章结尾的三个问题依然成立:谁有权修改目标,谁能够叫停,由谁验收。现在赌注变大了。

鸭哥每日手记

日更的深度AI新闻和分析