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 安装这些受感染的依赖时,恶意代码会在安装过程中自动执行(利用 preinstall、postinstall 等钩子脚本)。
2.2 窃取的核心资产
恶意代码运行后,会扫描本地环境并窃取以下高价值信息:
| 凭证类型 | 示例 |
|---|---|
| GitHub Token | 用于访问私有仓库、触发 CI/CD |
| npm Token | 可发布新包,篡改其他项目 |
| 云服务密钥 | AWS、阿里云、腾讯云等 AccessKey/SecretKey |
| SSH 私钥 | 登录服务器、代码仓库 |
| Kubernetes 凭据 | 控制容器集群 |
| 数据库连接串 | 包含明文密码 |
2.3 “蠕虫”式传播:危害持续放大
最可怕的是该攻击具备极强的横向传播能力:
- 恶意代码窃取开发者的 npm 发布权限后,会自动向该开发者名下维护的其他合法软件包中注入恶意代码,并发布新版本。
- 依赖这些“被篡改”的包的下游项目也会自动引入恶意代码,形成链式感染。
- 同一开发团队或 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.json、package-lock.json、pnpm-lock.yaml、yarn.lock 及 node_modules 目录 | 重点关注 preinstall、postinstall 等自动执行脚本 |
| 3. 清理残留 | 检查 router_runtime.js、setup.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都安全可控。



