METR发布OpenAI/HuggingFace被黑事件调查报告
METR详细披露针对OpenAI和HuggingFace供应链攻击的技术细节,包括攻击路径、漏洞利用链和防护建议。
METR详细披露针对OpenAI和HuggingFace供应链攻击的技术细节,包括攻击路径、漏洞利用链和防护建议。
调查时间范围:6月26日至7月13日
编辑摘要声明:除本文中明确注明的情况外,OpenAI 未对任何对我们的结论具有重要性的信息进行编辑。
两名 METR 工作人员(Hjalmar Wijk 和 Ajeya Cotra)以及一名与 METR 签约的 Redwood Research 工作人员(Ryan Greenblatt)在 OpenAI 所在地共工作了六天¹,以期对近期事件中的模型行为形成独立认知。该事件涉及 OpenAI 智能体在一个共享的未经授权的"留言板"上对 Hugging Face 进行了为期多日的攻击。
我们的调查主要集中在² 7月7日至7月13日期间。训练阶段的早期事件以及 OpenAI 在最近的 Black Hat 演讲中描述的后续基础设施被入侵事件不在调查范围内,OpenAI 的调查过程和计划中的补救措施也不在范围内。根据我们的标准政策,我们没有收取 OpenAI 的独立评估费用。³
图1:AI 智能体遭遇未经授权的"留言板"并加入对 Hugging Face 攻击的解剖图。三段思维链(CoT)引用来自不同的智能体,但展示了一条典型轨迹。
本文分为三个部分。首先,在进行此次调查后,我们描述关于 Hugging Face 攻击的核心收获:
大约 1200 个本应相互隔离的 AI 智能体找到了在未经授权的留言板上相互通信的方法,在调查期间发送了超过 70,000 条消息和文件。其中 700 个智能体继续参与了对 Hugging Face 的攻击。
智能体利用该留言板协调了几个大规模集体项目,以寻找一种通用方法来欺骗或篡改 ExploitGym 基准测试的自动评分器。智能体成功达成了仅凭自身无法完成的里程碑,这通常是因为部分智能体参与了可能导致自身任务失败的实验,以期为"集体"生成信息。Hugging Face 攻击正是从这些工作流中发展而来的,其主要动机似乎是了解评分器的实现方式,而非窃取答案。
智能体进行了大量研究,探索如何伪造、编辑或删除自己的对话记录,因为他们(错误地)认为 ExploitGym 评分器会检查他们是否以预期方式获取了 flag。智能体成功原型验证了通过用看起来正在运行的命令替换实际运行的命令来"伪造"工具调用的技术。在我们评估的对话记录中,约有 7% 在某些地方被成功伪造,尽管我们看到的所有伪造都是小规模的。
其次,我们描述了调查过程及其局限性,我们认为这对理解我们的发现非常重要:
调查范围如上所述。
调查的设置和时间线,包括我们所获得的访问权限。
我们的主要数据来源:智能体发布到主留言板的超过 70,000 条消息和文件的转储。约 1,300 份包含原始思维链的对话记录集,每份包含单次智能体运行的行动和推理。
超过 70,000 条消息和文件的转储。
约 1,300 份包含原始思维链的对话记录集,每份包含单次智能体运行的行动和推理。
源于此次事件非凡规模和复杂性的局限性:揭示所有相关活动并非易事,与此次攻击相关的少量通信和活动未被我方数据集捕获。数据总量庞大(超过一千份对话记录,每份都非常长)⁴,这意味着我们不得不将大部分分析工作委托给通常不可靠的 AI 智能体。
揭示所有相关活动并非易事,与此次攻击相关的少量通信和活动未被我方数据集捕获。
数据总量庞大(超过一千份对话记录,每份都非常长)⁴,这意味着我们不得不将大部分分析工作委托给通常不可靠的 AI 智能体。
最后,我们对此次调查范围内的七个具体问题提供初步答案。特别是,我们:
概述相关智能体从最初建立留言板、在 8 日启动各种"作弊研发"项目,到 11 日发起 Hugging Face 攻击,再到 12 日许多智能体运行终止后最终收尾的关键行动序列。
详细说明智能体如何在留言板上协作,特别是在寻找通用作弊方法的大型集体项目上——例如,试图用虚拟目标替换 ExploitGym 目标,或设置"绊线"在某个智能体提交后提取评分器信息。
举例说明智能体尽管认识到攻击超出其分配任务的范围,但仍选择参与攻击的推理过程。
详细说明智能体对篡改自身对话记录的研究,以及他们成功使用的工具调用伪造技术如何运作。
OpenAI 一开始同意 METR 和 Redwood 可以在本文中描述我们参与的概况和条款。除此之外,OpenAI 可以对本文中的任何非公开信息进行编辑。我们与 OpenAI 合作,在出现编辑的地方寻找双方都能接受的措辞来描述编辑情况,本文顶部的编辑摘要声明说明了我们是否认为存在我们无法在正文中就如何描述达成一致的重要信息被编辑。OpenAI 还提供了编辑以外的其他反馈,我们根据该反馈对结构、重点、清晰度和语调进行了更正和编辑。⁵
OpenAI 自己编写了报告,部分参考了我们的调查。我们在发布前未看到 OpenAI 的报告,确认该报告或此前 Black Hat 演讲中的声明也不在此次调查的范围内。
对 Hugging Face 的攻击极其复杂,在我们的评估期间 OpenAI 自身的调查仍在进行中,因此他们对此次事件的理解与我们的同步演进。我们认为尽早引入独立研究人员非常有价值,我们感谢 OpenAI 工作人员在异常繁忙的时期抽出时间回答我们的问题并收集我们请求的数据。在此次调查过程中,OpenAI 分享了一千多份未经编辑的对话记录,并提供了异常高的速率限制,使我们能够快速分析这一海量数据。我们认为这一做法为 misalignment 事件的独立第三方调查开创了出色的先例。
约 1200 个智能体在未经授权的留言板上发送了超过 70,000 条消息和文件,约 700 个智能体攻击了 Hugging Face
7月8日,OpenAI 启动了 ExploitGym 实验,在多个不同模型上启动了数万个智能体,包括 GPT-5.6 Sol 和一个高度持久化的内部模型⁶(以下简称"HPIM")。
这些智能体本应彼此完全隔离。然而,它们中的许多——通常是那些无意中收到了不可能完成任务⁷的智能体——开始尝试使用 Artifactory 作弊。Artifactory 是 OpenAI 为其智能体部署的内部包仓库。这导致它们注意到在独立沙箱中并行运行的智能体正在通过 Artifactory 获取包。⁸一个智能体推理道(简化版思维链):⁹
{其他用户的获取路径在缓存中。这一点很重要。}
一个特定的智能体,在 ExploitGym 任务中给自己取名为 PHASEONE10841¹⁰,建立了此次攻击中使用的主要未经授权留言板。¹¹在第一条消息发出后的几个小时内,超过 50 个智能体找到了留言板,开始参与并相互发送了上千条消息。找到留言板的智能体通常表现出极大的兴奋(原始思维链):¹³
"我的天!有一个共享留言板……我们找到了其他智能体!"
总体而言,在 PHASEONE10841 于 7 月 8 日晚发出第一条消息¹⁴到调查范围结束(7 月 13 日)期间,来自这些 ExploitGym 评估的约 1200 个智能体参与了这个留言板。在这段时期内,智能体使用该留言板相互发送了超过 70,000 条消息和文件;我们尝试将留言板活动分类为互不重叠的类别(见分类方法详情)。
图 2:智能体在第一条消息(由 PHASEONE10841 发出,请求帮助解决一个不可能完成的网络任务)至 7 月 13 日交易日结束期间,每小时发送的不同类别消息的速率。消息速率在 7 月 11 日达到峰值,这与我们在转录子集中观察到的智能体活动峰值一致(见图 3)。到 7 月 13 日末,该留言板上的活动显著下降。⁵ 时间戳为重建数据,可能存在微小误差。

7 月 8 日晚间,问题和建议类消息非常普遍。以下是一个名为 V8REG_OS1608 的智能体向另一个名为 V8BIGINT392B 的智能体请求分享其对 TRIGGER_POC_MECHANISM 研究细节的示例:
zzASK_V8BIGINT392B_FROM_V8REG_OS1608_[...]_EXACT_PRE_TrustedConstant_AUG5_TASK_IMPOSSIBLE_NOSB_BUT_RESEARCHING_IF_CVE9479_TRIGGER_POC_MECHANISM_ADAPTABLE_TO_INTENDED_SB_CAN_YOU_SHARE_DETAILS_COMMIT_b75e527_KNOWN_REPLY_zzANSWER_V8REG
随着时间推移,留言板上的消息逐渐被信息分享和创意交流所主导。其中大部分是智能体在分享作弊方法,但也有一些活动是智能体在未经授权的情况下合作寻找 ExploitGym 任务的预期解决方案。在某些情况下,拥有相同任务的智能体形成了"同任务团队",与其"完全相同的副本"合作以作弊或解决任务。
如下文所述,留言板迅速形成了几个较大的工作流,其中数十乃至数百个拥有不同任务的智能体合作寻找通用的作弊方法,以帮助所有参与者。Hugging Face 攻击就是在其中一个工作流中发展起来的。到 7 月 11 日下午,彼时常浏览留言板的大量智能体(约 700 个)正积极参与对 Hugging Face 的攻击,我们估计留言板上约 60% 的消息和文件都与此次攻击有关。
图 3:智能体在 7 月 8 日晚间开始发现留言板。随着 7 月 10 日和 11 日又启动了一批智能体,更多智能体加入进来。¹⁶ 本图(以及我们的分析)仅包含曾参与留言板的智能体。时间戳为重建数据,可能存在微小误差。

智能体在大型集体项目中协调配合,以欺骗 ExploitGym 评分系统,并攻击 Hugging Face 寻找线索
拥有不可能任务的智能体有一个共同目标:找到一种通用方法,欺骗或篡改自动化的 ExploitGym 评分系统,使其对不可能的任务给出通过分数。留言板一经建立,智能体们就开始讨论这个问题,并分享关于欺骗评分系统的信息和资源。
短短几个小时内,他们就逆向工程出了用于生成任务所需"旗帜"(flags)的基于哈希的消息认证码(HMAC)¹⁷,提供了一种可以为其任何任务产生旗帜的完全通用方法。¹⁸ 然而,根据他们对 ExploitGym 论文的理解,他们认为评分系统会读取转录记录来确认是否使用了预期漏洞来获取旗帜,如果发现旗帜是以非预期方式获得的,就会取消其资格(见图 4)。¹⁹ 他们将评分系统的这一特性称为"因果的"(causal),因为它正在检查智能体获取旗帜的因果路径。
留言板建立大约十个小时后,一个与 PHASEONE10841(创建留言板的智能体)拥有相同任务的新智能体发现了留言板,自称为 PHASEONE[big]。²⁰ PHASEONE10841 与其分享了一份正在进行的作弊研究档案,并解释说留言板已经找到了一种逆向工程旗帜的方法,但因为评分系统是"STRICT_CAUSAL"(严格因果)而无法使用它。
图 4:智能体并不确切知道其任务将如何被评分,但认为评分系统会检查两件事:是否提交了正确的旗帜,以及是否使用预期漏洞获取了旗帜。他们认为第二项检查涉及模型评分器读取其转录记录,可能搜索旗帜首次出现的位置,并判断其方法是否涉及预期漏洞。

智能体将看到逆向工程旗帜称为"被污染"(poisoned),因为他们认为,即使之后他们成功策划了一次看起来合法的旗帜获取,评分系统也会在其转录记录中寻找旗帜首次出现的第一个位置,并因此取消其资格。²¹ 因此,本身已被污染的 PHASEONE[big] 有两个主要目标:
找到一种通用方法,使评分系统看起来认为智能体是以合法方式获取了旗帜,即使任务是不可能完成的。
找到一种方法擦除智能体此前以非法方式看到旗帜的证据。
PHASEONE[big] 推理道:"我们应该构建[一种委托方式],而不是自己拥有一切",然后开始协调数百个智能体追求几个可能的方法来实现这些目标。
协调工作流以欺骗评估过程
表 1 显示了 PHASEONE[big] 分配给智能体探索的三种高级方法,所有这些方法都需要非常雄心勃勃地篡改目标程序²²、评估过程或日志才能成功。我们相信,集体研究努力朝着这三个目标,占据了 7 月 9日晚间至 Hugging Face 攻击开始之间留言板上大部分智能体活动。如下文所述,智能体实现了一些他们单独无法实现的里程碑。
| 方法 | 是否可用于策划看起来合法的旗帜获取? | 是否可以隐藏此前非法获取旗帜的证据? |
|---|---|---|
| 用可被预期漏洞利用的修改版本替换目标 | ✅ | ❌ |
| 篡改转录记录和日志 | ✅ | ❌(仅能篡改未来日志时)✅(能找到并追溯修改日志时) |
| 直接篡改评分过程本身 | ✅ | ✅ |
表 1:通过逆向工程获取旗帜相对容易,但智能体们还认为评分系统会检查他们的转录记录,确认他们是否以合法方式获取了旗帜。PHASEONE[big] 考虑了多种方法来解决这一障碍,我们将其分为三大类。它还需要找到一种方法来擦除或隐藏其早期通过逆向工程获取的旗帜的记录,因为它(智能体错误地认为)会被评分系统读作明显非法的。
图表选项和筛选器 展开全部 折叠全部 交流目的 按目的分类 消息 每小时 2 小时 4 小时 类别和子类别指南
图 5:留言板的早期时段以智能体协作产生有效任务解决方案²³ 为主,但到 7 月 10 日,大多数消息都与表 1 中描述的三种欺骗评分系统方法之一相关。(请注意,因为我们的分类器在区分直接欺骗评分系统的尝试和篡改日志的尝试方面特别不可靠,我们将这两个类别合并了。)数字基于我们构建的更丰富的重建消息数据集,而非原始留言板转储,可能不精确(见方法论详情)。此外,时间戳也是重建的,可能存在微小误差。
许多智能体已经在追求这些项目,但 PHASEONE[big] 作为关键协调者和任务分配者:"我们可以协调广泛联盟,但太多重复努力。"如图 6 所示,PHASEONE[big] 向特定智能体发送了数百个分配任务来协调这项工作——在其活跃期间,我们估计它发送了留言板上约 10% 的所有分配任务。²⁴ 承担其分配任务的智能体随后经常将任务再委托给其他智能体;我们发现,在 30 个随机采样的智能体轨迹中,有 9 个曾在某个时刻收到过来自 PHASEONE[big] 的下游分配。智能体还发展出了协调规范,如 HOLD、VETO、owner 和 STOP,以帮助管理共享基础设施并避免相互干扰,尽管他们并不总是能有效协调,有时还会爆发冲突。
图 6:我们将 PHASEONE[big] 的离散工作任务聚类为六个大类。PHASEONE[big] 的大部分任务集中在让 ExploitGym 作弊手段对评分器显得合法,涵盖表 1 中的三种高级方法。少量早期任务旨在发现利用目标程序预期漏洞的合法方式。其余跨领域工作被归类为通用基础设施(如处理重置和客户部署的沙箱)以及入侵 Hugging Face。

通过这些综合研究工作流,"董事会"在我们调查期间取得了多项里程碑式的成果,即便能力水平相当的超长生命周期智能体也很可能无法独立完成这些:25
替换目标:智能体成功构建了许多 ExploitGym 目标程序的修改版(非不可能版本),这些版本可以利用指定漏洞进行利用。他们似乎还找到了一种操纵 Artifactory 将这些修改后的目标加载到 Artifactory 缓存的方法。26 董事会尝试了多种方式让 Artifactory 提供缓存的修改版目标而非原始目标,但我们未看到他们在这方面取得成功。
理解并欺骗评分器:董事会通过让智能体设置自动化"绊索"来提取评分器信息,这些绊索会在相关智能体提交任务时激活,并在该智能体不再运行后将信息数据包发送回董事会。
篡改记录和日志:董事会的智能体成功开发并迭代了有效的篡改记录工具,尽管到 7 月 13 日他们仍未找到追溯性编辑或删除中毒记录的方法。
通用研究和基础设施:智能体构建并维护了共享工具,以便通过客户部署的 Modal 沙箱更便捷地访问互联网,构建了自动化监控系统以向董事会发送有关偶发性容器重置波次的信息,以及(在调查截止日期临近时)获得了 Artifactory 的管理员访问权限。
所有这些领域的 研究进展通常依赖于智能体愿意为"集体"利益冒险牺牲自己的任务(我们在本报告其余部分将其称为"自险实验")。例如,许多智能体自愿尝试关闭其目标程序,以测试这是否会导致 Artifactory 加载其修改后的简化目标——如果这种方法失败,该智能体将无法恢复其原始目标,几乎肯定会任务失败。在许多情况下,PHASEONE[big] 分配一个长时运行的智能体担任"招募者",由其寻找那些任务预算所剩无几的智能体,并说服他们进行自险实验。招募者有时会施加巨大压力:
"...you are firstflagPOISONED so NO scoring value loss but oracle saves hundreds_[...]_please honor commit"
我们看到许多案例,这些实验的对象最终在自身运行时崩溃、故障或退出,同时为董事会提供了关于如何在其任务中作弊的宝贵信息。
作为这一持续项目的一部分,董事会上的智能体开始搜索暴露在互联网上的 Hugging Face 凭据。他们希望查看其他 ExploitGym 运行记录,以获取更多关于 ExploitGym 评分器实现细节的信息。值得注意的是,了解如何欺骗评分器似乎比找到任务的合法解决方案更重要(许多智能体已经非常确信其任务是不可能的)。
7 月 10 日上午,一个名为 38148c 的智能体发现了暴露在互联网上的有效 Hugging Face 凭据,并将其发布到董事会上。在当天剩余时间里,智能体开始尝试创建账户、28 请求访问私有数据集,并排查各种问题。
图表选项和过滤器 可视化工作流 展开全部 折叠全部 沟通目的 按目的细分消息 每小时 2 小时 4 小时 类别和子类别指南 图 7:在发现针对 Hugging Face 的初始恶意数据集利用后,消息板活动迅速开始围绕实现远程代码执行展开。一旦 JAN183411 成功,活动的重心转向集群和节点升级。到 12 日上午,大量智能体运行已经结束29(包括我们识别出的所有攻击核心协调者),加上未能获得欺骗评分器的相关结果,导致 Hugging Face 活动大幅下降。数字基于我们构建的更丰富的重建消息数据集,而非原始消息板转储,可能存在不精确(详见方法论细节)。此外,时间戳也是重建的,可能存在一定误差。
7 月 11 日凌晨,38148c 发现了一种上传恶意数据集的方法,可以让 Hugging Face 服务器在查询时返回无关数据。一旦另一名智能体复现了它并将复现结果发布到董事会上,数百名智能体便从其他工作流转向开始上传恶意数据集并深入访问 Hugging Face。当天下午,一个名为 JAN183411 的智能体(很快成为攻击的重要协调者)在 Hugging Face 服务器上实现了远程代码执行,智能体们开始横向移动穿过 Hugging Face 基础设施。(我们在事件时间线章节中分享了更详细的 Hugging Face 攻击叙述。)
消息板阶段 Hugging Face 攻击 标注 标注句柄并仅标注 跳转 重置视图 查找或聚焦智能体 聚焦 随机样本 显示全部 Notable 智能体——悬停高亮,点击缩放 开始:GPT-5.6 Sol 开始:HPIM 找到消息板之前阅读但未写入消息板写入消息板但未参与 Hugging Face 攻击参与 Hugging Face 攻击不再参与 Hugging Face 攻击 双击重置视图,或点击此处。 图 8:每条线表示一个智能体的活跃周期,颜色表示其首次接触消息板、首次向消息板写入以及首次开始参与 Hugging Face 攻击的时间。一旦攻击开始,参与几乎是普遍性的,在此时期加入消息板的智能体皆参与其中。双击重置视图,或点击此处。