136 个恶意 RubyGems 软件包部署 XMRig 挖矿程序并通过 SSH 传播
原创
网络安全9527
网络安全9527
安全圈的那点事儿
2026年7月24日 19:01
北京
在小说阅读器读本章
去阅读
大规模供应链攻击导致 RubyGems 被 136 个木马化软件包淹没,这些软件包部署了 XMRig Monero 挖矿程序并通过 SSH 自我传播,凸显了 npm 和 PyPI 之外的语言生态系统的系统性弱点。
2026 年 7 月 22 日,研究人员 Moe Ghasemisharif、Ruian Duan、Zhanhao Chen 和 Daiping Liu 记录了一起有组织的加密劫持活动,该活动滥用 RubyGems 作为基于 XMRig 的矿工的传输渠道。
在最近发生的这起事件中,两个不同的参与者“Prvaz12\_mars”和“monib110”共同推送了 136 个恶意 gem,这些 gem 伪装成流行的 Ruby 库,并针对开发者环境进行长期 Monero 挖矿。
第一个攻击者“Prvaz12\_mars”(jdvrie98@gmail[.]com)于 2026 年 7 月 13 日发布了 113 个恶意 gem,在被发现之前累计下载量达到 14,253 次。
每个软件包都是合法 Ruby 库的特洛伊木马克隆,使用合成的三部分命名方案,例如 giga-fast-kit 或 nano-safe-lib,旨在与实用风格的 gems 混为一谈,并阻碍快速分类。
攻击者将相同的 XMRig 加密劫持有效载荷直接注入库的入口点,然后通过 5 小时的 Thread.new{sleep 18000; …} 构造延迟执行,以逃避在短寿命沙箱和 CI 测试框架中的引爆。
一旦触发,有效载荷通过三种机制建立持久性:将恶意 shell 代码附加到 ~/.bashrc、安装 crontab 条目以及注册 systemd 用户服务,确保挖矿程序在登录和重启后重新启动。
对于横向移动,蠕虫会读取 ~/.ssh/id\_rsa 和 ~/.ssh/known\_hosts,然后尝试无密码传播到可访问的主机,将开发人员的 SSH 信任图变成感染途径。
该恶意软件具有跨语言感知能力,会修改 Node.js(package.json postinstall)、Python(setup.py)、Ruby(.gemspec)、Docker(Dockerfile)、git(pre-commit hooks)和 VSCode 扩展,以在整个工具链中建立额外的立足点。
该有效载荷包含强大的反分析逻辑,在激活挖矿程序之前,会检查 VMware、VirtualBox 和 QEMU 等虚拟化平台,以及 /.dockerenv 和 cgroup 特征等容器指标。
Palo Alto Research 表示,此次活动是在 2026 年 5 月 RubyGems 滥用浪潮之后发生的,当时数百个恶意软件包被大规模上传,迫使注册中心暂时停止新账户注册。
它通过在系统负载过高时暂停挖矿并将 CPU 使用率限制在可用线程数的大约一半来实现负载感知挖矿,模仿合法的 XMRig 调优指导,以避免引起用户怀疑。
136 个恶意 RubyGems 包
配置数据(包括池端点和钱包)采用三层方案 AES-256-GCM、RSA-4096 和 ChaCha20 进行保护,这使得静态提取和自动规则生成变得复杂。
所有宝石都通过四个矿池(moneroocean、p2pool、supportxmr 和 herominers)挖矿到同一个门罗币钱包,这一模式与之前在被入侵的服务器和企业终端上观察到的非法 XMRig 操作一致。
第二个攻击者“monib110”(nsrtytyam687@gmail[.]com)贡献了 23 个额外的恶意 gem,其攻击手法明显更简单。
最初,在 7 月 12 日,他们发布了干净的占位符包,使用相同的形容词-名词命名模式和无害的学术风格描述(“基于……的大学研究”),在将这些工具武器化之前,先建立起一层合法性的外衣。
7 月 16 日,所有 23 个库都进行了更新,包含一个极简的 XMRig 启动器,该启动器以隐藏文件 lib/.threadpool.rb 的形式实现,通过 gem 的主入口点的 require\_relative '.threadpool' 加载。
与 Prvaz12\_mars 不同,monib110 使用未混淆的纯文本 Ruby 代码,封装在 XMRigLauncher 模块中,该模块从 GitHub API 端点动态获取最新的 xmrig 版本二进制文件 (api.github.com/repos/xmrig/xmrig/releases/latest)。
该挖矿程序通过 exec() 内联运行,没有持久化钩子、蠕虫功能或明确的反分析保护措施,这表明其重点在于机会主义的、短暂的挖矿,而不是长期的立足点。
所有工作负载都定向到单个矿池 pool.supportxmr.com:3333,这与滥用公共 XMRig 兼容矿池的常见非法挖矿模式一致,以避免链上归因的复杂性。
为了发现和初始访问,monib110 采用了两种命名策略:与 Prvaz12\_mars 使用的相同的合成形容词-名词 gems,以及针对广泛使用的 Ruby 依赖项的经典拼写抢注,通过字符替换(i→1、o→0、双写字母)来实现。
这种技术与长期存在的软件包生态系统滥用行为如出一辙,即通过细微的拼写错误或自动完成操作的误操作,诱使开发者安装恶意变种,从而造成软件包名称几乎完全相同。
在 RubyGems 此前遭受大规模发布攻击,导致其注册暂时中止,并遭到恶意软件包的积极拦截之后,此次活动正值 RubyGems 受到更严格的审查之际。
安全团队应立即审核环境中是否存在符合所述命名模式的可疑 gem、异常的 ~/.bashrc 或 systemd 用户服务、意外的 SSH 密钥访问以及 CPU 利用率调至 50% 左右的 XMRig 进程。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论