自我复制蠕虫在(主要)自动化供应链攻击中攻击了180多个npm包

由于自我复制的蠕虫状有效载荷一直在危害npm Registry上发布的软件包,一场潜在的巨大供应链攻击正在进行中。

 

该蠕虫被称为“Shai-hulud”,因为它会窃取运行受感染软件包的受害者的凭证,并将其发布在包含该名称的公共GitHub存储库中。

该蠕虫还使用从受害者那里窃取的npm身份验证令牌来延续感染和破坏的循环,并使用破坏的GitHub令牌来泄露身份验证机密并公开私人存储库。

Npm是JavaScript编程语言的包管理器,也是一个在线仓库(npmjs.com),托管着数百万个JavaScript和Node.js包。大多数npm包都是从GitHub仓库构建的。

自2020年npm Inc被GitHub收购以来,该存储库实际上一直在GitHub的保护下运营。

开发者使用GitHub登录npmjs.com,然后生成一个npm访问令牌,用于在npm注册表中发布和上传新的软件包版本。这些令牌存储在本地(开发者的机器上)或CI/CD系统(例如GitHub Actions)中。

“Shai-hulud蠕虫本身是一个超过3MB的庞大JavaScript代码。然而,它的行为却非常简单。”ReversingLabs的逆向工程师Karlo Zanki解释道。

npm开发者帐户被入侵后,该蠕虫会查找该开发者维护的其他软件包。然后,它会将自身注入到每个软件包中,并为每个软件包创建一个新版本。每个新创建的软件包都会被一个postinstall操作修改,当毫无戒心的用户下载受感染的软件包时,该操作会执行恶意的bundle.js文件。蠕虫会不断重复这一过程,直到找到新的开发者进行感染,并利用他们进一步传播。

该蠕虫还使用合法扫描工具TruffleHog来搜索GitHub个人访问令牌、AWS访问密钥、Google Cloud Platform服务凭据、Azure凭据和NPM身份验证令牌。

恶意脚本会验证收集到的凭证,如果找到GitHub令牌,则会使用它们创建一个名为Shai-Hulud的公共存储库,并通过GitHub /user/repos API上传收集到的双base64编码机密。

“它还会将新的GitHub Actions工作流程推送到所有可访问的存储库。此操作会将每个存储库的机密泄露到攻击者使用的webhook.site URL,”Wiz研究人员补充道。

最后,它将通过受害者的GitHub帐户,将任何私人存储库公开,在其名称后添加-migration后缀,并将其描述更改为“Shai-Hulud Migration”。

StepSecurity拥有最新的受影响软件包列表,但其数量似乎每小时都在增加。(目前已确认有187个软件包。)

ReversingLabs认为第一个被感染的软件包是rxnt-authentication。

该公司分享道:“该软件包的恶意版本0.0.3于9月14日 17:58:50 UTC发布。因此,npm维护者techsupportrxnt可以被视为此次攻击活动的‘0号病人’。”

合气道研究员查理·埃里克森(Charlie Eriksen)表示,这种攻击最引人注目的特征之一是,它的行为就像一条真正的蠕虫。

“攻击者无需手动定位软件包。一旦某个环境受到威胁,蠕虫就会利用维护者自身的发布权自动传播。”他指出。

目前尚不清楚此次攻击的幕后黑手是谁,但此次攻击与2025年8月的“S1ngularity”攻击(在npm注册表上提供恶意版本的Nx构建系统包)有太多相似之处,不容忽视。

在这两种情况下,攻击者:

将被盗数据泄露到受害者GitHub帐户内的公共存储库
使用受损的GitHub令牌公开受害者的私人存储库
仅针对使用Linux或macOS的开发人员

最近,npm生态系统也因供应链泄露而受到震动,18个广泛使用的npm包被注入了加密窃取代码并上传到npm注册表。

发表评论

评论已关闭。

相关文章