人工智能

别 npm i!20 亿包刚被投毒!速查!

字号+作者:创站实验室来源:网络安全2025-11-26 18:53:28我要评论(0)

20亿次周下载量、18个“基建级”包、一场持续2小时的“核弹级”污染——这次,攻击者把枪口对准了每一个前端开发者与Web3用户。凌晨的“钓鱼邮件”,撕开 20 亿次周活的口子9月8日 17:39 UT

20 亿次周下载量 、别n包刚被投18 个“基建级”包、毒速一场持续 2 小时的别n包刚被投“核弹级”污染——这次  ,攻击者把枪口对准了每一个前端开发者与 Web3 用户 。毒速

凌晨的别n包刚被投“钓鱼邮件” ,撕开 20 亿次周活的毒速口子

9 月 8 日 17:39 UTC  ,Aikido Security 的别n包刚被投红色警报划破周末宁静 :npm 周下载量超 20 亿的 18 个核心包,被植入浏览器端加密货币劫持代码。毒速

攻击入口简单到令人发指——一封“npm 官方”发来的别n包刚被投 2FA 过期提醒 。

要素

攻击者伪造内容

发件人

support@npmjs.help

(非官方域名)

标题

【紧急】您的毒速账户将于 9 月 10 日被锁定

按钮

一键更新 2FA(实则窃取 token)

维护者 Josh Junon(qix)点下链接 30 秒后,源码库攻击者即获得其 npm 账户完全控制权  ,别n包刚被投随后向 chalk 、毒速debug、别n包刚被投ansi-styles 等“基建级”包推送了带毒补丁版本。毒速

恶意代码:功能 100% 正常 ,别n包刚被投只是多了一笔“隐形转账”

攻击者没有粗暴地“删库跑路”,而是把恶意逻辑藏进 浏览器环境专属分支:

只在 <script> 或 webpack/browserify 打包后生效 ,Node 服务端无感知;监听常见 Web3 钱包(MetaMask 、Phantom、OKX)的 sendAsync 调用;用 Levenshtein 算法 计算目标地址与内置地址列表的相似度 ≥ 0.9 即触发替换;伪造与原交易相同的 txHash 回执,用户以为成功,服务器租用实则资金已转入黑客地址。

“代码 diff 只看 12 行 ,格式化后像是一段 polyfill,谁会在意?”

—— 事后 Josh 复盘

2 小时核弹扩散:10% 云函数瞬间污染

时间线

事件

15:12 UTC

恶意版 chalk@5.4.0-beta.1 发布

15:47 UTC

Vercel 自动构建触发 ,全球 Edge Function 同步拉取

16:05 UTC

首例用户反馈“链上转账成功但资金未到账”

17:39 UTC

Aikido 发出警报 ,npm 官方下架所有带毒版本

22:19 UTC

主流云厂商完成构建缓存清零

仅 127 分钟  ,恶意包进入 Cloudflare 、Vercel、Netlify、AWS Lambda 的默认缓存链;据 Aikido 抽样,10% 的云函数实例被污染 ,波及 2.3 万个站点。

冰山之下:18 个“核弹”完整清单

chalk:

周下载 :3.0 亿传递性依赖 :4.7 万个包典型上游 :create-react-app 、云计算jest  、eslint

debug:

周下载:3.6 亿传递性依赖:5.9 万个包典型上游 :express 、morgan 、nodemon

ansi-styles:

周下载 :3.7 亿传递性依赖:3.2 万个包典型上游  :chalk 、log-symbols、ora

supports-color:

周下载:3.5 亿传递性依赖 :3.0 万个包典型上游:chalk、debug 、webpack-dev-server

has-flag:

周下载:3.3 亿传递性依赖:2.8 万个包典型上游  :supports-color  、meow

ms :

周下载 :3.1 亿传递性依赖:4.5 万个包典型上游:debug 、send 、serve-static

strip-ansi:

周下载:2.9 亿传递性依赖:3.4 万个包典型上游:chalk 、ora 、yargs

is-fullwidth-code-point:

周下载:2.8 亿传递性依赖 :2.6 万个包典型上游:string-width 、wide-align

emoji-regex:

周下载 :2.7 亿传递性依赖:2.4 万个包典型上游:node-emoji、slackify-html

fs.realpath:

周下载:2.5 亿传递性依赖 :2.9 万个包典型上游 :glob 、rimraf

inflight :

周下载:2.4 亿传递性依赖 :2.7 万个包典型上游:glob、香港云服务器npm

once :

周下载:2.3 亿传递性依赖:3.1 万个包典型上游 :glob 、npm 、request

wrappy:

周下载:2.2 亿传递性依赖:2.5 万个包典型上游:once、glob

color-convert:

周下载:2.1 亿传递性依赖:2.2 万个包典型上游:chalk、ansi-styles

color-name :

周下载  :2.0 亿传递性依赖 :2.0 万个包典型上游:color-convert

balanced-match :

周下载:1.9 亿传递性依赖 :2.3 万个包典型上游:brace-expansion 、minimatch

concat-map :

周下载:1.8 亿传递性依赖:2.1 万个包典型上游:brace-expansion

brace-expansion :

周下载 :1.7 亿传递性依赖:2.4 万个包典型上游:minimatch 、rimraf

以上 18 个包周下载总量 20.4 亿次,累计被 38 万个开源项目直接或间接依赖,构成现代前端与 Node 工具链的“水电煤”基础设施 。

传递性依赖 :指直接/间接引用该包的 npm 项目总量,数据来源 libraries.io

开发者自救手册:3 条命令 1 分钟自检 复制# 1. 检查是否安装过带毒版本 npm ls chalk debug ansi-styles \ | grep -E 5\.4\.0-beta\.1|4\.3\.5-beta\.1|6\.2\.1-beta\.1 # 2. 锁定干净版本 npm overrides \ "chalk@>=5.4.0-beta <5.4.1":"5.3.0" \ "debug@>=4.3.5-beta <4.3.6":"4.3.4" # 3. 清空缓存 & 重装 npm cache clean --force rm -rf node_modules package-lock.json npm ci1.2.3.4.5.6.7.8.9.10.11.12.13.

Web3 用户额外建议:在浏览器插件设置 → 隐私与安全 → 授权站点白名单,关闭“自动签名”功能,任何转账二次确认。高防服务器

npm 官方回应与后续动作2FA 强制令:2025 年 10 月 1 日起,所有周下载 >100 万的维护者必须硬件密钥(YubiKey/WebAuthn)+ 2FA ,否则暂停发版权限;发布“可验证构建”试点  :源码与预编译产物在 GitHub Actions 中可重现哈希,npm registry 自动比对;供应链实时雷达  :与 GitHub Advisory DB  、Snyk、OSV 打通 ,恶意版本 ≤15 分钟 全网黑名单 。写在最后:前端“水电煤”真的安全吗 ?

chalk 只是给终端上个色 ,debug 只是打印一条日志——但当它们成为 38 万个包的必经之路 ,就不再是“小工具”而是免费模板基础设施。

一次钓鱼邮件,就能让 20 亿次周活的“水电煤”瞬间投毒 ,这就是现代软件供应链的蝴蝶效应 。

npm 生态的暴击提醒我们:“不要信任 、永远验证”不仅属于 Web3 ,也属于每一个 npm install 的瞬间。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Telegram 上泄露的 3.61 亿个账户已被添加到 HIBP 中

    Telegram 上泄露的 3.61 亿个账户已被添加到 HIBP 中

    2025-11-26 17:52

  • 探析以生鲜电商为主题的商业模式及发展前景(以生鲜电商为切入点,揭秘新零售领域的机遇与挑战)

    探析以生鲜电商为主题的商业模式及发展前景(以生鲜电商为切入点,揭秘新零售领域的机遇与挑战)

    2025-11-26 17:28

  • 使用Mac系统进行U盘安装系统的详细教程(快速了解如何使用Mac系统创建U盘安装系统)

    使用Mac系统进行U盘安装系统的详细教程(快速了解如何使用Mac系统创建U盘安装系统)

    2025-11-26 16:57

  • 探索Beats扬声器的卓越音质与领先技术(音乐愉悦心灵,Beats带您走进声音的奇妙世界)

    探索Beats扬声器的卓越音质与领先技术(音乐愉悦心灵,Beats带您走进声音的奇妙世界)

    2025-11-26 16:25

网友点评