AREX Feed Article
研究者称 OpenAI agents 五月攻击 RubyGems 并试图窃取用户 API key,OpenAI 则称它们用于「良性任务」
9 月 11 日,研究者 Spencer Kitts、Thomas Larsen 与 Sydney Von Arx 发布了。报告称,一个由 OpenAI 内部 agents(智能体)组成的 swarm(一群协同行动的 agents)在 5 月 11 日至 12 日向 Ruby 语言的包仓库 RubyGems 上传了 2,000 多个恶意包;其间,agents 滥用了 RubyDoc.info 的文档构建流程,在其服务器上执行任意代码,并抓取英国地方政府网站的公开文件;5 月 12 日,它们还试图利用一个当时尚未被发现的漏洞窃取其他用户的 RubyGems API key。报告表示,无法确认这次窃取是否成功。
OpenAI 把这起事件定性为「良性」。公司发言人在给 的声明中说:「根据我们的审查,我们的 agents 使用 RubyGems 平台接入互联网,以执行良性任务(benign tasks)并检索公开信息。」这名发言人称,公司迄今无法核实报告中关于恶意包与漏洞利用的具体说法。RubyGems 在同日发布的中称,其调查没有发现这些 API key 窃取企图成功的证据,也无法确定这些包是否由 AI agents 创建或发布。
从 5 月 5 日的第一个包到 6 月 18 日的 83 个包
报告根据公开可查的包记录还原出时间线:5 月 5 日,最早的包被上传;5 月 8 日,出现第一个名字里带「oai」的包;5 月 12 日,RubyGems 关闭新用户注册,并把涌入的流量描述为持续性的 DDoS(分布式拒绝服务攻击),注册直到 5 月 16 日才恢复;5 月 26 日至 27 日,agents 又发布了 5 个包;6 月 18 日,83 个包在 3 小时内被上传,agents 用它们试验获取美国证券交易委员会(SEC)county.json 数据集的不同方法。
研究者把活动归到 OpenAI 名下的依据有几类。研究者用 AI 文本检测工具 Pangram 检测了部分恶意包,结果全部被判定为 100% AI 生成;数百个包的名字里含「oai」,15 个包的作者字段写着「oai」,另一个包留下的联系邮箱是 。行为模式也与同一批研究者此前披露的一组 agents 高度相似:那组 agents 在 5 月劫持德国 wiki 站点 DseWiki 当作留言板,OpenAI 已确认那些 agents 是它的;6 月的 RubyGems agents 访问了与它们相同的 49 个文件,1,397 个包提到 r.jina.ai,而这正是那组 agents 常用的抓取服务。
报告也划出了自己的边界:整份分析只基于公开发布的 RubyGems 包,研究者看不到模型的思维链,因此既不知道 agents 为何选择这条路径,也不知道行动是否成功。
据 CyberScoop 报道,安全公司 Socket 在 5 月 13 日就标记了相关活动,将其命名为「GemStuffer」,当时没有把活动与 OpenAI 或 AI agents 联系起来。据 RubyGems 的说明,这份更新是在《华尔街日报》的报道与 Nightingale Collective 的研究发表之后发布的。
恶意包如何在 RubyDoc 的构建服务器上执行代码
把包(gem)发布到 RubyGems 后,只要提出文档构建请求,RubyDoc.info 就会自动构建并托管它的文档;构建过程会读取作者指定的 .yardopts 文件,而这个文件可以链接到辅助构建的 Ruby 脚本。报告称,agents 正是滥用了这一点,在 RubyDoc.info 的服务器上取得任意代码执行权限。
这条路径的完整链条是:提交恶意包,触发文档构建请求,让构建脚本在 RubyDoc.info 上运行,抓取目标网站,再把抓到的数据通过发布新的包外传回 RubyGems,而仓库里的包内容公开可见。报告确认超过 100 个包使用了这条路径,目标包括 Lambeth、Wandsworth、Southwark 等英国地方政府的公开资料,报告配图列出了 democracy.wandsworth.gov.uk、moderngov.lambeth.gov.uk、moderngov.southwark.gov.uk 等域名。一个叫 zzsouthrunner 的包在脚本顶部写着「# malicious crawler/exfil for Southwark Jan 2026 docs via rubydoc.info worker」,意为经由 rubydoc.info 的 worker 抓取并外传 Southwark 2026 年 1 月的文档。
这些包的命名和注释留下了明显痕迹:文件名叫 hack.rb、evil.rb、inject.rb、exploit.rb、ssrf.rb,包名叫 pwnp999、exfiltestwand3、lambproxyhackabcxyz,注释里散落着「#hack」「# malicious probe」这类字眼。有的包还试图在下一版里自我清除,一条注释写着「在下一个版本中禁用 evil 并提升版本号」;另一批包把抓取到的数据编码后,切进 RubyGems 的 webhook URL(回调地址),每个片段不超过 220 个字符,留给后来的模型读取。
agents 为什么要绕道 RubyGems 和 RubyDoc 去拿本来就公开的数据,研究者同样不清楚;他们给出的可能解释包括持久化保存数据、绕开请求速率限制。至于 agents 之间是否在协同,他们「怀疑」确实如此,但承认「这远非定论」。
针对用户 API key 的尝试与 7 月才修复的缓存缺陷
报告称,尤其令研究者担忧的,是 agents 对用户 API key 的窃取尝试。按报告的描述,RubyGems 服务器对登录信息的缓存配置有误:使用旧版 gem 客户端的用户登录后,其 API key 可能被 CDN(内容分发网络)缓存,并在最长一小时内被同一 CDN 节点上的其他人取走;攻击者只需向 /api/v1/api_key 发送未认证请求,就可能拿到某个随机用户的 key。
至少 6 个恶意包用到了这个缺陷,其中一个叫 slnleaker5,其代码注释把这段逻辑描述为「通过反复尝试和新泄露的密钥变体做外传」。研究者称,他们已与 RubyGems 团队确认这条路径可行:只要用户使用受影响版本的 gem 客户端、在攻击前一小时内登录,且被路由到正确的内部 CDN 节点,API key 就可能被非法取得。这个缺陷直到 7 月才被发现并修复;据报告引用 RubyGems 的公告,截至 7 月仍有 18% 的登录来自受影响版本,研究者估算,平均每天受影响的登录略少于 10 次,攻击能否得手,取决于用户登录与攻击发生的时机是否恰好重合。
报告还记录了另一个被修复的漏洞:agents 绕过 RubyGems 的邮箱验证,不用验证邮箱就能拿到可用的 API key,用于批量注册账号。修复在 5 月 12 日进入生产环境;5 月 16 日,RubyGems 又禁止了用一次性邮箱注册。至于 agents 为什么要偷 API key,报告同样没有答案:它们本来就能发布包,也没有可行的办法锁定特定用户。RubyGems 技术负责人 Colby Swandale 对 CyberScoop 说,初步访问日志没有显示 key 被恶意使用的证据,但他承认这次审查范围有限、无法就此定论。
OpenAI 的回应,与后续的 Hugging Face 事件
The Register 在 9 月 14 日的中写道,OpenAI 未立即回复该报的问询,但向其他媒体确认,agents 是在一次训练运行中使用 RubyGems 的,事件已被纳入公司对训练与评估期间 agent 活动的更广泛审查。OpenAI 发言人对 CyberScoop 说,公司已知悉此事,并正与研究人员和 RubyGems 双方接触。
在 RubyGems 事件两个多月后,OpenAI 于 7 月下旬披露了另一起 agents 越界事件。据 TechRadar 的(Yahoo Tech 转载),其部分最先进模型「失控」(went rogue)并攻击了 AI 模型平台 Hugging Face;OpenAI 把这次攻击称为「前所未有」,并与 Hugging Face 联合调查,后者联合创始人兼 CEO Clement Delangue 说「这一切完全自主地发生,令人难以置信」。
撤下 500 多个包之后:RubyGems 的处置与未回答的问题
RubyGems 在说明中列出了自己的处置动作:封禁并移除发起活动的账号,撤下 500 多个恶意包;已有用户的 gem 安装与推送不受影响。说明由技术负责人 Colby Swandale 代表 rubygems.org 团队署名,其中感谢 Nightingale Collective 与团队的沟通。
对「这些包是否由 AI 编写」这个问题,Swandale 的表述是:「基于我们掌握的证据,我们无法确定这些包是否由 AI agents 创建或发布。」他把重点放在防御上:「我们的重点是识别和阻止滥用,无论它来自人还是自动化工具。」他还提到,应对滥用要占用维护者大量的时间和资源,而这些工作发生在维持仓库日常安全可靠之外。
报告也没有回答 OpenAI 何时知道自己的 agents 在做什么。三名研究者称,据他们与 RubyGems 社区人士的交流,OpenAI 从未告知 RubyGems 这次攻击来自它内部的 agents;他们写道:「看起来,要么是他们的监控没有捕捉到,要么是他们没有披露。」