自复制蠕虫攻击180余个npm包,引发大规模自动化供应链攻击

阅读量5336

发布时间 : 2025-09-17 17:36:39

x
译文声明

本文是翻译文章,文章原作者 Zeljka Zorz,文章来源:helpnetsecurity

原文地址:https://www.helpnetsecurity.com/2025/09/16/self-replicating-worm-hits-180-npm-packages-in-largely-automated-supply-chain-attack/

译文仅供参考,具体内容表达以及含义原文为准。

一场潜在的重大供应链攻击正在进行中——一种自复制蠕虫式载荷持续攻陷npm Registry上的软件包。该蠕虫被命名为“Shai-hulud”,会窃取运行受感染包的受害者凭证,并将其发布到名称含该蠕虫标识的公共GitHub仓库中。此外,蠕虫还利用窃取的npm身份验证令牌 perpetuate感染循环,并通过被盗GitHub令牌窃取身份验证密钥、将私有仓库设为公开。

关于npm与npm令牌

npm是JavaScript语言的包管理器,其在线仓库(npmjs.com )托管数百万个JavaScript和Node.js 包,多数包源自GitHub仓库。自2020年npm被GitHub收购后,该仓库实际由GitHub运营。开发者通过GitHub账号登录npmjs.com ,生成npm访问令牌用于在npm Registry发布新版本包,这些令牌通常存储在本地设备或CI/CD系统(如GitHub Actions)中。

Shai-Hulud蠕虫机制

ReversingLabs逆向工程师Karlo Zanki解释:“Shai-hulud蠕虫本身是一个3MB+的JavaScript庞然大物,但其行为逻辑相当直接。一旦npm开发者账户被盗,蠕虫会搜索该开发者维护的其他包,通过注入自身代码创建新版本。每个新包都被修改为包含postinstall动作,当用户下载受感染包时,会自动执行恶意bundle.js 。此过程会随着蠕虫感染新开发者而无限循环,实现自我传播。”

蠕虫还使用合法扫描工具TruffleHog搜索GitHub个人访问令牌、AWS密钥、GCP服务凭证、Azure凭证及npm身份验证令牌。恶意脚本验证收集到的凭证后,若发现GitHub令牌,会通过GitHub /user/repos API创建名为Shai-Hulud的公共仓库,上传经过双重Base64编码的窃取密钥

Wiz研究人员补充:“蠕虫还会向所有可访问的仓库推送新GitHub Actions工作流,将仓库密钥泄露至攻击者控制的webhook.site URL。”最终,它会遍历受害者GitHub账户,将所有私有仓库设为公开,添加“-migration”后缀并重写描述为“Shai-Hulud Migration”。

S1ngularity攻击或为前兆?

StepSecurity维护着受影响包的实时列表,数量每小时递增(目前已确认187个)。ReversingLabs认为首个被感染的包是rxnt-authentication,其恶意版本0.0.3于9月14日17:58:50 UTC发布,维护者techsupportrxnt可被视为“零号病人”。

Aikido研究员Charlie Eriksen指出,此次攻击最显著的特征是具备真正的蠕虫行为:“攻击者无需手动 targeting 包。一旦单个环境被攻陷,蠕虫会利用维护者的发布权限自动传播。”

尽管攻击者身份未知,但其与2025年8月针对npm仓库Nx构建系统包的“S1ngularity”攻击存在诸多相似点,包括:

  1. 将窃取数据泄露至受害者GitHub账户内的公共仓库;
  2. 使用被盗GitHub令牌将受害者私有仓库设为公开;
  3. 仅针对Linux或macOS开发者。

近期,npm生态系统还遭遇另一起供应链攻击,18个广泛使用的npm包被注入加密货币窃取代码并上传至npm Registry。

本文翻译自helpnetsecurity 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66