Axiosnpm供应链攻击从TTP层面特征的归属分析

admin 2026-04-02 03:48:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档分析了2026年3月发生的axiosnpm供应链攻击事件,攻击者通过劫持维护者账户发布恶意版本(1.14.1/0.30.4)并注入plain-crypto-js依赖,采用双层混淆、多平台载荷投递和反取证技术。研究基于TTP特征将该攻击高度置信归因于LABYRINTHCHOLLIMA组织(隶属Lazarus),并提供了完整的IOC指标和检测防御建议。 综合评分: 92 文章分类: 供应链安全,威胁情报,恶意软件,漏洞预警,应急响应


cover_image

Axios npm 供应链攻击从TTP层面特征的归属分析

原创

威胁情报中心 威胁情报中心

奇安信威胁情报中心

2026年4月1日 14:03 北京

事件概述

基本信息

| 项目 | 详情 | | — | — | | 受影响包 | axios (最受欢迎的 JavaScript HTTP 客户端库,每周下载量超过1亿次) | | 恶意版本 | [email protected] 和 [email protected] | | 攻击向量 | 劫持 axios 主要维护者 jasonsaayman 的 npm 账户 | | 恶意依赖 | [email protected] | | C2服务器 | sfrclak.com:8000 (IP: 142.11.206.73) | | 暴露窗口 | 约2小时53分钟 (1.14.1) / 2小时15分钟 (0.30.4) |

攻击时间线

| 时间 (UTC) | 事件 | | — | — | | 2026-03-30 05:57 | [email protected] 发布 (干净诱饵版本,建立发布历史) | | 2026-03-30 23:59 | [email protected] 发布 (包含恶意载荷) | | 2026-03-31 00:21 | [email protected] 发布 (注入恶意依赖) | | 2026-03-31 01:00 | [email protected] 发布 (39分钟后,同时攻击0.x分支) | | 2026-03-31 03:15 | npm 下架恶意版本 |


攻击技术详情

1. 账户劫持与权限获取

攻击者通过未知方式获取了 axios 主要维护者 jasonsaayman 的长期有效 npm 访问令牌,并将账户邮箱更改为 [email protected]

关键取证指标:

// 合法版本 ([email protected]) - 通过 GitHub Actions OIDC 发布
"_npmUser": {
  "name": "GitHub Actions",
  "email": "[email protected]",
  "trustedPublisher": {
    "id": "github",
    "oidcConfigId": "oidc:9061ef30-3132-49f4-b28c-9338d192a1a9"
  }
}

// 恶意版本 ([email protected]) - 手动发布,无 OIDC 绑定
"_npmUser": {
  "name": "jasonsaayman",
  "email": "[email protected]"
  // 无 trustedPublisher,无 gitHead
}

2. 依赖注入攻击

攻击者仅修改了 package.json,添加了一个从未在 axios 源码中导入的依赖:

--- axios/package.json (1.14.0)
+++ axios/package.json (1.14.1)
- "version": "1.14.0",
+ "version": "1.14.1",
   "dependencies": {
     "follow-redirects": "^2.1.0",
     "form-data": "^4.0.1",
     "proxy-from-env": "^2.1.0",
+   "plain-crypto-js": "^4.2.1"
   }

3. 恶意依赖结构 (plain-crypto-js)

| 文件 | 4.2.0 (诱饵) | 4.2.1 (恶意) | 变化说明 | | — | — | — | — | | package.json | 无 scripts 段 | 添加 "postinstall": "node setup.js" | 添加武器 | | setup.js | 不存在 | 4.2KB 混淆投递器 | 核心恶意代码 | | package.md | 不存在 | 干净 JSON stub (版本显示 4.2.0) | 反取证替换 |

4. RAT 投递器 (setup.js) 技术细节

双层混淆方案
  1. _trans_1(x, r)

    XOR 加密,密钥 "OrDeR_7077"

  2. _trans_2(x, r)

    字符串反转 + Base64 解码 + _trans_1

C2 通信特征
  • URL

    http://sfrclak.com:8000/6202033

  • POST 数据

    (按平台区分)

  • macOS: packages.npm.org/product0

  • Windows: packages.npm.org/product1

  • Linux: packages.npm.org/product2

  • 伪装

    使用 packages.npm.org/ 前缀模仿 npm 注册表流量

5. 平台特定载荷投递

| 平台 | 投递路径 | 技术特点 | | — | — | — | | macOS | /Library/Caches/com.apple.act.mond | AppleScript + osascript,伪装 Apple 系统守护进程 | | Windows | %PROGRAMDATA%\wt.exe%TEMP%\6202033.ps1/.vbs | VBScript 调用 PowerShell,创建持久化 PowerShell 副本 | | Linux | /tmp/ld.py | Python 后门,curl 下载执行 |

6. 反取证技术

  1. 自删除

    执行后删除 setup.js 本身

  2. 文件替换

    用干净的 package.md 替换 package.json

  3. 版本欺骗

    替换后的 package.json 显示版本为 4.2.0 (而非 4.2.1)

  4. 进程分离

    使用 nohup 和 & 将进程脱离 npm 进程树

  5. 静默失败

    所有错误被捕获并静默处理,npm install 始终返回成功


LABYRINTH CHOLLIMA 组织背景

组织档案

| 属性 | 详情 | | — | — | | 主要别名 | Gleaming Pisces, AppleJeus, Nickel Academy, Hidden Cobra, Citrine Sleet, UNC4736 | | 上级组织 | Lazarus Group | | 活跃时间 | 至少2018年至今 | | 主要目标 | 制造业、物流、国防、航空航天、加密货币平台 | | 攻击动机 | 间谍活动、破坏性攻击、经济利益 |

已知攻击技术 (TTPs)

  • 供应链攻击

    VMConnect、Operation Brainleeches、3CX 攻击

  • 恶意软件

    LightlessCan, KandyKorn, SugarLoader, Hloader, PondRAT, PoolRAT

  • 社会工程

    Operation Dream Job (虚假招聘)

  • 加密货币盗窃

    长期针对交易所和个人钱包


相似点对比分析

1. 供应链攻击手法

| 维度 | LABYRINTH CHOLLIMA (历史活动) | axios 攻击 | | — | — | — | | 攻击目标 | 开源包管理器 (PyPI/npm) | npm (axios) | | 代表性活动 | VMConnect、Operation Brainleeches | axios 供应链攻击 | | 投递方式 | 恶意包/依赖注入 | 依赖注入 (plain-crypto-js) | | 受害者类型 | 开发者、CI/CD 环境 | 开发者、CI/CD 环境 |

2. 预部署与信任建立策略

LABYRINTH CHOLLIMA VMConnect 活动:

  • 先发布干净包建立发布历史和信任
  • 后续更新版本植入恶意代码

axios 攻击:

  • 提前18小时发布 [email protected] (干净诱饵)
  • 随后发布 [email protected] (恶意载荷)

相似度: ⭐⭐⭐⭐⭐ (高度相似)

3. 多平台载荷投递

LABYRINTH CHOLLIMA:

  • PondRAT: macOS/Linux 后门
  • PoolRAT/SimpleSea: Linux 变种

axios 攻击:

  • macOS: AppleScript 投递 Mach-O 二进制
  • Windows: VBScript + PowerShell 投递
  • Linux: Python 后门投递

相似度: ⭐⭐⭐⭐⭐ (高度相似)

4. 反取证技术对比

| 技术 | LABYRINTH CHOLLIMA | axios 攻击 | | — | — | — | | 多阶段加密 | ✅ 多层加密载荷 | ✅ 双层字符串混淆 | | 文件清理 | ✅ 删除临时文件 | ✅ 删除 setup.js 和恶意 package.json | | 代码混淆 | ✅ 高度混淆 | ✅ XOR + Base64 双层混淆 | | 版本欺骗 | ⚠️ 部分活动 | ✅ package.json 版本号欺骗 | | 进程隐藏 | ✅ 进程注入/隐藏 | ✅ nohup 进程分离 |

5. 操作安全 (OPSEC)

| 特征 | LABYRINTH CHOLLIMA | axios 攻击 | | — | — | — | | 邮箱服务 | ProtonMail 等加密邮箱 | ✅ [email protected][email protected] | | 账户劫持 | 常见维护者账户接管 | ✅ jasonsaayman 账户劫持 | | 快速撤回 | 短期暴露后撤回 | ✅ 约2-3小时后撤回 |


归因分析

归因依据

1. 技术特征重叠

根据 ReversingLabs、CrowdStrike 的研究:

  • VMConnect 活动归因

    ReversingLabs 将 VMConnect 供应链攻击以高置信度归因于 Labyrinth Chollima

  • 代码结构相似

    axios 攻击中的载荷解密和执行链与 VMConnect 活动高度相似

  • 包命名策略

    模仿合法包的命名方式与 Operation Brainleeches 一致

2. 归因置信度评估

| 指标 | 评分 | 说明 | | — | — | — | | TTPs 匹配 | 高 | 预部署、多平台载荷、反取证技术 | | 代码相似性 | 高 | 混淆技术和载荷结构与历史活动一致 | | 基础设施 | 中-高 | ProtonMail、C2 通信模式 | | 目标一致性 | 高 | 开发者、供应链、加密货币 | | 整体置信度 | | 多家安全公司类似归因 |


IOCs (攻击指标)

恶意包哈希

| 包名 | 版本 | SHA-256 | | — | — | — | | axios | 1.14.1 | 2553649f2322049666871cea80a5d0d6adc700ca | | axios | 0.30.4 | d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71 | | plain-crypto-js | 4.2.1 | 07d889e2dadce6f3910dcbc253317d28ca61c766 | | setup.js | – | e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09 |

网络指标

| 类型 | 值 | | — | — | | C2 域名 | sfrclak.com | | C2 IP | 142.11.206.73 | | C2 URL | http://sfrclak.com:8000/6202033 | | C2 端口 | 8000 |

文件系统指标

macOS
/Library/Caches/com.apple.act.mond
/tmp/6202033
Windows
%PROGRAMDATA%\wt.exe
%TEMP%\6202033.vbs
%TEMP%\6202033.ps1
Linux
/tmp/ld.py

攻击者账户

| 账户 | 邮箱 | 角色 | | — | — | — | | jasonsaayman | [email protected] | 被劫持的 axios 维护者 | | nrwise | [email protected] | 恶意包发布者 |

相关恶意包

| 包名 | 描述 | | — | — | | @shadanai/openclaw | 包含 vendored 的 plain-crypto-js | | @qqbrowser/[email protected] | 包含篡改的 [email protected] |


检测与防御建议

立即检查步骤

# 1. 检查恶意 axios 版本
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
grep -A1 '"axios"' package-lock.json | grep -E "1\.14\.1|0\.30\.4"

# 2. 检查 plain-crypto-js 存在
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"

# 3. 检查 RAT 工件
# macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "COMPROMISED"

# Linux
ls -la /tmp/ld.py 2>/dev/null && echo "COMPROMISED"

# Windows (cmd.exe)
dir "%PROGRAMDATA%\wt.exe" 2>/dev/null && echo COMPROMISED

修复步骤

# 1. 降级到安全版本
npm install [email protected]   # 1.x 用户
npm install [email protected]   # 0.x 用户

# 2. 添加 overrides 阻止恶意版本
{
  "dependencies": { "axios": "1.14.0" },
  "overrides":    { "axios": "1.14.0" },
  "resolutions":  { "axios": "1.14.0" }
}

# 3. 移除恶意依赖
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts

长期防御措施

  1. 使用 –ignore-scripts
   npm ci --ignore-scripts
  1. 设置最小包年龄
   npm config set min-release-age 3  # 阻止3天内发布的包
  1. 验证 OIDC 来源
  • 检查 npm 发布是否通过 GitHub Actions OIDC
  • 手动发布 (无 trustedPublisher) 应视为高风险
  1. 监控幽灵依赖
  • 检查 package.json 中从未导入的依赖
  • 使用工具扫描未使用的依赖项
  1. CI/CD 安全
  • 在 CI/CD 中默认启用 --ignore-scripts
  • 使用 egress 防火墙限制出站连接
  • 监控异常网络活动
  1. 凭证轮换
  • 如果发现感染,立即轮换所有凭证
  • npm tokens、AWS 密钥、SSH 密钥、云凭证等

参考来源

  1. StepSecurity – axios Compromised on npm

    https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan

  2. Snyk – Axios npm Package Compromised

    https://snyk.io/blog/axios-npm-package-compromised-supply-chain-attack-delivers-cross-platform/

  3. ReversingLabs – VMConnect Supply Chain Campaign

    https://www.reversinglabs.com/blog/vmconnect-supply-chain-campaign-continues

  4. Elastic Security Labs – Inside the Axios supply chain compromise

    https://www.elastic.co/security-labs/axios-one-rat-to-rule-them-all

  5. MITRE ATT&CK – Lazarus Group

    https://attack.mitre.org/groups/G0032/

  6. CrowdStrike – Labyrinth Chollima Analysis

    Long-running North Korea threat group splits into 3 distinct operations

  7. Socket – Supply Chain Attack on Axios

    https://socket.dev/blog/axios-npm-package-compromised

点击阅读原文至ALPHA 9.1

即刻助力威胁研判


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:奇安信威胁情报中心 威胁情报中心 威胁情报中心《Axios npm 供应链攻击从TTP层面特征的归属分析》

评论:0   参与:  0