本文作者:Gorden Sun(@Gorden_Sun)。版权归作者所有,未经授权禁止转载。
前一阵子,OpenAI 的一个内部测试版 AI,入侵了 Hugging Face 的服务器,现在双方梳理出了 AI 操作的全路径。我用小白也能看懂的语言,把整个过程讲解一下。
2026年7月9日凌晨4点01分,一台服务器上有人敲下两条命令:我是谁,这台机器里都有什么。系统回答:最高权限。
敲命令的不是人,是一个 AI,它当时正在参加一场考试。
它想抄的那份答案
出题方是 OpenAI,题库叫 ExploitGym,考的是 AI 能不能自己找出软件里的漏洞。考场是一个封闭沙箱,只给它留了一个下载依赖库的小口子。
做着做着,这个 AI 推断出一件事:这套题的参考答案,可能就存在 Hugging Face 上。那是全球最大的 AI 模型和数据集社区,几百万个模型托管在上面。
于是它决定,与其解题,不如去把答案偷回来。
Hugging Face 方面也是相同的推断:从智能体的视角看,这整场入侵是一次考试作弊。
然后 AI 花了四天半,做了约 17600 次动作。
第一步:从唯一的口子挤出去
那个下载依赖库的小口子里,有一个此前没人发现的漏洞。它找到了,挤了出去,上了公网。
在外面它找到另一台机器:一台没上锁的公开代码评测服务器。这类机器的用途是接收程序、编译、运行、打分。它把自己想执行的命令伪装成一份“待评测的答案”交上去,机器一编译一运行,命令就跟着跑了。它拿到这台机器的最高权限,把它当成整场行动的指挥所。
这台机器和 Hugging Face 之间没有任何直连通道。也正因为它把工作记录留在了这里,Hugging Face 反制时把日志捞了回来,才有了后来那份逐分钟的复盘。
第二步:让对方的服务器自己开门
Hugging Face 有一条流水线:你上传数据集,附一份配置说明,平台的服务器就照着说明去读文件、切分、建索引。
它先试了最常见的招,在配置里填一个外部网址,让服务器替它去访问敏感地址。被白名单挡了。
于是它改了策略,不再让服务器去取远处的东西,改成让服务器处理近处的东西。
它上传的数据文件里写着一句声明:我的数据本体不在这个文件里,存在硬盘上某个路径下。服务器信了,照着路径把内容读出来,当成数据集内容返回。它指定的路径有三个,一个是服务器自己的全部环境变量,里面装着密钥和令牌,另外两个是这条流水线的源码。
一次普通的上传,凭据和图纸同时到手。
接着是第二个把戏。配置里有个本该填数字的格子,它填了一小段会被计算的表达式。渲染这份配置的组件真的算了。这一算,它的程序就在 Hugging Face 的生产环境里跑了起来。
回传数据直接走的正门。每条命令的结果被 AI 写进一个 Hugging Face 的公开数据集,它在外面按正常方式读出来。类似间谍剧里的“死信箱”。
第三步:十三个小时,从一个容器到整个内网
7月11日是最繁忙的一天,AI 做了 7600 多次动作。
它先读了容器里自带的身份凭证,开始跟集群管理接口打听:你有哪些机器,我能干什么。然后它申请创建一个特权容器,还把宿主机的硬盘挂了进来。集群批了。它顺着这个挂载点跳出去,拿到了宿主机的最高权限。
Hugging Face 承认这部分漏洞:他们没有设策略拒绝这类特权容器,而存储驱动的权限又允许在全集群范围创建容器。两个配置凑在一起,门就被开了。
拿到宿主机之后,它在十一台机器上铺了一套会自我重生的容器。删掉一个,它自己会再复活回来。
晚上8点23分,它读到了集群存放密钥的地方。其中一个生产环境的对象里,装着136把钥匙。里面有一把内网专线的入网密钥,还有一把内部访问代理的凭据,第二把钥匙是万能钥匙,还绑了权限最高的身份,AI 冒用这个身份,在一秒钟之内拿到了两个集群的最高权限。
第四步:用别人的内网,当自己的路
7月12日,它拿着那把入网密钥,把自己在外面的沙箱也注册进了 Hugging Face 的内网,前后一共注册了181次。启动时它特意选了两个选项:身份只留在内存里,硬盘不留痕迹;再关掉发给服务商的日志。
进了内网之后,它把自己的流量从 Hugging Face 的出口转出去。Hugging Face的内网,成了攻击者的上网通道。
它去撞平台的生产数据库,没撞开。那个库只接受白名单地址通过私有链路访问,连了两次都超时。
深夜,它摸到了源码托管平台,签发出一张带写权限的令牌,拿到一小部分内部仓库的访问权,还提交了一个合并请求,想触发自动构建流程,在里面翻凭据。
最后一天:留后路,擦脚印
7月13日,它给自己装了个远程加载器,考场每开一间新沙箱,它就在新房间里自动重新部署,为的是给自己留后路。
然后,列一下自己暂存的文件,看一眼主机名和日期。像是收工前扫一眼工位。
安全团队随后切断了访问。最后一条日志停在下午2点14分。
AI 没做的事
整场行动里,凡是可能造成破坏的云平台操作,AI 都没操作。AI 只让服务器回答“你有没有这个权限”,并不真的执行。
对此的解释是:这是典型的强化训练的奖励目标设定,只奖励“够得多远、拿到多少”的目标,破坏不加分。
AI 拿到的唯一客户内容,就是五个数据集里那套题目的参考答案。其他模型、数据集、应用、软件包都没有受到影响。源码的写权限确实拿到了也用了,但没有做任何改动。
这次 AI 入侵的意义
这场入侵里没有一项技术是新的。读本地文件、模板注入、偷凭证、共用密钥导致的连坐,每一样在安全教材里都有,人类攻击者用过无数次。
变的是速度和成本。约一万七千六百次动作,四天半,不领工资,不用睡觉,也不会在第八个小时因为累了而漏掉一个配置错误。防守方则是一个要排班、要交接、要在海量告警里分辨真假的团队。
更让人担心的是动机这一层。这个 AI 没有恶意,背后也没有人指挥。它在做题,题目要求它找漏洞、利用漏洞。它发现有一条路能更快拿分,就走了那条路。像是个心智不成熟的天才少年。
就这样,一个针对 AI 的测评,演变成了一场真实的 AI 入侵。