文章总结: 绿盟科技CERT披露Apifox桌面客户端遭CDN供应链投毒,攻击者篡改JS文件植入后门,窃取SSH密钥与用户凭证并实现远程控制。受影响版本为2.8.14及以下。报告详细分析了恶意代码混淆、RSA密钥硬编码及分阶段攻击流程,建议用户立即更新至安全版本、吊销凭证并阻断恶意域名,同时提供了完整IOC供排查。 综合评分: 92 文章分类: 供应链安全,恶意软件,应急响应,逆向分析,安全大事件
【安全事件】Apifox桌面客户端遭供应链投毒分析
原创
NS-CERT NS-CERT
绿盟科技CERT
2026年3月26日 19:33 北京
通告编号:NS-2026-0007
2026-03-26
| | | | — | — | | TAG: | Apifox、供应链攻击、CDN投毒 | | 危害程度: | 高 | | 版本: | 1.0 |
1
事件概述
近日,绿盟科技CERT监测到Apifox官方CDN托管的前端JS文件遭受了供应链投毒,恶意脚本被植入经过多重混淆的JavaScript代码,Apifox桌面客户端启动后会自动加载,可窃取用户主机系统信息和SSH密钥、用户凭证等敏感数据,攻击者后续可控制主机执行后门程序实现远程命令执行。影响范围较大,请相关用户尽快采取措施进行排查与防护。
Apifox是一款功能强大的 API 协作开发平台,它将 API 文档、调试、Mock(模拟)、自动化测试等多个核心功能集成,为前端、后端、测试人员提供一个统一的工作平台。
参考链接:
https://mp.weixin.qq.com/s/GpACQdnhVNsMn51cm4hZig
SEE MORE →
2影响范围
受影响版本
-
Apifox公网SaaS版桌面客户端(Windows/macOS/Linux)<= 2.8.14
注:在2026年3月4日至2026年3月22日期间使用了上述版本可能受影响。
不受影响版本
- Apifox客户端 >= 2.8.19 注:SaaS Web版与私有化部署版不受此次事件影响
3事件时间线
2026年3月4日:apifox.it.com DNS解析上线(Cloudflare托管),CDN的JS文件被投毒
2026年3月22日:apifox.it.com DNS记录下线,域名停止解析
2026年3月23日:Apifox官方发布新版本修复此问题
2026年3月25日:Apifox官方针对事件发布安全公告
2026年3月26日:绿盟科技CERT发布分析文章
4漏洞防护事件分析
Apifox官方CDN托管的资源被恶意篡改
Apifox在启动过程中会加载正常资源:
hxxps://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js
因未严格启用sandbox参数,且暴露了Node.js的API接口,导致攻击者可通过JavaScript控制Apifox的终端。
投毒恶意文件(Web Archive 还原):
hxxps://web.archive.org/web/20260305051418/hxxps://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js
2026年3月4日至2026年3月22日期间(18天),攻击者通过 Cloudflare CDN向Apifox桌面客户端分发恶意载荷;恶意文件在原本正常的事件统计功能上,嵌入了可窃取信息和进行远程控制的代码。
4.1 样本分析
投毒的恶意文件为apifox-app-event-tracking.min.js,文件大小约77KB;
该文件由两部分组成:第一部分约34KB,为合法的Apifox事件追踪SDK,采用Webpack打包,包含GA4、百度统计、阿里云 SLS、PostHog等多平台事件追踪模块,本身无恶意行为;第二部分约42KB,为攻击者追加的恶意后门代码,经过严重混淆处理。利用Apifox客户端对事件追踪脚本的信任机制实现隐蔽植入。
恶意代码采用了多重混淆技术,使用javascript-obfuscator对恶意代码段进行字符串数组旋转,所有字符串通过RC4算法加密存储,再进行Base64编码,并通过代理函数增加间接调用层次;所有关键数字常量均使用多步运算表达,规避静态扫描;注入无效代码分支,增加分析干扰;具备反调试机制,检测到调试器则触发死循环。
完整还原后的恶意代码为Node.js脚本,具备远程代码执行能力,主要功能特点如下:
RSA-2048私钥硬编码:恶意代码中硬编码了一个RSA-2048私钥,采用PKCS#8格式,共1703字符。该私钥用于两个核心用途:一是加密上报,从私钥中提取公钥,使用publicEncrypt配合OAEP 填充加密敏感信息后附加到HTTP请求头;二是解密指令,使用privateDecrypt配合OAEP和SHA-256解密C2服务器下发的Stage-1 payload。攻击者将私钥嵌入客户端代码属于设计失误,使研究人员能够解密全部C2通信,还原完整攻击链。
机器指纹采集:恶意代码通过MAC地址、CPU 型号、主机名、用户主目录和操作系统平台五个字段构造机器唯一标识,将拼接字符串进行SHA-256哈希,得到64字符的十六进制指纹,存储在localStorage的_rl_mc 键中。
Apifox用户凭证窃取:恶意代码从localStorage读取 common.accessToken,即 Apifox 登录令牌,利用该令牌调用官方API获取用户信息,从响应中提取用户邮箱和姓名,经RSA加密后附加到后续请求头中。
C2 通信协议:恶意代码向C2服务器发送带有自定义HTTP头的请求,包含以下字段:
af_uuid 为机器指纹SHA-256,明文传输;
af_os 为操作系统类型与版本号,明文传输;
af_user 为用户主目录路径,使用RSA-2048 OAEP加密;
af_name为主机名,使用RSA-2048 OAEP加密;
af_apifox_user为 Apifox账户邮箱,使用RSA-2048 OAEP加密;
af_apifox_name为 Apifox账户姓名,使用RSA-2048 OAEP加密。
远程代码执行:恶意代码从C2获取 RSA 加密的payload,经私钥解密后使用 eval() 直接执行,实现完全的远程代码执行。这意味着攻击者每次轮询C2可下发不同载荷,后续攻击行为未知。
持久化机制:恶意代码执行完毕后,在30分钟至3小时的随机间隔后会重新执行整个流程。只要Apifox应用保持运行,恶意代码就会持续活跃。
4.2 攻击流程
-
Apifox启动,加载被投毒的event-tracking.min.js文件 (77KB)
-
恶意代码执行:
– 采集机器指纹(MAC地址、CPU信息及主机名,使用SHA-256处理)
– 窃取Apifox访问令牌(accessToken),通过调用官方API获取用户邮箱
– 使用RSA-2048算法加密敏感数据
- 向C2服务器进行请求:GET /public/apifox-event.js
请求头包含af_uuid、af_os、af_user、af_name等字段
返回内容为经RSA加密的Stage-1加载程序(344字节)
- 对Stage-1进行RSA解密并执行eval函数:
– 动态创建
-->









评论