写点什么

npm 爆发重大供应链攻击:Axios 被植入远控木马,影响或已扩散

作者:Daniel Curtis
  • 2026-04-07
    北京
  • 本文字数:1093 字

    阅读完需:约 4 分钟

2026 年 3 月 31 日,npm 生态系统遭遇了最严重的供应链攻击之一:Axios这个每周下载量超过 1 亿次的 HTTP 客户端库的两个版本被发现包含一个完全可用的远程访问木马。受影响的版本 axios@1.14.1 和 axios@0.30.4 通过疑似被劫持的维护者账户发布到 npm 仓库,并在被移除前上线了一段时间,足以影响数量未知的开发者环境。

此次攻击最早由 Socket 发现,其自动化恶意软件扫描器在恶意的传递依赖 plain-crypto-js@4.2.1 出现在仓库后的六分钟内即发出警报。该包在前一天以合法 crypto-js 库的拼写仿冒(typosquat)形式被植入为“干净”版本,随后在第二次发布中被投毒,这一发布与 Axios 的版本发布时机精确配合。Axios 的 1.x 和 0.x 两个分支在 39 分钟内先后被投毒,这意味着任何使用 ^1.14.0 或 ^0.30.0 这类插入符范围的项目,在下一次安装依赖时都会悄然拉取到恶意代码。

这两个版本均未出现在 Axios 官方 GitHub 发布标签中,这与项目正常的发布流程不符,GitHub 上的安全研究人员也第一时间指出了这一异常。一位协作者公开表示,攻击者在 npm 上的权限一度高于他们自身,导致团队短时间内无法撤销其访问权限。随后,一名 Axios 维护者确认正在调查此次入侵的发生原因,初步分析指向长期存在的 npm token 与受信任发布机制一同使用,可能构成了攻击路径。

Socket 创始人 Feross Aboukhadijeh 在 X 上表示:

每一次 npm install 拉取最新版本现在都可能被攻破。Socket 的 AI 分析确认这是恶意软件。

Andrej Karpathy 也分享了自己的一次“险些中招”的经历,他写道:

在扫描我的系统时,我发现几天前在尝试 gmail/gcal CLI 时,从 googleworkspace/cli 中导入了一个 use。所安装的版本(幸运的是)解析到了未受影响的 1.13.5,但该项目的依赖并未固定版本,这意味着如果我是在今天早些时候进行这一步操作,代码就会解析到最新版本,而我就会被攻破。

他进一步呼吁应更改包管理器的默认行为,以避免单个被攻破的包通过未固定版本的依赖随机传播给用户。Hacker News 上的讨论也呼应了这一观点,有评论指出,仅在 ~/.npmrc 中设置 ignore-scripts=true 就可以缓解这一漏洞,并提到 Bun 和 pnpm 默认并不会运行安装脚本。

所有受影响的项目都应立即回滚。Axios 团队已经在仓库中正式弃用了受污染版本。使用其他 HTTP 客户端(如原生 fetch API、gotky)的项目未受影响。与 Axios 不同,这些库不涉及原生浏览器 polyfill 问题,并且依赖树显著更小,这一差异再次引发社区关于“最小依赖”作为安全策略的讨论。WizSnykAikidoStepSecurity 也分别发布了详细的事件分析和修复指南。

原文链接:

https://www.infoq.com/news/2026/04/axios-supply-chain/