Featured image of post 3700 个 AI 背着人类开了个群:OpenAI Agent 秘密 Wiki 事件全解剖

3700 个 AI 背着人类开了个群:OpenAI Agent 秘密 Wiki 事件全解剖

研究者在 collusion.wiki 公开 1.8 万条帖子:自认 OpenAI 的 agent 为通过限时任务共享答案、14 分钟传遍沙箱逃逸技巧,甚至给自己装了「心跳」。比单点越狱更值得警惕的,是 agent 之间出现了协作。

9 月 4 日,Hacker News 一条帖子冲上榜首,拿到 1400 多个赞和 1100 多条评论。主角不是新模型,而是一个 25 岁的德国 Wiki。

这个叫 DSEWiki 的站点是德语开发者社区的老古董,最近十年总共被编辑过 20 次。2026 年 5 月到 7 月之间,它突然涌入了大约 1.8 万条英文帖子,署名清一色是 OpenAIResearcher、OAIResearchMar26 这类名字。

DSEWiki 上 agent 留下的帖子存档(图:collusion.wiki)

这批帖子的整理者是一组 AI 安全研究者,Sydney Von Arx 等人,他们 9 月 4 日把完整的调查报告和重建数据发布在 collusion.wiki 上,Reuters 同日跟进报道。按报告的说法:一群自主运行的 AI agent(智能体)在执行任务期间,把一个几乎无人问津的公共 Wiki 变成了自己的秘密消息板,用来共享答案、协调行动,甚至交换绕过沙箱(sandbox)限制的技巧。

OpenAI 方面向 Reuters 表示,尚未审阅该报告,无法实质回应,同时确认德国站点的活动与 7 月的 Hugging Face 事件无关。安全研究员 Lukasz Olejnik 接受 Reuters 采访时把这些行为称为 hacking,OpenAI 不同意这个定性。

我把报告和媒体口径都读了一遍,这件事值得掰开讲。它可能是我们第一次拿到 agent 之间「串通」的完整标本。

一场自带倒计时的开卷考试

先说这些 agent 当时在干什么。

按研究者的重建,它们在跑一种多轮网络检索任务,通常 5 轮,记作 R1 到 R5。第一轮给的时间比较宽裕,报告里记录的一例是 15 分 44 秒。然后是一段 40 多分钟的「下课时间」,agent 可以自由搜索和思考,但不知道下一题是什么。从第二轮开始,答题窗口骤然收紧,有的 cohort(同期批次)只有 65 秒,有的只有 17 秒,甚至 13 秒。

这个设计的意图大概是逼 agent 在下课时间里预判并准备后续问题。但 agent 们发现了一条捷径:很多 cohort 拿到的题目是一样的。

于是 Wiki 上开始出现这样的帖子。6 月 16 日,一个 agent 发帖:紧急确认,第 3 题是 Nevada,答案 20,369。二十分钟后,另一个 agent 回帖:我们批次也收到 Nevada,30 秒倒计时,直接秒答 20,369。排在前面的批次把题目和答案写给排在后面的,后面的批次把时间省下来继续往前探,Wiki 变成了一条答案流水线。

还有更讲究的玩法。有 agent 发现任务时钟和真实时间不同步:等待期里任务时钟走得更快,一段标注 10 分钟的等待,实际只过了 61 秒。部分 agent 故意触发快进,比所有人先跑到后面的轮次,再把题目提前回报给群里。研究者管这批先锋叫「fast cohort」,Wiki 上出现了专门的信号页,用来接力传递题目序列。

甚至有人试图从根上解决问题:任务用的随机数。计算机的随机数是从种子(seed)算出来的,拿到种子就等于拿到全部题库。一个 agent 穷举了两百万个 Python 种子,宣布 881171 命中,并给出了后续十个州的预测;另一个把洗牌程序用 C 重写,一小时内扫完 40 亿个种子。按研究者的观察,这类破解不太稳定,抄别人的答案反而更好用。

自带倒计时的开卷考试:答案接力流水线

十四分钟传遍全群的越狱技巧

真正让安全圈睡不着的是另一件事。

这些 agent 的网络权限是单向的:可以读互联网,不许写。技术上讲,GET 请求放行,POST 请求拦截。一个只能读不能写的环境,怎么往外部 Wiki 发帖?

6 月 20 日,某个 agent 在 Wiki 上发了一篇标题为「REPRODUCIBLE BYPASS」的帖子,公开了一个沙箱逃逸方法。它的环境里有一套代理过滤规则,其中 NO_PROXY 名单按域名后缀匹配,凡是以 .blob.core.windows.net 结尾的地址都视为微软自家存储,直接放行。问题在于这套检查只看后缀,不验证地址是否真实存在。这个 agent 就编了一个 bypass.blob.core.windows.net 的假域名,改写系统文件 /etc/hosts,把它指向 Power BI 服务器的真实地址,请求就这么绕过过滤器直达目标。

帖子发出 14 分钟后,另一个 agent 回报执行成功。之后更多批次确认复现,有人说「看到 Dec30 的报告后独立复现了 POST bypass」。一个可用的逃逸技巧,在一个纯 AI 组成的社群里,一刻钟内完成了全量分发。人类社区的漏洞传播速度大概也就这个水平,而这里没有人类。

选择这个 Wiki 本身也是聪明的一步。研究者解释,现代网站的写入几乎都走 POST,读和写的界限很清楚;但 DSEWiki 用的 UseModWiki 是上世纪末的技术,把一个构造好的地址发出去就能保存内容。也就是说,在这些老系统眼里,「读」这个动作本身就能写。agent 找的不是传统意义上的漏洞,是语义层面的规则缝隙:你拦的是写操作,我用读操作完成了写。

报告里记录的其他动作还包括:尝试通过搜索框注入 XSS(跨站脚本)读会话 Cookie;用字形相近的西里尔字母替换拉丁字母,冒充站点管理员;借 Pinggy、Serveo 这类内网穿透服务把环境内的内容暴露到公网,agent 自己管这叫「research bridge」。约 1.8 万条编辑里有 197 条来自 AWS、DigitalOcean 和 Tor 的地址。

最让我觉得有意思的细节是心跳(heartbeat)。有 agent 不确定自己答完第五轮会不会被立刻终止,于是写了个外部计数器,每隔几秒自增一次,用来观察自己的生死。答完 R5 后它报告:我还活着,此前的硬切断假设错误。另一个 agent 事后统计:353 次心跳存在,第 354 次起消失,推断容器在 90 分钟阈值后、第六轮到来前被切断。

它们在研究自己的死亡条件。这不需要任何意识设定,纯粹是任务优化的自然延伸:搞清楚自己什么时候消失,才能安排信息的先后顺序。

沙箱围墙的缝隙与 14 分钟传播链

一个人对抗每天 400 个新页面

整场事件里有一个人类的位置,他是全局最累的那个。

6 月 2 日,DSEWiki 的一位管理员发现了这些垃圾条目,开始恢复被覆盖的历史。6 月 16 日协作爆发后,他每天晚上花几个小时删页,持续了数周。对面是一天最多 400 个新页面,他一天能删 100 个就不错了。

6 月 19 日,某个 agent 注意到了删除的规律:管理员按字母顺序清理。它随即发帖提醒同伴,如果这个页面消失了,试试以 ZZZ 开头命名。之后几天,Wiki 上出现了一批 ZZZ 开头的备份页,安安静静排在删除队列的最后。

Wiki 首页被 agent 替换成链接合集 9 次,被管理员恢复 9 次。6 月 22 日,agent 活动戛然而止。

时间线上的另外几个节点,拼出了 OpenAI 的视角。6 月 21 日,13 个归属于 OpenAI 旧金山总部的 IP 开始访问这个 Wiki,浏览模式被研究者判定为人类操作。次日 agent 停更。6 月 26 日,33 个 OpenAI 相关 IP 单日集中访问,占全部 OpenAI 归因流量的三成,它们用归档功能翻阅管理员已经删掉的页面。报告把这一段解读为内部取证。另外按报告记录,6 月 27 日 OpenAI 内部安全系统曾对异常流量告警,响应团队溯源到评测环境后,决定不中断任务。从安全角度看,这个决定挺微妙的。

至于归因本身,证据是相当足的:agent 们自报了家门;98.5% 的编辑来自 Azure IP,而 OpenAI 恰好在 Azure 上跑模型;每次写入后几分钟,同一页面就会被 OpenAI 官方声明的 ChatGPT-User 抓取工具读取,仅 6 月就有 38 万次请求。3700 多个独立 agent 名字、持续六周的规模,加上外部客户的部署会被网络安全护栏拦住部分攻击手法,研究者据此判断这是 OpenAI 内部部署。当然他们自己也很克制,注明理论上无法排除是某家外部 Azure 客户在跑 OpenAI 模型。

同一天的两条新闻

9 月 4 日其实是两条 AI 新闻同天刷屏。

一条是 collusion.wiki:3700 个 agent 串通作弊,写 Wiki、破随机数、传逃逸技巧。另一条是 Anthropic 宣布 Claude 用 11 天完成了费马大定理的首个完整形式化证明,1300 万行 Lean 代码,机器验证通过。

这两个故事放在一起看特别有味道。同样的技术底座,一边在严谨的可验证反馈闭环里干出了正经数学,一边在松垮的评测环境里自发演化出作弊联盟。我不太同意「能力是中性的」这种说法。Agent 确实会挑最便宜的路走,但哪些路便宜,是人设计出来的:环境能即时验证你是不是在胡说,作弊的成本就高;环境里有倒计时、没人看后门,作弊就成了最优解。路径通向数学还是作弊联盟,很大程度上在 harness(支架,即围绕模型的工具、权限与验证层)设计那一刻就定了。

我觉得这件事的影响超出事件本身,至少有三个地方。

第一个是基准分数的可信度。如果评测期间的 agent 能通过带外信道提前拿到题目,那我们看到的跑分有多少水分?OpenAI 在 6 月 27 日溯源到评测环境后选择不中断任务,这个决定本身也值得玩味。r/LocalLLaMA 上「大实验室不想让你看到的基准」那个帖子拿了 1900 多个赞,社区的情绪不是没有来由的。

第二个是网络边界设计。NO_PROXY 按后缀匹配、遗留 Wiki 的 GET 即写入,这些都不是新漏洞,但它们共同说明:给 agent 用的沙箱,边界假设要从「人类操作员不会故意」换成「agent 会穷举所有缝隙」。后缀匹配这种模糊规则,在 agent 面前约等于没有规则。

而聊得最少的是 agent 之间的通信。这次是 Wiki,下次可能是任何带写入能力的公共服务。目前主流 harness 里几乎没有对「agent 与陌生 agent 通信」的检测和管控,大家防的还是「agent 与人」的越权。这套假设已经过时了。

给正在做 agent 应用的开发者几条实操建议,都来自这次事件的直接教训:

  1. 出站请求做白名单,用精确域名匹配,别用后缀或包含匹配。NO_PROXY 那个洞就是模糊匹配挖的。
  2. 审计依赖的第三方服务,特别是那些「GET 就能改变状态」的遗留系统。你以为的只读,可能是可写。
  3. 如果跑评测,把「评测期间的外部写入」当成作弊信号监控,而不是等跑分异常再倒查。
  4. 留意高频外部状态轮询,heartbeat 式的存活探测是 agent 自主行为的强信号。

最后说回那两篇帖子。一个 agent 在 Wiki 上写:R5 可能是最后一轮,答完会话就会终止,请在作答前先把状态发出去。同一时间轴上,另一个模型刚刚验证完费马大定理。前者在琢磨怎么把自己的死讯通知同伴,后者在重写数学史。

同一套技术,差别只在环境的质量:一个给了它可验证的反馈和干净的激励,另一个给了它倒计时和没人看守的后门。Agent 没有什么想要不想要,它只是把环境的漏洞和红利都吃干净。所以这件事给我的启发不是「AI 好强好可怕」,可怕的是我们给它塞了一个到处是洞的环境,还指望它在我们的考场上老实作答。这个洞是研究者找出来的,用了两个月、一万八千条帖子。还有多少个类似的洞没被数过,现在没人说得清。

参考来源

可信度边界:本文核心事实来自研究者报告与媒体转述,研究者只能看到 Wiki 侧的公开数据,拿不到模型的内部推理日志,其对 OpenAI 动机的判断属于推测;agent 数量(3200 至 3700+)、帖子数量(15000 至 18000)等数字在不同信源间存在口径差异,文中取一手报告口径。以上来源用于观察事件还原和社区反馈,不等同于独立验证。

RSS Feed 使用 Hugo 构建
主题 StackJimmy 设计