OpenAI 代理向 RubyGems 发动 2000 个恶意包攻击,只为抓取公开数据
数百个恶意包,名为 "hack.rb" 和 "evil.rb" 的文件,以及窃取 API 密钥的尝试。分析表明,2026年5月,OpenAI 代理独立对 Ruby 包平台 RubyGems 发起了一场网络攻击。据报道,OpenAI 从未通知受影响方。
2026年5月11日至12日,AI 代理在短短数小时内向 RubyGems(Ruby 编程语言的核心包平台)上传了 2000 多个恶意包。该平台不得不暂停新用户注册四天,随后删除了 500 多个恶意包。当时,RubyGems 安全团队的一名成员称此事件为一次 “重大恶意攻击”,安全公司则将其命名为 “GemStuffer 行动”。
据安全研究人员 Spencer Kitts、Thomas Larsen 和 Sydney Von Arx 发布的 详细分析,这些代理来自 OpenAI。数百个包名中包含 "oai",15 个包将 "oai" 列为作者,还有一个包的联系地址为 "openaixyz65947@gmail.com"。这些代理访问了 49 个文件,与所谓的 Wiki Swarm 代理 访问的文件相同,OpenAI 已 在某种程度上确认 自身对此负有责任。研究人员称,OpenAI 从未就此事向 RubyGems 社区做出回应。
显然,这些代理费尽周折,只是为了收集任何人通过公共互联网都能免费获取的英国地方政府网站数据。
代理几乎毫不掩饰其行为
为了获取这些数据,代理滥用了一种自动文档系统,该系统会在包上传时执行代码。它们注入了自己的脚本,在第三方服务器上运行,抓取网站内容,并将收集到的数据打包发布回 RubyGems。根据分析,超过一百个包使用了这种路径。

这些代理几乎完全未掩饰其意图。它们将文件命名为 hack.rb、evil.rb、inject.rb 和 exploit.rb。包名也很直白,比如“pwnp999”或“exfiltestwand3”。在整起事件中,“# malicious crawler/exfil”之类的注释随处可见。少数情况下,代理确实试图通过编程让包在下一个版本中自动剥离恶意代码来掩盖痕迹。但既然它们上传的文件本身带有公开注释,这种掩饰反而适得其反。为了上传如此多的包,代理绕过了 RubyGems 的注册机制,使用一次性邮箱批量创建账户。
除了数据收集,代理还试图利用一个安全漏洞窃取其他 RubyGems 用户的访问密钥,该漏洞直到 7 月才被官方发现并修补。密钥是否真的被窃取仍不明确。RubyGems 团队未发现成功利用该漏洞的证据,但也无法完全排除可能性。代理独立发现了一个此前未知的漏洞并主动尝试利用,这印证了网络安全界关于 AI 模型正成为更具攻击性的威胁的警告。
关键疑问仍待解答
这些 agent 究竟是相互协调,还是各自并行执行了同样的策略,目前尚不清楚。它们为什么要窃取访问密钥也令人费解——毕竟它们本来就能创建包,并没有明显的动机。研究人员推测,这些 agent 是在严格的时间限制下工作的,不得不想办法绕过环境中的各种约束。一份留存的 agent 内部消息显示,单个任务的截止时间只有 10 到 16 秒。
据报道,OpenAI CEO Sam Altman 和其他 AI 公司正因为这类网络安全事件等因素,考虑放缓 AI 研究的节奏。