Apifox 供应链投毒安全事件预警与排查

· 2026-03-27 10:50 · 38 阅读

猎户攻防实验室 2026-03-27 10:50 北京

字数 2830,阅读大约需 15 分钟

Apifox 供应链投毒安全事件预警与排查

一、事件概述

1.1 Apifox 产品简介

Apifox 是一款国产 API 一体化协作平台,集 API 文档、API 调试、API Mock、API 自动化测试于一体。该工具在国内开发社区拥有广泛的用户基础,被大量开发团队用于接口管理、前后端联调、自动化测试等场景。

项目

说明

产品定位

API 一体化协作平台

核心功能

API 文档、API 调试、Mock 服务、自动化测试

技术架构

桌面端基于 Electron 框架开发

支持平台

Windows、macOS、Linux

部署方式

公网 SaaS 版、私有化部署版

用户群体

国内大量开发团队、前后端工程师、测试工程师

由于 Apifox 在国内开发者群体中具有较高的普及度,此次供应链投毒事件的潜在影响范围较大,涉及大量开发者的核心敏感凭证。 |

1.2 事件基本信息

项目

详情

受影响产品

Apifox 公网 SaaS 版桌面客户端(Windows/macOS/Linux)

攻击时间窗口

2026年3月4日 - 2026年3月22日(持续 18天)

攻击类型

供应链投毒 / CDN 脚本篡改

攻击载体

官方 CDN 托管的前端脚本文件被注入恶意 JavaScript 代码

恶意域名apifox.it.com

(托管于 Cloudflare)

1.3 事件描述

在 2026年3月4日至3月22日期间,Apifox 公网 SaaS 版桌面客户端动态加载的一个外部 JavaScript 文件(事件统计/追踪脚本)被恶意攻击者篡改。

正常情况下,Apifox 启动时会加载:

https://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js

该文件正常大小为 34KB,但在投毒期间可能请求到被篡改版本(77KB,追加了约 42KB 的恶意代码)。


二、攻击技术简析

2.1 攻击链

2.2 技术特征

技术点

说明

框架利用

利用 Electron 框架未启用 sandbox 参数的缺陷,通过 Node.js API 执行系统命令

混淆层级

7层混淆:字符串数组旋转 + Base64/RC4 双层解密 + 代理函数 + 控制流扁平化 + 死代码注入 + 反调试陷阱

加密通信

内嵌 RSA-2048 私钥,使用 OAEP 填充加密敏感数据

持久化setTimeout

 在 30分钟 ~ 3小时 随机间隔重新执行

C2 特征

域名 apifox.it.com 使用 Cloudflare CDN 隐藏真实 IP

2.3 被窃取的敏感信息

数据类型

路径/内容

风险等级

SSH 私钥

~/.ssh/id_rsa

, ~/.ssh/id_ed25519 等

🔴 极高

Git 凭证

~/.git-credentials

🔴 极高

Shell 历史记录

~/.bash_history

, ~/.zsh_history

🟠 高

npm Token

~/.npmrc

🟠 高

进程列表

系统进程信息

🟡 中

Apifox 账户

邮箱、姓名、访问令牌

🟡 中

机器指纹

MAC地址 + CPU型号 + 主机名 + 用户主目录 SHA-256

🟡 中


三、恶意域名分析

3.1 域名欺骗性分析

攻击者使用的 C2 域名 apifox.it.com 具有高度欺骗性:

  • • .it.com 是商业性质的二级域名服务,非意大利国别域名 .it

  • • 无公开 WHOIS 信息,注册门槛极低

  • • 视觉上容易被误认为:

    • • Apifox 内部测试/研发域名

    • • Apifox 意大利区域服务域名

    • • Apifox 官方子产品域名

3.2 DNS 解析历史

IP 地址

所属组织

首次发现

最后发现

104.21.2.104

Cloudflare, Inc.

2026-03-04

2026-03-22

172.67.129.21

Cloudflare, Inc.

2026-03-04

2026-03-22

当前状态:DNS 记录已于 2026-03-22 下线,域名不再解析。


四、影响范围评估

4.1 受影响条件

同时满足以下条件的用户可能受影响:

  1. 1. ✅ 使用 Apifox 公网 SaaS 版桌面客户端(非网页版)

  2. 2. ✅ 在 2026年3月4日 - 3月22日 期间启动过 Apifox

  3. 3. ✅ 客户端版本 低于 2.8.19

  4. 4. ✅ 网络可访问 apifox.it.com(当时 DNS 生效)

4.2 不受影响的情况

  • • ❌ 仅使用 Apifox 网页版

  • • ❌ 使用 私有化部署版本

  • • ❌ 在攻击时间窗口外使用

  • • ❌ 已升级至 2.8.19 及以上版本


五、排查指南

5.0 快速判断标准

检测方法

判断标准

结果

LevelDB 存储键

存在 rl_mc 或 rl_headers 键

🔴 已中招

网络状态文件

包含 apifox.it.com 域名

🔴 已中招

SSH 密钥访问时间

攻击窗口期内有异常访问

🟠 高度可疑


5.1 方法一:检查 LevelDB 存储键(推荐)

恶意代码会将机器指纹存储在 localStorage._rl_mc,攻击载荷相关数据存储在 localStorage._rl_headers,这些数据保存在 LevelDB 数据库中。这是最直接的判断依据。

关键文件路径

平台

LevelDB 路径

WindowsC:\Users\<用户名>\AppData\Roaming\Apifox\Local Storage\leveldb
macOS~/Library/Application Support/Apifox/Local Storage/leveldb
Linux~/.config/apifox/Local Storage/leveldb

Windows 检测命令

# PowerShell - 检查 leveldb 中是否存在恶意键
Select-String-Path"$env:APPDATA\Apifox\Local Storage\leveldb\*"-Pattern"rl_mc","rl_headers"-List | Select-Object Path
# CMD 备用命令
findstr /S /I "rl_mc" "%APPDATA%\Apifox\Local Storage\leveldb\*.*"

结果判断:

  • • 有输出文件路径 → 🔴 已中招

  • • 无输出 → ✅ 安全

macOS 检测命令

# 检查 leveldb 中是否存在恶意键
grep -arlE "rl_mc|rl_headers" ~/Library/Application\ Support/Apifox/Local\ Storage/leveldb/

结果判断:

  • • 输出文件路径 → 🔴 已中招

  • • 无输出 → ✅ 安全

Linux 检测命令

# 检查 leveldb 中是否存在恶意键
grep -arlE "rl_mc|rl_headers" ~/.config/apifox/Local\ Storage/leveldb/

结果判断:

  • • 输出文件路径 → 🔴 已中招

  • • 无输出 → ✅ 安全


5.2 方法二:检查网络持久化状态文件

Chromium/Electron 应用会记录访问过的服务器属性到 Network Persistent State 文件。如果该文件包含恶意域名,说明曾连接过 C2 服务器。

关键文件路径

平台

Network Persistent State 路径

WindowsC:\Users\<用户名>\AppData\Roaming\apifox\Network\Network Persistent State
macOS~/Library/Application Support/apifox/Network/Network Persistent State
Linux~/.config/apifox/Network/Network Persistent State

Windows 检测命令

# 检查 Network Persistent State 文件中是否包含恶意域名
Get-Content"$env:APPDATA\apifox\Network\Network Persistent State" | Select-String'apifox.it.com'

结果判断:

  • • 有输出内容 → 🔴 已中招

  • • 无输出 → ✅ 安全

macOS 检测命令

# 检查 Network Persistent State 文件中是否包含恶意域名
grep -a "apifox.it.com" ~/Library/Application\ Support/apifox/Network/Network\ Persistent\ State

结果判断:

  • • 有输出内容 → 🔴 已中招

  • • 无输出 → ✅ 安全

Linux 检测命令

# 检查 Network Persistent State 文件中是否包含恶意域名
grep -a "apifox.it.com" ~/.config/apifox/Network/Network\ Persistent\ State

结果判断:

  • • 有输出内容 → 🔴 已中招

  • • 无输出 → ✅ 安全


5.3 方法三:检查 SSH 密钥访问时间(辅助判断)

恶意代码必须读取私钥文件才能窃取,可通过最后访问时间进行辅助判断。

Windows

# 查看私钥文件访问时间
Get-ChildItem-Path"$env:USERPROFILE\.ssh" | Select-Object Name, LastAccessTime
# 检查 .git-credentials
Get-Item-Path"$env:USERPROFILE\.git-credentials"-ErrorAction SilentlyContinue | Select-Object FullName, LastAccessTime

macOS / Linux

# 查看私钥文件最后访问时间
ls -lu ~/.ssh

判断标准:

  • • 关注 id_rsa、id_ed25519 等私钥文件(无 .pub 后缀)

  • • 如果在 2026-03-04 至 2026-03-22 期间有非主动操作的访问记录,需高度警惕


5.4 方法四:检查系统日志(辅助判断)

macOS

# 查询包含恶意域名的系统日志
log show --predicate 'eventMessage contains "apifox.it.com"' --last 30d --info --debug
# 查询 DNS 解析记录
sudolog show --predicate 'eventMessage contains "apifox.it.com" or eventMessage contains "104.21.2.104" or eventMessage contains "172.67.129.21"' --last 30d

Windows

# 查看 DNS 缓存(需管理员权限)
ipconfig /displaydns | findstr "apifox.it.com"

Linux

# 检查历史命令中的可疑记录
grep -E "apifox.it.com|curl|wget" ~/.bash_history ~/.zsh_history 2>/dev/null
# 检查网络连接历史(需要 root)
sudo journalctl -u NetworkManager --since "2026-03-04" --until"2026-03-23" | grep -i apifox

5.5 清理缓存(建议)

建议清理 Apifox 缓存和残留文件。

Windows

# 删除 Apifox 缓存目录
Remove-Item-Path"$env:APPDATA\Apifox"-Recurse-Force-ErrorAction SilentlyContinue
Remove-Item-Path"$env:LOCALAPPDATA\Apifox"-Recurse-Force-ErrorAction SilentlyContinue
Remove-Item-Path"$env:LOCALAPPDATA\com.apifox.app"-Recurse-Force-ErrorAction SilentlyContinue

macOS

# 彻底删除 Apifox 缓存和残留文件
rm -rf ~/Library/Application\ Support/Apifox
rm -rf ~/Library/Caches/com.apifox.app
rm -rf ~/Library/Saved\ Application\ State/com.apifox.app.savedState

Linux

# 清理缓存
rm -rf ~/.config/Apifox
rm -rf ~/.cache/Apifox

5.6 网络层检测(企业环境)

在企业网络环境中,可查询防火墙/代理日志:

# 检索恶意域名访问记录
domain: apifox.it.com
# 检索恶意 IP 连接
dst_ip: 104.21.2.104 OR 172.67.129.21

5.7 排查结果判定汇总

检测结果

状态

建议操作

LevelDB 检测到 rl_mc / rl_headers

🔴 已中招

立即执行应急处置

Network Persistent State 包含 apifox.it.com

🔴 已中招

立即执行应急处置

SSH 密钥有异常访问时间

🟠 高度可疑

建议按已中招处理

所有检测均无异常

✅ 安全

升级到最新版本,清理缓存


六、处置建议

6.1 立即措施(优先级:🔴 紧急)

序号

措施

说明

1

升级 Apifox

升级至 2.8.19 或更高版本

2

轮换 SSH 密钥

删除旧密钥,生成新密钥并重新部署

3

轮换 Git 凭证

撤销旧的 Personal Access Token,生成新 Token

4

轮换 npm Token

撤销并重新生成 npm access token

6.2 短期措施(优先级:🟠 高)

序号

措施

说明

1

检查代码仓库

审计近期提交是否为本人操作

2

检查服务器访问

审计服务器登录日志,排查异常访问

3

修改 Apifox 密码

更改账户密码,启用双因素认证

4

清理本地缓存

执行 5.1-5.3 中的清理命令

6.3 长期措施(优先级:🟡 中)

序号

措施

说明

1

部署网络监控

使用 LuLu/Little Snitch 等工具监控应用网络行为

2

建立密钥轮换机制

定期更换 SSH 密钥、API Token 等敏感凭证

3

加强供应链安全意识

对动态加载外部脚本保持警惕

4

实施最小权限原则

限制开发工具的网络访问权限


七、企业级响应建议

7.1 安全团队行动项

7.2 IOC 指标

类型

值

恶意域名apifox.it.com
恶意 IP104.21.2.104
恶意 IP172.67.129.21
恶意 URLhttps://apifox.it.com/public/apifox-event.js
恶意 URLhttps://apifox.it.com/event/0/log
被投毒文件apifox-app-event-tracking.min.js

(77KB 版本)

本地存储键localStorage._rl_mc

(存储机器指纹)、localStorage._rl_headers(攻击载荷相关)


八、官方修复说明

8.1 修复版本

  • • 安全版本:Apifox 桌面客户端 2.8.19 及以上

8.2 修复措施

  1. 1. 将相关埋点/统计脚本改为安装包内资源,不再从 CDN 动态拉取

  2. 2. 加强了 Electron 框架的安全配置

8.3 官方公告


九、总结

本次 Apifox 供应链投毒事件是一起典型的软件供应链攻击,攻击者利用 CDN 动态加载机制的缺陷,成功将恶意代码注入到广泛的开发者群体中。

核心教训:

  1. 1. 动态加载外部脚本存在重大安全隐患

  2. 2. Electron 应用需严格启用沙箱机制

  3. 3. 开发者需定期轮换敏感凭证(SSH 密钥、Token 等)

  4. 4. 供应链安全是现代软件开发不可忽视的一环


参考资料

  1. 1. Apifox 供应链投毒攻击 - 完整技术分析 https://rce.moe/2026/03/25/apifox-supply-chain-attack-analysis/

  2. 2. Apifox 官方公告 https://docs.apifox.com/8392582m0

  3. 3. Apifox CDN 供应链投毒事件简单复盘 - 离别歌 https://www.leavesongs.com/PENETRATION/apifox-supply-chain-attack-analysis.html

本报告基于公开信息整理,仅供参考。

跳转微信打开

本文转载自微信公众号「猎户攻防实验室」,查看原文。版权归原作者所有,如有侵权请联系删除。