文章摘要
黑客组织Shai Hulud再次发动供应链攻击,入侵了Zapier、ENS等多个知名平台的npm包。这是该组织在npm即将撤销经典令牌前的又一次攻击,延续了其自8月以来的攻击模式。安全团队发现恶意软件迹象后迅速展开调查,凸显了软件供应链安全的严峻形势。
文章总结
沙虫攻击再袭:Zapier、ENS等知名项目遭供应链攻击
事件概述
2025年11月24日,代号“沙虫”(Shai-Hulud)的恶意npm蠕虫发动第二轮大规模供应链攻击,波及Zapier、ENS、AsyncAPI、PostHog、Postman等492个热门npm包,累计月下载量达1.32亿次。攻击者利用npm即将撤销旧版令牌的窗口期,通过窃取开发者环境中的敏感信息(如API密钥、GitHub凭证)并上传至公开仓库,形成自我繁殖的传播链。
攻击时间线
- 8月27日:首次披露针对nx包的S1ngularity攻击。
- 9月16日:攻击者发起首轮“沙虫”攻击。
- 11月24日:第二轮攻击(攻击者自称“第二次降临”)在npm令牌撤销截止前爆发,主要时间节点:
- 3:16 AM GMT:AsyncAPI的
go-template等36个包首批被入侵。 - 4:11 AM GMT:PostHog相关包遭篡改。
- 5:09 AM GMT:Postman包被植入恶意代码。
- 3:16 AM GMT:AsyncAPI的
攻击机制更新
技术升级:
- 通过
setup_bun.js安装Bun运行时,执行恶意脚本bun_environment.js。 - 窃取数据后创建随机命名的GitHub仓库(描述为“Sha1-Hulud: The Second Coming”),已发现2.63万个公开仓库泄露敏感信息。
- 若认证失败,会清空用户Home目录文件。
- 通过
传播范围扩大:
- 本次攻击感染包数量从首轮的20个激增至100个。
受影响关键项目
- AsyncAPI:CLI工具被植入恶意分支(代码示例)。
- PostHog/Postman:分析工具和API开发工具的官方包遭篡改。
- ENS/Zapier:以太坊域名服务及自动化平台的依赖包被利用。
安全建议
紧急处置:
- 检查所有npm依赖版本,禁用CI中的
postinstall脚本。 - 轮换GitHub、npm、云服务及CI/CD凭证。
- 检查所有npm依赖版本,禁用CI中的
长期防护:
- 启用npm和GitHub的多因素认证(MFA)。
- 使用Safe-Chain等工具阻断恶意包安装。
攻击者失误
部分被入侵包仅包含初始脚本setup_bun.js,未捆绑核心蠕虫代码bun_environment.js,一定程度上限制了攻击扩散。
事件仍在持续更新,建议开发者密切关注后续动态。
(注:原文中的完整受影响包列表已精简,保留关键项目;技术代码片段因篇幅限制未完全呈现。)
评论总结
评论总结:
- 开发环境安全实践
- 支持使用容器隔离开发环境:"I never do development outside of a podman container"(nathan_compton)
- 建议使用PNPM替代NPM:"PNPM 10.x shutdown a lot of these attack vectors"(twistedpair)
- 包管理改进建议
- 呼吁建立稳定的npm包流:"Perhaps it's time to organize a curated 'stable' stream for npm packages"(xnorswap)
- 建议采用行业标准库:"What we need is an open source industry standard stdlib"(blackoil)
- 安全防护措施
- 强调依赖最小化:"we had a change landed to remove more than a dozen dependencies"(benmccann)
- 建议vendoring依赖:"this is why you should vendor your dependencies"(jhatemyjob)
- 事件影响评估
- 指出Postman的安全风险:"it's effectively an unmanaged password manager"(leo_e)
- 关注特定受影响包:"these packages stood out for me"(agentifysh)
- 平台响应建议
- 呼吁GitHub采取行动:"github should implement a hotfix"(lukebechtel)
注:所有评论均未显示评分(None),主要反映开发者对npm生态安全问题的担忧和改进建议。