IKUN
发布于 IP属地浙江省

【安全大事件】Axios 在 npm 仓库遭入侵,恶意版本植入跨平台远程控制木马

Axios(JavaScript主流HTTP客户端库,周下载量超3亿次)在npm仓库遭供应链攻击,攻击者劫持核心维护者账号,发布恶意版本并植入跨平台远程访问木马(RAT)。本次攻击仅针对特定版本,安全工程师需重点关注版本排查、恶意痕迹清理及系统加固,快速阻断攻击链路。 原文:https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan

一、事件核心概述

axios(JavaScript主流HTTP客户端库,周下载量超3亿次)在npm仓库遭供应链攻击,攻击者劫持核心维护者账号,发布恶意版本并植入跨平台远程访问木马(RAT)。本次攻击仅针对特定版本,安全工程师需重点关注版本排查、恶意痕迹清理及系统加固,快速阻断攻击链路。

二、受影响版本(核心重点)

本次攻击仅涉及axios两个特定版本,无其他版本受影响,具体如下:

  • 高危受影响版本:axios@1.14.1(1.x分支,针对新版本用户)、axios@0.30.4(0.x分支,针对旧版本用户)
  • 安全版本:所有低于1.14.1的1.x版本(如1.14.0及以下)、所有低于0.30.4的0.x版本(如0.30.3及以下),以及官方后续发布的修复版本
  • 关联恶意依赖:恶意axios版本会强制拉取plain-crypto-js@4.2.1(攻击者预置的恶意依赖,用于投放RAT)

三、快速排查方案(安全工程师实操)

排查核心:确认系统/项目中是否存在受影响axios版本及关联恶意依赖,分3个维度实操,优先排查生产环境、CI/CD节点及开发环境。

3.1 项目依赖排查(最直接)

针对所有Node.js项目,执行以下命令快速检测,无需复杂工具:

# 1. 查看当前项目axios版本(直接定位是否受影响)
npm list axios
yarn list axios  # 若使用yarn管理

# 2. 查看是否存在恶意依赖plain-crypto-js@4.2.1
npm list plain-crypto-js
yarn list plain-crypto-js

# 3. 批量排查服务器所有Node.js项目(适用于多项目部署场景)
find /path/to/projects -name "package.json" -exec grep -l '"axios": "' {} \; | xargs -I {} sh -c 'echo "项目路径: {}"; cat {} | grep -A 1 "axios"'

排查判定标准:只要输出结果中包含axios@1.14.1、axios@0.30.4,或plain-crypto-js@4.2.1,即判定为受影响。

3.2 系统层面排查(检测RAT植入痕迹)

恶意版本会通过postinstall钩子投放RAT,不同系统痕迹不同,重点排查以下路径和进程(对应RAT持久化位置):

  • macOS系统
    • 排查路径:/Library/Caches/com.apple.act.mond(伪装系统缓存的RAT文件)
    • 排查命令:ls -la /Library/Caches/com.apple.act.mond; ps aux | grep com.apple.act.mond
  • Windows系统
    • 排查路径:%PROGRAMDATA%\wt.exe(伪装Windows终端的RAT相关文件)、%TEMP%\6202033.ps1(临时RAT脚本)
    • 排查命令:dir %PROGRAMDATA%\wt.exe; tasklist | findstr "wt.exe"; dir %TEMP%\6202033.ps1
  • Linux系统
    • 排查路径:/tmp/ld.py(Python版RAT脚本)
    • 排查命令:ls -la /tmp/ld.py; ps aux | grep python3.*ld.py

3.3 网络层面排查(阻断C2通信)

恶意RAT会与C2服务器通信,需排查是否有出站流量指向以下地址,同时在防火墙/IPS中阻断:

# C2服务器地址(核心阻断目标)
http://sfrclak.com:8000/6202033

# 排查服务器出站流量(以Linux为例)
netstat -an | grep sfrclak.com
ss -an | grep 8000
grep "sfrclak.com" /var/log/nginx/access.log  # 若有Web服务,排查日志

四、修复与处置方案(优先级:紧急处置→彻底修复→长期加固)

4.1 紧急处置(立即执行,阻断攻击)

针对已排查出的受影响节点,优先执行以下操作,快速停止恶意行为:

  1. 终止恶意进程:
    1. macOS:kill -9 $(ps aux | grep com.apple.act.mond | grep -v grep | awk '{print $2}')
    2. Windows:taskkill /f /im wt.exe; taskkill /f /im powershell.exe(若关联RAT进程)
    3. Linux:kill -9 $(ps aux | grep python3.*ld.py | grep -v grep | awk '{print $2}')
  2. 删除恶意文件:
    1. macOS:rm -f /Library/Caches/com.apple.act.mond
    2. Windows:del /f %PROGRAMDATA%\wt.exe; del /f %TEMP%\6202033.ps1
    3. Linux:rm -f /tmp/ld.py
  3. 临时阻断C2通信:在防火墙、IPS中添加规则,禁止所有节点访问sfrclak.com及8000端口。

4.2 彻底修复(清除依赖层面恶意文件)

紧急处置后,修复项目依赖,彻底清除恶意包体,避免重启后复发:

# 1. 卸载受影响axios版本及恶意依赖
npm uninstall axios plain-crypto-js
yarn remove axios plain-crypto-js

# 2. 安装安全版本(根据项目适配选择)
# 1.x分支用户(推荐,稳定且无漏洞)
npm install axios@1.14.0
# 0.x分支用户(需兼容旧代码)
npm install axios@0.30.3

# 3. 清理npm缓存,避免缓存中的恶意包被重新安装
npm cache clean --force
yarn cache clean

# 4. 验证修复结果(确认无恶意版本)
npm list axios plain-crypto-js

补充说明:若项目依赖锁定文件(package-lock.json、yarn.lock)中存在受影响版本,需手动删除锁定文件后重新安装,确保依赖树纯净。

4.3 长期加固(防范同类供应链攻击)

结合本次攻击特征,安全工程师需从3个层面加固,避免再次遭遇类似攻击:

  • 依赖管理加固:
    • 使用npm audit、snyk等工具定期扫描项目依赖,检测恶意包或漏洞包;
    • 锁定依赖版本(在package.json中指定具体版本号,避免^、~等模糊版本);
    • 禁止项目自动安装未知依赖,CI/CD流程中添加依赖校验步骤。
  • 账号与权限加固:
    • 排查团队内部npm账号,删除长期访问令牌,改用OIDC可信发布机制(如GitHub Actions OIDC);
    • 给npm账号启用双因素认证(2FA),避免账号被劫持;
    • 限制核心依赖包的维护者权限,减少账号泄露风险。
  • 监控与应急加固:
    • 监控npm仓库中核心依赖的版本更新,若出现非官方发布的异常版本,立即排查;
    • 在服务器部署EDR工具,监控异常进程、文件写入及出站流量,及时发现RAT等恶意程序;
    • 建立供应链攻击应急流程,明确排查、处置、复盘的步骤,提升响应效率。

五、关键提醒

  • 本次攻击的恶意版本具有自清理机制,setup.js执行后会删除自身及相关痕迹,若排查时未发现恶意文件,不代表未被入侵,需结合版本排查结果确认。
  • 若生产环境使用受影响版本,修复前需做好备份,避免影响业务正常运行;修复后需重启相关服务,确保恶意进程彻底终止。
  • 持续关注axios官方公告,若官方发布新版本(如1.14.2、0.30.5),优先升级至官方修复版本,避免使用非官方镜像源安装。
浏览 (136)
点赞 (2)
收藏
打赏
评论