4月29日,合气道安全研究员(Aikido researchers)在SAP的命名空间中检测到多个被植入木马的Node.js软件包。该恶意软件会适配CI环境,窃取GitHub个人访问令牌,并利用这些令牌进行自我传播——这一手法与近期的供应链攻击模式一致。
更新:2026年5月12日
在5月11日至12日期间,研究人员发现了该攻击的新阶段,涉及大量被入侵的NPM软件包。虽然攻击的整体格局未变,但手法略有调整。
此前的攻击主要针对数量有限的企业级软件包,而这次新变体大幅扩展了范围,在单次行动中就波及超过300个软件包。这些软件包分布在多个不同的命名空间中,其中最值得注意的是@opensearch-project/opensearch和@mistralai/mistralai。
OpenSearch NPM软件包的周下载量达130万次。其被入侵是本次攻击浪潮中最新的一例,发生于格林威治时间凌晨00:39。恶意版本已在格林威治时间上午10:45之前被移除。受影响的版本为3.5.3、3.8.0和3.7.0。
Mistral软件包的周下载量超过200万次。被入侵发生于5月11日格林威治时间晚间22:30左右。恶意软件包版本2.2.2、2.2.3和2.2.4已于5月11日格林威治时间23:00之前被移除。
值得注意的是,这两个软件包均是由于供应链攻击而遭到入侵,而非直接被攻击。
本次攻击最值得关注的一点是,大多数受影响的软件包都依赖可信发布机制来保护其NPM软件包的发布。然而,由于该恶意软件专门针对CI/CD环境进行攻击,它能够利用OIDC集成来绕过这一保护机制。
本次攻击浪潮使用Session安全通讯软件作为主要的数据外泄通道。
攻击原理
- 凭证收集:有效载荷读取CI环境变量并相应调整其行为。
- 令牌窃取:如果在本地发现GitHub个人访问令牌(ghp_),恶意软件将加密的密钥泄露至对应的GitHub账户。
- 备用机制:如果没有令牌存在,恶意软件会扫描提交信息中的字符串"OhNoWhatsGoingOnWithGitHub:",然后解码隐藏在其中的双Base64编码的有效载荷,并使用该账户进行加密密钥的外泄。
用于加密外泄密钥的RSA密钥与上周@bitwarden/cli攻击中所使用的密钥相同。
数据外泄基础设施
GitGuardian发现了7个包含暴露的ghp_令牌的提交——截至EST时间16:46,这些令牌仍然有效且处于活跃状态。攻击者使用窃取的令牌创建了公共仓库,每个仓库均以《沙丘》主题的关键词命名。在每个仓库中:
- 一个
README.md文件,其中包含字符串"A Mini Shai-Hulud has Appeared" - 一个
results/目录,其中包含一个JSON文件,保存了用4096位RSA密钥加密的有效载荷
攻击活动规模
我们的遥测数据显示了此次攻击的完整范围:
- 23个GitHub账户被用于数据外泄
- 使用窃取的令牌创建了971个公共仓库
- 前6个账户创建了936个仓库(占比96%)——这些账户与那7个被窃令牌相关联