2026 年 3 月 31 日,安全研究机构 StepSecurity 发现 JavaScript 生态中最广泛使用的 HTTP 客户端库 axios 遭遇供应链攻击。攻击者劫持了 axios 首席维护者 jasonsaayman 的 npm 账号,成功向 npm 注册表发布了两个恶意版本。攻击者在 axios 源码中未注入任何恶意代码,而是通过注入一个幽灵依赖 [email protected],利用其 postinstall 脚本在安装时静默投放跨平台 RAT(远程访问木马)。

整个攻击预置时间跨度约 18 小时,展现了高度成熟的运营能力:

时间(北京时间)事件详情
2026-03-30 13:57[email protected] 发布由攻击者账号 [email protected] 发布。这是一个干净的伪装包,包含合法 crypto-js 源码的完整副本,无 postinstall 钩子。唯一目的是建立 npm 发布历史,使后续恶意版本在审查时不至于被标记为"零历史新包"。
2026-03-31 07:59[email protected] 发布同一攻击者账号发布恶意载荷版本postinstall: "node setup.js" 钩子和混淆投放器被引入。同时预置了 package.md(干净伪装的 package.json 存根),为后续自清理做准备。
2026-03-31 08:21[email protected] 发布被劫持的 jasonsaayman 账号(邮箱已被改为 [email protected])手动通过 npm CLI 发布。注入 plain-crypto-js@^4.2.1 为运行时依赖,目标为 1.x 现代用户群。
2026-03-31 09:00[email protected] 发布同一被劫持账号发布。两个版本分支在 39 分钟内被同时投毒,最大化覆盖面。
2026-03-31 ~09:30StepSecurity 检测到异常StepSecurity AI Package Analyst 和 Harden-Runner 在运行时验证中捕获到 C2 通信,确认为恶意包。
2026-03-31 ~10:00+社区响应安全研究员 @feross 等人在社交媒体发出公开预警。npm 官方开始处理。

所有合法的 axios 1.x 版本均通过 GitHub Actions + npm OIDC Trusted Publisher 机制发布,发布行为与特定 GitHub Actions 工作流密码学绑定。[email protected] 完全打破了这一模式——通过窃取的长期经典 npm Access Token 手动发布,没有 OIDC 绑定,GitHub 仓库中也不存在对应的 commit 或 tag。该版本仅存在于 npm 注册表中

文章转载自:猎户攻防实验室 如果侵权请联系我删除。󠄐󠄹󠅀󠄪󠄢󠄠󠄦󠄞󠄡󠄨󠄩󠄞󠄩󠄤󠄞󠄦󠄨󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄧󠄦󠄧󠄤󠄤󠄡󠄣󠄢󠄬󠅒󠅢󠄟󠄮