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

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

猎户攻防实验室 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_rsaid_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

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

跳转微信打开