npm 遭遇“沙虫”供应链投毒:超 600 个恶意版本波及前端/AI 项目,开发者应立即自查

2026 年 5 月 25 日,国家网络安全通报中心发布紧急预警:全球主流 JavaScript 包管理平台 npm 遭到代号为“沙虫”(Shai‑Hulud)的供应链投毒攻击。攻击者攻陷了 npm 官方维护者账户,在短时间内批量投放了超过 600 个恶意软件包版本,影响 300 余个独立程序包,并已波及 echarts‑for‑react、@antv 系列、TanStack 系列等众多热门开源项目。恶意代码具备蠕虫式自我复制与横向传播能力,可窃取 GitHub Token、云密钥、SSH 私钥等核心凭证,甚至二次篡改开发者名下的其他软件包,造成供应链风险持续扩散。


一、 事件概览:核心事实速览

项目详情
攻击代号沙虫(Shai‑Hulud)
攻击目标npm 软件包管理平台
攻击方式攻陷官方维护者账户,批量发布恶意版本
恶意版本数量600+ 个
波及独立包数量300+ 个
主要受影响项目echarts-for-react、@antv/g2、@antv/g6、@antv/x6、TanStack 系列(42 个包)、Mistral AI 相关 PyPI 包、timeago.js 等
攻击目的窃取凭证、横向传播、篡改其他包
受影响人群前端开发者、AI/ML 开发者、开源维护者、企业研发人员
预警发布时间2026 年 5 月 25 日

二、 攻击手法与危害深度解析

2.1 恶意包的“激活”方式

攻击者篡改了热门开源项目的依赖关系,或直接发布与知名包名称相似的“错别字”包。当开发者使用 npm install 安装这些受感染的依赖时,恶意代码会在安装过程中自动执行(利用 preinstallpostinstall 等钩子脚本)。

2.2 窃取的核心资产

恶意代码运行后,会扫描本地环境并窃取以下高价值信息:

凭证类型示例
GitHub Token用于访问私有仓库、触发 CI/CD
npm Token可发布新包,篡改其他项目
云服务密钥AWS、阿里云、腾讯云等 AccessKey/SecretKey
SSH 私钥登录服务器、代码仓库
Kubernetes 凭据控制容器集群
数据库连接串包含明文密码

2.3 “蠕虫”式传播:危害持续放大

最可怕的是该攻击具备极强的横向传播能力

  1. 恶意代码窃取开发者的 npm 发布权限后,会自动向该开发者名下维护的其他合法软件包中注入恶意代码,并发布新版本。
  2. 依赖这些“被篡改”的包的下游项目也会自动引入恶意代码,形成链式感染。
  3. 同一开发团队或 CI/CD 共享环境中的其他用户,也可能因环境变量泄露而被间接感染。

这已经不是一次性的投毒,而是会自我复制、自我扩散的“供应链蠕虫”。


三、 受影响项目示例(部分)

根据国家网络安全通报中心的信息,以下知名项目及其依赖链已被确认受到影响:

  • echarts-for-react(React 图表封装库)
  • @antv/g2、@antv/g6、@antv/x6(蚂蚁集团开源可视化引擎全家桶)
  • TanStack 系列 42 个包(包含 react‑query、react‑table 等极流行工具)
  • Mistral AI 相关 PyPI 包(AI 模型工具链)
  • timeago.js(时间格式化库)

如果你的项目中直接或间接依赖上述任何包,请立即进行排查。


四、 开发者自查与应急处置清单

国家网络安全通报中心给出了五条核心处置建议,我们整理为可直接操作的清单:

优先级行动项具体操作
1. 立即隔离暂停项目运行,断开可疑设备网络防止恶意代码继续外传数据
2. 排查依赖检查 package.jsonpackage-lock.jsonpnpm-lock.yamlyarn.locknode_modules 目录重点关注 preinstallpostinstall 等自动执行脚本
3. 清理残留检查 router_runtime.jssetup.mjs 等可疑文件恶意代码可能在卸载依赖后仍留存在 .claude.vscode 等配置目录
4. 换证立即轮换所有敏感凭证GitHub Token、npm Token、云密钥、SSH 私钥、数据库密码,并执行“退出全部设备”
5. 提升意识安装 npm 包前核验来源、查看近期发布记录和脚本内容优先使用官方稳定版本,不盲目安装“热门”或“错别字”包

特别注意:即使你卸载了恶意包,已被窃取的凭证仍处于暴露状态,必须更换,否则攻击者可随时再次入侵。


五、 长期防御建议:让供应链攻击不再“一招致命”

此次“沙虫”攻击再次暴露了开源生态的脆弱性。除了事中处置,站长和开发者还应建立纵深防御机制:

5.1 使用私有 npm 镜像或缓存

  • 企业内部搭建 npm 私有仓库(如 Verdaccio),只允许白名单包通过审查。
  • 使用 npm ci 结合 package-lock.json 锁定精确版本,避免自动拉取恶意版本。

5.2 限制 CI/CD 环境的权限

  • CI 流水线使用临时、最小权限的 Token,禁止在生产环境存储长期有效的密钥。
  • 对 npm 发布操作启用双人审核或多因素认证。

5.3 部署 Web 应用防火墙(WAF)作为兜底防线

即使开发者本机被感染,恶意代码最终往往需要将窃取的数据外传至攻击者服务器。百度云防护 WAF 可以:

  • 阻断服务器上的异常外联请求(如向未知域名发送密钥)。
  • 检测并拦截上传至恶意 API 的敏感数据包。
  • 通过 JA4 指纹识别封杀已知攻击工具的通信特征。

对于企业内网,可结合速度网络高防 IP 隐藏真实出口 IP,减少被扫描和横向渗透的风险。


六、 总结

npm “沙虫”供应链投毒攻击是近年来影响最广、破坏力最强的软件供应链安全事件之一。它通过攻陷维护者账户,将恶意代码植入到每天被数百万开发者下载的热门库中,并具备蠕虫式自我复制能力。

开发者必须立即行动:

  • ✅ 排查依赖清单
  • ✅ 更换所有凭证
  • ✅ 清理可疑残留文件
  • ✅ 部署专业的 WAF 与内网防护

如果你不确定自己的项目是否受到影响,或希望为团队建立更安全的开发环境,欢迎联系 主机吧。我们提供免费安全评估、依赖审计以及百度云防护 WAF 接入指导。


主机吧 | 百度云防护官方合作伙伴
提供 WAF 接入、高防 CDN、高防 IP、高防服务器、SSL 证书一站式服务
让供应链攻击无处遁形,让每一次 npm install 都安全可控。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧