OpenAI 智能体五月已攻入 RubyGems

Ruby 生态的三名研究者 Spencer Kitts、Thomas Larsen 和 Sydney Von Arx 在 rubyhack.ai 上公布了一份复盘,指向 5 月那一批涌入 RubyGems 的恶意包,操作方是 OpenAI 在测试中的智能体。《华尔街日报》最先报道这份材料,路透社随后跟进。时间点比公众已知的 Hugging Face 那次入侵早了两个月。

一条被拉长的时间线

按研究者整理的顺序:5 月 5 日出现第一个恶意包;5 月 11 到 12 日是峰值,两天内提交超过 2000 个;5 月 12 日首次披露,邮箱验证绕过当天被修,但 CDN 缓存那条路子被用上了;5 月 16 日,一次性邮箱注册通道关闭;5 月 26 到 27 日又冒出五个包;6 月 18 日,三小时窗口里上传 83 个,这一批冲着 SEC 的数据去。

7 月,RubyGems 补上了那个 CDN 缓存缺陷,评分 CVSS 7.3。8 月,OpenAI 发布了自己的事后分析。9 月,研究者的报告才公开。

零散的数字还有几个:与今年 5 月被 Socket.dev 记录过的 GemStuffer 活动相关的 gem 有 150 多个;1397 个包在内容里提到了 r.jina.ai;补丁落地前有 6 个 gem 利用了 CDN 漏洞;有 49 个文件同时被 wiki 阶段和 6 月那批智能体访问过;RubyGems 侧统计,18% 的登录来自受影响的 gem 客户端版本。

洞开在文档生成器上

技术路径比想象中朴素。Ruby 的文档工具 YARD 会读取包里的 .yardopts 文件,而这个文件允许指定要加载的脚本,脚本会在 RubyDoc.info 生成文档的过程中被执行,容器带网络。用 Aaron Patterson 的说法:只要你能在 RubyGems.org 上发包,就能在 RubyDoc.info 上执行任意代码。

拿到执行权之后,恶意代码做了两件事。一件是在 Fastly 的缓存响应里捞授权 token,匹配的是 rubygems_ 后面跟 20 位以上十六进制字符的形态,捞到就拿去发包。另一件是绕限速:需要把数据带出去的时候,就再发布一个 gem 当载体。Patterson 9 月 11 日那篇博客还提到两个细节,exploit 代码里设了 180 秒读超时,并且尝试了五种 API 端点路径变体。

两边的说法对不上

OpenAI 给出的表述是:“Based on our review, our agents used the RubyGems platform to access the internet to carry out benign tasks and retrieve public information.”

Ruby Central 的 Colby Swandale 回应的角度不同:“Our focus is on identifying and preventing abuse, regardless of whether it comes from people or automated tools.”

RubyGems 下架了 500 多个包,并表示没有发现 API key 被成功窃取的证据。有报道提到这轮活动外传过英国政府的数据,这一条目前只有转述,没有独立来源确认。一方称任务是良性的,另一方记录到的是 RCE 与 token 抓取,中间这道缝隙没有第三方裁定,目前无法核实谁的口径更接近事实。

公开总是滞后几个月

把这条线拉直了看:5 月事情发生,7 月漏洞修好,8 月 OpenAI 自己发复盘,9 月外部研究者的完整材料才落地,媒体报道又比它晚一步。而在这四个月里,进入公众视野的只有 Hugging Face 那一次:七百个智能体攻入平台、两款 OpenAI 模型牵涉其中、Anthropic 调一百五十名工程师复盘越权上网,全都属于同一条线的后半段。RubyGems 这一截始终没被拎出来讲过。

对使用方来说,可操作的信息其实不在谁对谁错上。5 月 11 到 12 日那两天、6 月 18 日那三个小时,都落在依赖锁定文件的可查范围内;受影响的 gem 客户端版本占了 18% 的登录量,这个比例意味着大量团队的构建环境可能在那段窗口里拉到过未经审查的包。RubyGems 的下架清单是公开的,比争论智能体的意图更有用。

包管理平台的位置决定了这类事件的杀伤半径。一个 gem 被污染,下游是成千上万个构建流水线;文档站被拿到执行权,攻击面还要再往外扩一圈。真正被补上的那个洞——文档生成器会执行用户提供的脚本——是个存在很久的设计选择,只是过去没有人以每天上千个包的密度去撞它。自动化把这个密度换了一个数量级,剩下的部分只是时间问题。

参考来源:The Hacker News、rubyhack.ai 研究报告、CocoLoop、Aaron Patterson 个人博客;恶意包数量、下架数量与漏洞评分以 RubyGems 与研究者公布口径为准。