黑客劫持:周下载量超20+亿的NPM包被攻击

上周,黑客攻击者通过钓鱼手段入侵了 NPM 包维护者的账号,并在多个下载量巨大的包中注入恶意代码。这些包合计每周下载量超过 26 亿次,影响范围极其广泛。

事件经过

被劫持账号的维护者 Josh Junon(社区昵称 qix)已在第一时间确认了事件。

他表示,自己收到了伪装成 npm 官方的钓鱼邮件,发件域名是 support@npmjs.help,该域名背后的网站几乎一比一模仿了官方 npmjs.com

在邮件中,攻击者声称用户的账号 2FA(双因素认证)凭证已过期,要求立刻更新,否则账号将在 2025 年 9 月 10 日被锁定:

"作为我们持续加强账号安全的一部分,我们要求所有用户更新双因素认证(2FA)凭证。我们的记录显示,您已超过 12 个月未更新 2FA。" "为了保证您账号的安全性与完整性,请尽快完成更新。请注意,从 2025 年 9 月 10 日起,未更新的账号将被暂时锁定,以防止未经授权的访问。"

这些钓鱼邮件同时发往了其他包维护者和开发者。BleepingComputer 的调查显示,npmjs[.]help 页面上还带有一个假冒的登录表单,所有输入的凭证会被窃取并传输到如下地址:

Plain Text https://websocket-api2[.]publicvm.com/images/jpg-to-png.php?name=[name]&pass=[password]

事件曝光后,NPM 官方已经移除了部分攻击者上传的恶意版本,其中包括被广泛使用的 debug 包(每周下载量 3.576 亿次)。

攻击机制

安全公司 Aikido Security 的分析指出,攻击者在获得维护权限后,对包进行了更新,在 index.js 文件中注入了恶意代码。

这段代码本质上是一个基于浏览器的拦截器,可以劫持网络流量和应用 API。它主要针对通过 Web 访问受感染应用的用户,监控加密货币地址与交易,并将交易定向重写到攻击者控制的钱包地址。

恶意逻辑的运行方式包括:

  • 注入浏览器环境,监控 Ethereum、Bitcoin、Solana、Tron、Litecoin、Bitcoin Cash 等加密货币钱包。
  • 一旦发现交易请求,就在签名前篡改目标地址,资金最终流入攻击者账户。
  • 通过劫持 fetch、XMLHttpRequest 和钱包 API(如 window.ethereum、Solana 等)来实现拦截与篡改。

研究员 Charlie Eriksen 表示:

"这些包被更新后,会在用户的浏览器端执行一段隐藏代码,静默拦截 Web3 交互,篡改钱包调用,将资金和授权重定向至攻击者的账户,而用户毫无察觉。" "危险之处在于,它的运作层面非常广:既能篡改网页显示的内容,也能干预 API 调用,甚至能欺骗应用认为自己正在签署合法交易。"

受影响的包

目前确认被劫持的热门包包括(括号内为周下载量):

  • backslash(26 万)
  • chalk-template(390 万)
  • supports-hyperlinks(1920 万)
  • has-ansi(1210 万)
  • simple-swizzle(2626 万)
  • color-string(2748 万)
  • error-ex(4717 万)
  • color-name(1.917 亿)
  • is-arrayish(7380 万)
  • slice-ansi(5980 万)
  • color-convert(1.935 亿)
  • wrap-ansi(1.9799 亿)
  • ansi-regex(2.4364 亿)
  • supports-color(2.871 亿)
  • strip-ansi(2.6117 亿)
  • chalk(2.9999 亿)
  • debug(3.576 亿)
  • ansi-styles(3.7141 亿)

影响范围

尽管此次攻击的影响极大,但并非所有用户都会中招。Privy 首席安全工程师 Andrew MacPherson 指出,受害需要满足以下条件:

  1. 在 9 月 8 日美东时间上午 9:00 至 11:30 之间进行全新安装。
  2. 在该时间段生成了新的 package-lock.json 文件。
  3. 项目依赖链中包含了受影响的包。

这意味着实际受害范围要比初看时小很多。

背景与趋势

这并非孤立事件。过去几个月,NPM 已多次成为攻击者的目标:

  • 2025 年 7 月 :攻击者劫持了 eslint-config-prettier(周下载量超 3000 万)。
  • 2025 年 3 月:另有 10 个常用 npm 包被入侵,并植入信息窃取器。

这一系列事件显示:浏览器和前端供应链已经成为新的攻击面。通过篡改流量、窃取凭证和拦截交易,黑客能够直接突破开发与生产环境。

小结

npm 事件提醒我们,前端供应链已成为黑客眼中的"超级入口", 开源的便利与风险是并存的。未来,安全工程与前端开发之间的界限会越来越模糊,前端开发绝对不再仅限于"切图仔",需要在工具链之外,多一份"安全工程师思维"。

相关推荐
IT_陈寒3 分钟前
「Redis性能翻倍的5个核心优化策略:从数据结构选择到持久化配置全解析」
前端·人工智能·后端
Never_Satisfied5 分钟前
在JavaScript / HTML中,转移字符导致js生成的html出错
开发语言·javascript·html
weixin_446938879 分钟前
uniapp vue-i18n如何使用
前端·vue.js·uni-app
知识分享小能手22 分钟前
微信小程序入门学习教程,从入门到精通,WXS语法详解(10)
前端·javascript·学习·微信小程序·小程序·vue·团队开发
excel24 分钟前
Vue 组件与插件的区别详解
前端
JarvanMo1 小时前
Flutter 开发:应用颜色使用 Class 还是 Enum?—— 你应该选择哪一个?
前端
HBR666_2 小时前
AI编辑器(二) ---调用模型的fim功能
前端·ai·编辑器·fim·tiptap
晨非辰3 小时前
《剑指Offer:单链表操作入门——从“头删”开始破解面试》
c语言·开发语言·数据结构·c++·笔记·算法·面试
csgo打的菜又爱玩5 小时前
Vue 基础(实战模板与命名指南)
前端·javascript·vue.js
ding_zhikai5 小时前
SD:在一个 Ubuntu 系统安装 stable diffusion Web UI
前端·ubuntu·stable diffusion