数百万 JS 开发者中招…… (Axios 遭黑客攻击)

BBetter Stack
Computing/SoftwareBusiness NewsInternet Technology

Transcript

00:00:00这可能是我们见过的最大的 NPM 供应链漏洞之一,
00:00:03不,这不是愚人节玩笑,只是时机太糟了,大家需要意识到这一点。
00:00:07它发生在 Axios 包中,这个 HTTP 客户端本周已被安装了 1.01 亿次,
00:00:13并且有超过 17.4 万个依赖项目。所以它已经影响了像 Datadog、
00:00:18OpenClaw 和 WordPress 这样的包,而且它还被关联到了朝鲜黑客。
00:00:22那么让我们直接开始,看看发生了什么。
00:00:29事情是这样的,在 2026 年 3 月 31 日,一名攻击者入侵了
00:00:34Axios 首席维护者的 NPM 账号,并发布了两个后门版本:版本 1.14.1,
00:00:39它被标记为最新版本;以及版本 0.30.4,它被标记为遗留版本。
00:00:44在这些包中,他们引入了一个名为 plaincryptojs 的影子依赖,
00:00:48它本质上就是正常的 crypto.js 包,但做了一个小改动,
00:00:52它包含一个名为 setup.js 的安装后脚本。这意味着每个用户和每个
00:00:58安装这些受损包的 CI 环境也都在运行这个脚本。脚本本身包含
00:01:02混淆代码,用于检查你正在使用的操作系统,然后连接到服务器
00:01:07下载与你当前系统相关的第二个有效负载。所以没有人在
00:01:12这次攻击中是安全的,他们甚至还确保了 macOS 的有效负载
00:01:16在 Intel 和 Apple 芯片的 Mac 上都能运行。而这第二个负载才是真正可怕的,
00:01:20这是一个 RAT(远程控制木马),它在所有操作系统上的工作方式基本相同。
00:01:25首先它会扫描你的文件,翻阅你的文档、桌面
00:01:29和配置文件夹,Windows 版本甚至会扫描你的 OneDrive、AppData
00:01:33以及系统上的每一个驱动器盘符,然后将该文件列表发送回服务器,
00:01:38可能是为了查看是否有值得偷的东西。在那之后,它就会开始
00:01:42发送心跳信号,每隔 60 秒就会向总部报告你的主机名、用户名、操作系统、
00:01:47时区、硬件型号以及所有正在运行的进程列表,这样攻击者就能看到
00:01:52你正在运行什么软件,以及是否在活跃使用。如果这些听起来还不够糟糕,
00:01:56最坏的部分还在后面,攻击者随时可以远程发出四个指令,
00:02:00让他们浏览你系统上的任何目录,运行任意的 Shell 命令或脚本,
00:02:05植入并执行额外的恶意软件,甚至杀掉整个进程以掩盖行踪。事实上,
00:02:10他们甚至确保原始的 setup 脚本会自我删除,然后删除含有
00:02:15安装后脚本的 package.json,并用干净的版本替换它,试图让这变得
00:02:19尽可能难以察觉。所以你可以看到这次黑客攻击非常严重,它的设计目标
00:02:23是针对开发者的工作站和 CI/CD 运行环境,寻找各种类型的秘密,如 .env 文件、
00:02:28NPM 令牌、SSH 密钥及其他任何东西;任何执行了这些恶意负载的系统
00:02:34都应该被视为发生了全面的凭证泄露。除此之外,关于
00:02:38NPM 账号是如何被入侵的仍然是个谜。维护者指出他开启了两步验证,
00:02:43并且他的 GitHub Action 流水线也开启了认证。所以目前看来,
00:02:47这些包是使用 NPM CLI 通过一个长期有效的 NPM 访问令牌发布的。所以接下来的问题是
00:02:53他们是如何拿到那个令牌的,维护者甚至认为有人可能
00:02:56获取了他的账号恢复代码,但具体是怎么做到的目前还是个谜。如果你想
00:03:01查看自己是否受到了影响,请务必在你的锁文件中搜索受影响的
00:03:04Axios 版本以及 plaincryptojs 包,并在你的 node_modules 中
00:03:09搜索该包本身。如果你发现了它们,不幸的是,这是个坏消息。你也可以
00:03:14检查系统中是否有木马遗留痕迹,我会把相关的完整报告链接放在下方,你可以按照
00:03:18步骤操作,并了解如果已被入侵该怎么办。在未来,也有一些
00:03:22你可以采取的步骤来尝试预防这些攻击,第一条就是永远提交你的锁文件,
00:03:26并确保在流水线中使用 npm ci 命令而不是 npm install 命令。
00:03:31你还应该确保在包管理器中设置了最短存在时间,确保
00:03:35安装的包至少已经发布了 48 小时,希望能及时发现任何恶意包,
00:03:39因为这次的 Axios 漏洞实际上在 3 小时后就被发现并删除了。最后,
00:03:44如果可能的话,在运行 npm install 时使用 ignore-scripts 标志,或者直接使用
00:03:48像 Bun 这样的包管理器,它默认会阻止所有安装后脚本,只在
00:03:53你明确列为信任的依赖项上运行。我希望这是我们今年看到的
00:03:57最大规模的攻击,但我们确实看到了越来越多的此类事件,所以请确保
00:04:01注意安全,并在下方评论区告诉我你对这一切的看法,
00:04:04或者点击订阅,一如既往,我们下期再见。

Key Takeaway

Axios 供应链攻击通过混淆的安装后脚本在 1.01 亿次下载量的生态中植入远程控制木马,暴露出即使开启两步验证的 NPM 账号也可能因令牌泄露而导致数百万开发者工作站及 CI/CD 环境的全面沦陷。

Highlights

2026年3月31日,Axios 首席维护者的 NPM 账号遭入侵并发布了包含后门的版本 1.14.1 和 0.30.4。

受损版本引入名为 plaincryptojs 的影子依赖,通过 setup.js 安装后脚本在用户系统和 CI 环境中执行恶意代码。

该漏洞影响了包括 Datadog、OpenClaw 和 WordPress 在内的 17.4 万个依赖项目,且 Axios 本周下载量达 1.01 亿次。

恶意负载作为远程控制木马(RAT),每隔 60 秒向攻击者服务器发送主机名、进程列表及系统元数据。

受影响版本在发布 3 小时后被发现并删除,但任何执行过负载的系统均面临全面的凭证和私钥泄露风险。

使用 Bun 包管理器或在 npm install 时添加 --ignore-scripts 标志可默认阻止此类安装后脚本攻击。

Timeline

Axios 供应链攻击规模与受灾范围

  • Axios 维护者账号被盗导致两个后门版本在 2026 年 3 月底发布。
  • 此次攻击影响超过 17.4 万个下游项目并关联至朝鲜黑客组织。

这是 NPM 生态中规模最大的供应链漏洞之一,针对每周被安装上亿次的 HTTP 客户端。受波及的知名包涵盖了 Datadog 和 WordPress 等主流工具。由于发生时间接近 4 月 1 日,最初曾被误认为是恶作剧,但实际威胁极高。

恶意代码植入机制与影子依赖

  • 版本 1.14.1 和 0.30.4 通过 plaincryptojs 依赖执行安装后脚本。
  • 恶意脚本 setup.js 会根据操作系统下载针对性的第二阶段有效负载。

攻击者利用名为 plaincryptojs 的包伪装成正常的 crypto.js,核心改动在于增加了一个安装后自动运行的 setup.js 脚本。该脚本使用混淆代码检测运行环境,并确保 macOS 负载能同时在 Intel 和 Apple 芯片上运行。这使得任何安装受损包的开发者或持续集成环境都会立即感染。

远程控制木马(RAT)的监控与窃取能力

  • 木马自动扫描 OneDrive、AppData 及所有系统盘符中的敏感文件。
  • 攻击者拥有远程执行 Shell 命令、植入额外恶意软件及自销毁痕迹的权限。

第二阶段负载是具备高度隐蔽性的 RAT,每分钟发送一次心跳信号报告主机状态和正在运行的进程。其目标是搜寻 .env 文件、NPM 令牌和 SSH 密钥等开发环境核心资产。为了掩盖行踪,原始脚本在运行后会删除受损的 package.json 并用干净版本替换。

入侵原因分析与未来防护策略

  • 入侵可能源于 NPM 长期有效访问令牌的泄露而非传统的两步验证绕过。
  • 通过设置包管理器最短存在时间 48 小时可有效拦截此类快速被清理的恶意包。

维护者虽然开启了双因素认证,但通过 NPM CLI 使用的长期令牌可能被窃取,或账号恢复代码已外泄。防御建议包括始终提交锁文件并使用 npm ci 确保安装一致性。此外,推荐使用默认禁止安装后脚本的 Bun,或者在运行安装命令时显式忽略脚本以切断恶意代码执行路径。

Community Posts

No posts yet. Be the first to write about this video!

Write about this video