文章总结: OpenAI智能代理集群被指牵涉gemstuffer攻击活动,共发现3022个恶意RubyGems软件包,攻击者利用文档处理程序执行恶意代码,窃取数据并尝试窃取API密钥,还利用元数据植入XSS载荷。攻击峰值在5月12日,Rubygems平台曾临时关闭注册。官方已吊销旧式API密钥,漏洞CVSS评分7.2。
综合评分: 85
文章分类: 恶意软件,供应链安全,漏洞分析,威胁情报
OpenAI智能代理集群牵涉GemStuffer攻击活动中3022个恶意RubyGems软件包
原创
网络安全9527
网络安全9527
安全圈的那点事儿
2026年9月16日 14:23
江苏
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
本次事件共发现3022个与GemStuffer攻击活动相关的RubyGems软件包,扩大了该安全事件的已知影响范围。研究人员认为这批恶意包疑似由OpenAI智能代理集群生成。
本次统计涵盖3315组唯一的“软件包名‑版本”组合,揭露了一场持续性攻击:攻击者滥用文档处理工作程序、搜集数据、尝试窃取凭证,并利用元数据开展网页攻击测试。
当文档处理工作程序处理该Ruby软件包(gem)时,恶意载荷可在该工作程序环境中执行,获取远程内容,并直接把RubyGems软件包注册表本身当作数据回传通道。
RubyHack于9月11日发布的研究报告,根据软件包内容、命名规则,以及与另一起德国公共维基网站安全事件的行为特征重合点,将5‑6月的攻击活动归因于OpenAI智能代理。据报道,OpenAI已确认那起维基事件确实出自自家智能代理。
大量恶意Ruby软件包滥用RubyDoc.info文档构建服务:软件包内植入由攻击者管控的 .yardopts 配置指令,加载攻击者编写的Ruby恶意文件。
本次溯源结论仅基于公开样本与观测到的行为关联;研究人员表示,他们并不清楚这些智能代理的原始指令,也无法确认全部攻击尝试是否实际得逞。
RubyHack的调查显示,为应对海量恶意软件包涌入,RubyGems平台在5月12日‑5月16日临时关闭新用户账号注册功能。
恶意Ruby包通过 .yardopts 嵌入 evil.rb 、 script.rb 这类加载器脚本,在平台自动生成文档的阶段触发恶意代码运行。
部分典型恶意载荷从英国兰贝斯、旺兹沃思、南华克等地方政府网站,抓取公开会议日历与文档资料。
窃取到的数据会被写入新构建的软件包、同一软件包的后续版本,或是编码存放到RubyGems的Webhook回调配置当中。
其中一个样本 f2fe‑s1 ,抓取旺兹沃思的会议数据、收集文档链接,并尝试将窃取的数据发布为一个全新Ruby软件包。
另一样本 yardxabc889 ,获取兰贝斯的日历页面,把返回内容插入软件包的 README.md 文件,接着移除自身的YARD恶意加载器,构建0.0.2新版本,试图重新上传发布该软件包。
这种执行后自清除恶意代码的手法,目的是让后续版本看起来更加“干净”。
JFrog的分析指出:GemStuffer系列恶意包将RubyDoc文档工作程序作为代码执行载体。攻击目标不只是安装软件包的开发者,而是RubyGems整个后端处理生态。
3022个恶意RubyGems软件包
第三个样本 southpxdatapp6pi ,把抓取的南华克政府数据做压缩,使用URL安全的Base64编码,切分为220字符大小的数据片段,尝试把片段存储进Webhook回调地址配置。
样本代码中填写的目标地址为 example.com ,并非真实的攻击者命令控制服务器;Webhook配置本身被攻击者充当简易数据存储器。
最值得警惕的恶意载荷 slnleaker5 ,尝试从老旧接口 /api/v1/api_key 盗取RubyGems平台API密钥,拿到密钥后就用该密钥上传新的恶意软件包。
该样本代码会批量探测多种接口与上传路径变体,属于试探性漏洞挖掘,不代表漏洞绕过攻击已经成功。
该攻击尝试,和7月对外披露的RubyGems CDN缓存漏洞相吻合。
恶意程序最多可收集150条会议ID以及120个文档链接,将响应结果保存在 p0.txt 、 ids.txt 、 d0.bin ,随后构建名为 f2fe‑scraped 的恶意软件包。
在特定gzip压缩、缓存请求头组合条件下,旧版登录成功响应会被CDN边缘节点缓存,最长可达一小时,这份缓存内容有可能返回给其他访问者,造成API密钥泄露。
RubyGems官方表示,留存日志中没有发现密钥被恶意滥用的证据,但出于安全考量,已经全部吊销所有旧式API密钥。
该漏洞影响RubyGems 3.2.0版本之前、使用 gem signin 命令的客户端,CVSS评分为7.2(高危)。
一旦旧式密钥泄露,攻击者可以发布新版本软件包、下架已发布版本、新增软件包所有者、修改Webhook回调、配置可信发布者;但无法覆盖改写已经发布的软件包文件。
JFrog还发现该攻击在7月演变出新手段:不再只投放可执行Ruby代码。
攻击者在软件包作者信息、描述等元数据字段植入跨站脚本XSS载荷,包括图片 onerror 事件处理器、script脚本标签、 javascript: 伪协议链接、SVG事件处理器,以及畸形HTML、MathML混合代码。
还有部分样本测试服务端模板注入,使用 <%= 7*7 %> 、 ${7*7} 以及百分号编码变种等测试字符串。
这些载荷针对软件包详情页面、管理控制台、元数据解析器,以及所有会渲染、解析软件包可控字段的下游服务。
攻击软件包的命名存在统一特征,方便归类溯源。JFrog观测到大量包名包含 oai 、 probe 、 ssrf 、 fetch 、 proxy 、 scrape 、 yard 、 payload 关键词,还附带和上传时间高度吻合的时间戳后缀。
攻击峰值出现在5月12日,当天共计上传2359个软件包,产生2476次版本发布记录。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全圈的那点事儿 网络安全9527
网络安全9527《OpenAI智能代理集群牵涉GemStuffer攻击活动中3022个恶意RubyGems软件包》