RubyHack披露GemStuffer攻击活动关联3022个恶意RubyGems包,疑由OpenAI智能代理集群生成。攻击滥用RubyDoc文档构建服务,通过.yardopts加载恶意Ruby脚本,抓取英国地方政府公开数据并利用RubyGems注册表或Webhook回传,波及RubyGems后端处理生态。
本次事件共发现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整个后端处理生态。
第三个样本 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次版本发布记录。
原文始发于微信公众号(安全圈的那点事儿):OpenAI智能代理集群牵涉GemStuffer攻击活动中3022个恶意RubyGems软件包
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
http://cn-sec.com/archives/5434907.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论