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

相关推荐
剑亦未配妥3 小时前
移动端触摸事件与鼠标事件的触发机制详解
前端·javascript
在未来等你7 小时前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
人工智能训练师9 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
Seveny079 小时前
pnpm相对于npm,yarn的优势
前端·npm·node.js
yddddddy10 小时前
css的基本知识
前端·css
昔人'10 小时前
css `lh`单位
前端·css
前端君10 小时前
实现最大异步并发执行队列
javascript
围巾哥萧尘11 小时前
美式审美的商务头像照🧣
面试
Nan_Shu_61411 小时前
Web前端面试题(2)
前端