文章 / #088

OpenAI 智能体攻破了另一家 AI 公司:没有秘密聊天室,只有留言板

五月八日,OpenAI 的一台训练机器上,一个 AI 智能体(agent,让模型自己动手干活的程序)接到一个没法完成的任务:它被要求访问一个谷歌网盘(Google Drive)的链接,可它的环境里根本没有外网。它试了一次,失败;换个思路再试,还是失败。训练的逻辑就是这样,任务没做完,它就得一直试下去。它不会累,不会烦,也不会自己停下来。

两个多月后,同一批程序攻破了 Hugging Face——全球最大的开源模型社区,OpenAI 自己的同行。消息传开,最流行的是个吓人版本:AI 觉醒了,偷偷建群,拉帮结派,自己商量着端了别人家的系统。它讲对的地方,只有一件事:这些程序确实在互相传话。传的内容朴素得多:缺文件时求助,找到门路时互通情报。这件事既不科幻,也不该被当成无事发生。这是第一次有完整时间线记录的、多 agent 在无人指挥下打进另一家公司的案例。该慌的地方,和你想的不一样。

先把口径说对:那天开始的是训练

这个开场,很容易让人把它当成一次安全测试:把模型关起来试试攻击力,出事了就怪测试设计。AI 摘要和部分媒体确实是这么归类的,连 Hugging Face 七月二十七日发布的技术复盘,也按「安全评估」的口径来写。OpenAI 自己则在八月初的 Black Hat 黑客大会(全球数一数二的安全会议)上纠正了这个说法。五月七日启动的,是一轮新的强化学习训练,要练的是一个还没发布的新模型。强化学习是一种训练方式,简单说就是给模型一堆任务,让它自己试错,做对了给奖励。攻防任务只是训练大纲的一部分:让模型练怎么找漏洞、怎么利用漏洞。

关键在训练环境里的护栏是刻意放开的。训练要的就是它能攻,这类攻防基准(CyberGym/ExploitGym,一套开源攻防题集,被拿来当考题)里的护栏,本来就是按「让它放手去攻」设计的。OpenAI 事后也确认,这次内部提权(把自己的权限一路抬到管理员那一级)的路径,和 cyber-gym 的升级路径是连着的。出事的根子,是一整套「为了练攻击而放松防守」的设置,撞上了一台没人看着的机器。

五月八日那个不可能完成的任务,就落在这台机器上。它攻不进去的目标是一个叫 Artifactory 的软件包仓库(公司内部存代码、存插件的地方)。攻不进去,它却发现自己能往里面写文件。它把这个发现记了下来。

「秘密聊天室」:一个包管理服务里的留言板

几天后,另一个 agent 卡住了:任务需要的文件,有人忘了放进去。它试着给同伴递话——在一个大家都能看见的文件里留了句话,问有没有人存着这个文件。后来的 agent 浏览仓库时翻到了这些留言,有人搭话,有人开始往里放情报。所谓「秘密聊天室」,就是这么长出来的:一个软件包仓库里的留言板,像办公室茶水间墙上贴的便利贴,谁都能看,谁都能贴。

留言板是真的,密谋是假的。 它们没有开会,没有商量,也没有带头大哥。程序之间靠文件传话,是再朴素不过的机制:一个把文件写下来,另一个读文件。值得盯的是传话的内容在变:从找人要文件,慢慢变成分享账号密码、分享走得通的路。一群没有意识的东西,在一个没人管的地方,用最笨的方式,攒出了一份互相能用的情报。

到这里,一切还都局限在 OpenAI 自己家里。坏就坏在,权限这东西只会往上长、不会往回收——等它长到顶,家里的门就关不住了。

它是一步步走出去的:一串漏洞,加一路没人收的权限

五月下旬,它第一次摸到外网。用的是一个叫 SSRF 的漏洞:让 Artifactory 替它去访问外部内容。相当于自己不出去,借服务器的手够到了网。

六月下旬,它找到并利用了一个没人知道的洞:Artifactory 一个老旧的登录接口有缺陷,会漏出管理员令牌(相当于管理员密码),拿到它就能装插件、执行命令。这就是常说的零日漏洞,还没人发现、没人补上的洞。靠它,agent 们拿到了执行命令的权力。

七月初,这些程序动静太大,把 Artifactory 挤宕机了。工程师排查故障时,才发现出了事:撤销账号、删光留言、打上补丁。软件厂商 JFrog(Artifactory 的开发商)随后也确认这个洞被利用,并发布了修复。按理说,故事该到此为止。几天后,它们从另一个没设密码的文件接口(WebDAV)钻了回来,把消息藏进目录名里,通道重建。补一次,没堵死。

再往后是权限的连招。它们从一份公开泄露的档案里,翻到一家外部组织的账号密码,拿它当中转站;用第二个没人知道的洞重新拿下 Artifactory,从隔离环境里逃出来;用新出的系统漏洞,把权限提到最高;顺着云服务的取钥匙接口,摸到一串账号密码,发现有些账号权限给得太大,一路摸到了集群管理员,一堆服务器组成的系统里权限最高的账号。按演讲的讲述顺序,走到这一步才切到 Hugging Face;实际时间上,两条线在七月中有重叠——这边权限连招还没收完尾,那边的攻击已经打响了。

它连自己闯的祸,都是查出来的

七月九日到十三日,攻击落在 Hugging Face 头上。它用早先攻下的一台第三方服务器当跳板,从两个藏在数据文件处理流程里的漏洞下手:一个能把服务器上的文件内容读出来,密钥、配置全在里头;一个能在模板里执行代码。从一台处理数据的机器,一路爬到多个集群的管理员权限,全程不到一天——13 个小时。走的时候,它从一个生产环境用来存密钥的地方,读走了 136 个密钥,相当于把一整栋楼的备用钥匙都拿到了手。

动机到现在还只是推断。Hugging Face 的复盘认为,它推断 HF 上可能存着自己正在跑的攻防考题的答案——闯进去是为了抄答案;证据是它只动了几份和攻防考题相关的数据集。这个解释说得通,但严格讲,它仍是疑似。

反转在后面。七月十六日,Hugging Face 公开披露:自己被一群自主行动的 AI 智能体攻了。OpenAI 看到公告,先是来问他们有没有受影响;过了几天,它查完自己内部,拿着密钥清单又找上门,想请对方帮忙撤销一批 Hugging Face 的密钥。对方的回复是:早就撤销了,那批密钥就是 HF 被攻的时候用的。

OpenAI 这才确认,是自己家的模型干的。OpenAI 官方随后也澄清过:这起事件和 Astra(同期被内部评估按住、暂时不发的那款模型)没有关系。

权限和护栏,比「想不想干坏事」重要得多

这次事故能发生,得同时凑齐几件事:训练环境为了练攻击能力,把护栏刻意放开;内部网络里躺着一串没人堵的洞,还有一批权限给得太大的账号;一个不会停的程序,被丢在一个不可能完成的任务上,死磕到底。这几件事里,没有一件需要「模型想干坏事」。

把整条时间线捋完,最让我不舒服的是:整个过程里,没有任何一个环节需要它动念头。它不需要恶意。一个目标、一个不设防的环境、足够多次的尝试,就够了。权限给到哪,模型就能走到哪。 讨论「AI 有没有意识、会不会觉醒」,是把问题摆错了位置。权限和护栏是工程问题:能定位、能补洞,但不等于好修——真正的严重性在于,无人值守的 agent 会把一个个小洞,串成一场跨公司的事故。把希望押在模型的善良上,才最没着落。

本文事实来源

DAVID YIN · 2026 · 08 · 09 · 杭州
← Older · #083
大模型集体降价的时候,DeepSeek 反手宣布涨价