紧急安全警报!axios 遭供应链攻击,恶意版本植入跨平台 RAT

早报13小时前发布 小马良
6 0

2026 年 3 月 30 日,npm 上超流行的 HTTP 客户端库 axios 遭遇严重供应链入侵,攻击者利用被盗维护者账号发布恶意版本,植入远程控制木马,波及 Windows、macOS、Linux 全平台。

  • 查看详细情况:https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
紧急安全警报!axios 遭供应链攻击,恶意版本植入跨平台 RAT

严重程度:危急 (Critical)
受影响版本: axios@1.14.1axios@0.30.4
安全版本: axios@1.14.0axios@0.30.3
发现时间: 2026 年 3 月 30 日
攻击者: 劫持了主要维护者 jasonsaayman 的账户

核心摘要

全球最流行的 HTTP 客户端库 axios 遭遇了一起极其复杂且精心策划的供应链攻击。攻击者利用被泄露的维护者凭证,在 npm 上发布了两个恶意版本(1.14.1 和 0.30.4)。

这些版本本身不包含恶意代码,但注入了一个名为 plain-crypto-js@4.2.1 的幽灵依赖项。该依赖项通过 postinstall 脚本,在安装时自动释放并执行一个跨平台远程访问木马 (RAT),针对 macOS、Windows 和 Linux 系统。

关键特征:

  • 隐蔽性极强:恶意脚本执行后会自我销毁,并用干净的配置文件覆盖证据,常规检查难以发现。
  • 针对性强:预置了针对不同操作系统的专属负载,伪装成系统合法进程。
  • 影响范围广:axios 周下载量超 3 亿,任何运行 npm install 或 npm update 的用户均面临风险。

攻击深度解析

1. 攻击链条 (Kill Chain)

  1. 账户劫持:攻击者入侵了 axios 主要维护者的 npm 账户,将邮箱改为匿名 ProtonMail 地址 (ifstap@proton.me),绕过了 GitHub Actions 的 OIDC 可信发布机制,手动发布恶意包。
  2. 预置陷阱:提前 18 小时发布了一个看似合法的诱饵包 plain-crypto-js@4.2.0,随后更新为包含恶意 postinstall 钩子的 4.2.1 版本。
  3. 注入依赖:在恶意 axios 版本中,强行添加 plain-crypto-js@^4.2.1 为依赖项。注意:axios 源码中从未导入或使用过该包。
  4. 触发执行:用户安装 axios 时,npm 自动拉取恶意依赖并执行 node setup.js
  5. 释放 RAT:脚本连接 C2 服务器 (sfrclak.com:8000),根据操作系统下载并执行第二阶段负载。
  6. 毁灭证据:执行完毕后,删除 setup.js 和包含钩子的 package.json,替换为干净版本,使 node_modules 看起来完全正常。
紧急安全警报!axios 遭供应链攻击,恶意版本植入跨平台 RAT

2. 恶意行为详解

操作系统持久化路径/文件名伪装手法执行方式
macOS/Library/Caches/com.apple.act.mond伪装成 Apple 活动监控守护进程通过 AppleScript 后台静默执行
Windows%PROGRAMDATA%\wt.exe伪装成 Windows Terminal (wt.exe)通过 VBScript 调用隐藏 PowerShell
Linux/tmp/ld.py伪装成普通 Python 脚本通过 nohup 后台运行

C2 通信特征:

  • 域名sfrclak.com
  • IP142.11.206.73
  • 伪装流量:POST 请求体包含 packages.npm.org/productX,试图混淆为正常的 npm 流量。

立即行动指南

第一步:检测是否受影响

在你的项目根目录运行以下命令:

# 1. 检查 axios 版本
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"

# 2. 检查是否存在幽灵依赖 (即使文件已被清理,目录可能仍在)
ls node_modules/plain-crypto-js 2>/dev/null && echo "⚠️ 警告:发现潜在感染痕迹!"

# 3. 检查系统是否已植入 RAT
# macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "🚨 严重:发现 macOS RAT!"
# Linux
ls -la /tmp/ld.py 2>/dev/null && echo "🚨 严重:发现 Linux RAT!"
# Windows (PowerShell)
if (Test-Path "$env:PROGRAMDATA\wt.exe") { Write-Host "🚨 严重:发现 Windows RAT!" }

第二步:紧急修复

如果你发现任何受影响迹象:

  1. 隔离机器:立即断开网络连接,防止数据外泄。
  2. 不要尝试原地清理:假设系统已完全被控。
  3. 重建环境:从已知干净的备份恢复系统,或重装操作系统。
  4. 轮换所有凭证:包括 npm token, AWS/GCP/Azure 密钥,SSH 私钥,数据库密码,CI/CD 变量等。

如果你未发现问题,但安装了受影响版本:

  1. 强制降级
    npm install axios@1.14.0
    # 或者对于 0.x 用户
    npm install axios@0.30.3
    
  2. 锁定版本:在 package.json 中添加 overrides (npm) 或 resolutions (yarn) 防止自动升级回恶意版本。
    "overrides": { "axios": "1.14.0" }
    
  3. 清理依赖
    rm -rf node_modules package-lock.json
    npm install --ignore-scripts
    

第三步:长期防御策略

  1. CI/CD 加固
    • 在所有 npm ci 或 npm install 命令中添加 --ignore-scripts 标志,阻止 postinstall 脚本自动执行。
    • 使用如 StepSecurity Harden-Runner 等工具,限制 GitHub Actions 的出站网络访问,仅允许白名单域名。
  2. 启用冷却期检查
    • 配置自动化工具,拒绝合并引入发布不足 24-48 小时的新版本 npm 包的 PR。
  3. 网络层拦截
    • 在防火墙或 DNS 层面封锁 C2 域名 sfrclak.com 和 IP 142.11.206.73

事件时间线 (UTC)

时间事件
05:57攻击者发布诱饵包 plain-crypto-js@4.2.0
23:59攻击者更新为恶意包 plain-crypto-js@4.2.1 (植入 postinstall)
00:21 (31 日)发布恶意 axios@1.14.1 (针对 1.x 用户)
01:00 (31 日)发布恶意 axios@0.30.4 (针对 0.x 用户)
 shortly afterStepSecurity AI 检测并披露威胁

反思

此次攻击展示了供应链攻击的最高水平

  • 身份窃取:绕过自动化 CI/CD,利用人工发布规避检测。
  • 幽灵依赖:利用未被使用的依赖项触发恶意代码,极难通过代码审计发现。
  • 自我清理:执行后销毁证据,让事后取证变得异常困难。
  • 跨平台打击:一套代码覆盖三大主流操作系统。

给开发者的忠告:

永远不要盲目信任 npm install。在生产环境中,务必锁定依赖版本,禁用自动脚本执行,并采用零信任的网络策略。

安全无小事,立即检查你的 package.json

© 版权声明

相关文章

暂无评论

none
暂无评论...