2025年9月,JavaScript生态系统遭遇了有史以来最复杂、破坏性最强的供应链攻击之一。代号为"沙虫"(Shai-Hulud)的新型自复制蠕虫感染了超过477个npm软件包,成为npm注册表历史上首个成功实现自动化传播的攻击活动。
攻击手法分析
这次攻击始于针对npm软件包维护者的钓鱼操作。攻击者通过伪造npm官方注册表的虚假域名npmjs[.]help发送精心设计的邮件,要求维护者"更新"其多因素认证凭证,否则将面临账户锁定风险。
Unit 42评估认为,攻击者很可能利用大型语言模型(LLMs)协助编写恶意bash脚本,这反映出网络犯罪活动中AI工具被武器化的趋势。
"沙虫"自复制恶意软件的技术特点
该恶意软件的核心创新在于其通过NpmModule.updatePackage
函数实现的自复制机制。与传统供应链攻击不同,"沙虫"能够自动识别并感染被入侵开发者维护的其他软件包。
传播过程包括:下载现有软件包压缩包、修改package.json
文件注入恶意postinstall
脚本、嵌入约3.6MB的压缩后bundle.js
有效载荷、重新打包并发布到npm注册表。
受影响软件包分析
最早确认的恶意软件包[email protected]
发布于2025年9月14日。攻击在2025年9月15日达到高峰,当时安全研究员Daniel Pereira报告了每周下载量超过220万次的@ctrl/[email protected]
软件包被入侵。
高影响软件包包括:
@ctrl/[email protected], 4.1.2
- 每周220万次下载[email protected]
- 流行的Angular分析库[email protected]
- 广泛使用的通知组件- 多个影响移动开发工作流的
@nativescript-community
软件包
攻击指标(IOCs)与检测方法
安全团队可通过以下文件系统特征识别潜在入侵:
- 恶意
bundle.js
文件(SHA-256哈希值46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
) .github/workflows/shai-hulud-workflow.yml
- 恶意GitHub Actions工作流- Git仓库中创建的
shai-hulud
分支 - 名为"Shai-Hulud"的公开仓库
凭证收集与数据外泄
"沙虫"实施了全面的凭证收集策略,优先获取高价值凭证,包括npm发布令牌、GitHub个人访问令牌(PATs)以及AWS、Google云平台和Microsoft Azure的云服务凭证。
恶意软件采用双通道外泄策略:主要通过webhook.site
端点进行即时外泄,同时在被入侵账户中创建名为"Shai-Hulud"的公开GitHub仓库存储凭证转储。
经验教训与未来影响
"沙虫"攻击标志着供应链安全的分水岭时刻,表明传统安全措施难以应对以CI/CD速度运行的自传播威胁。该攻击的成功凸显了组织在依赖项管理和软件包验证方法上需要进行根本性变革。
未来供应链安全必须发展以应对已知威胁,以及攻击者不断开发的新型攻击方法。从这次事件中汲取的经验教训不仅应指导技术安全改进,还应影响政策变更、社区实践和组织安全策略。
参考来源:
Lessons Learned from Massive npm Supply Chain Attack Using “Shai-Hulud” Self-Replicating Malware
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)