Axios compromised on NPM – Malicious versions drop remote access trojan
axios npm 供应链攻击事件总结 (Axios npm Supply Chain Attack Summary)
事件概要:
StepSecurity 在 2026 年 3 月 30 日发现,恶意攻击者在 npm 仓库发布了两个被篡改的 axios HTTP 客户端库版本:axios@1.14.1 和 axios@0.30.4。这些恶意版本引入了一个新的依赖项 plain-crypto-js@4.2.1,该依赖项包含一个 postinstall 脚本,充当跨平台远程访问木马 (RAT) 释放器,目标平台包括 macOS、Windows 和 Linux。该木马与攻击者的命令与控制 (C2) 服务器通信,并传递平台特定的第二阶段有效负载。执行后,恶意软件会删除自身并替换其 package.json 文件,以逃避取证检测。
重要提示: 如果您安装了 axios@1.14.1 或 axios@0.30.4,请假设您的系统已被入侵。
攻击细节:
- 攻击者手法: 非典型的供应链攻击,并未在 axios 源代码中注入恶意代码,而是通过伪造依赖项
plain-crypto-js@4.2.1来执行攻击。 - 预先准备: 攻击者在攻击发生前 18 小时就预先部署了恶意依赖项,并为三个操作系统构建了三个有效负载。
- 精准性: 攻击者在 39 分钟内同时发布了两个恶意版本,并设计了所有组件进行自我销毁。
- 绕过检测: 恶意代码在
npm install完成前 2 秒就已启动,绕过了许多安全扫描器。 - 攻击流程:
- 攻击者入侵了 axios 项目的主要维护者
jasonsaayman的 npm 账户,并将电子邮件更改为ifstap@proton.me。 - 攻击者将
plain-crypto-js@4.2.1预先发布到 npm 仓库。 - 攻击者利用入侵的账户发布了恶意版本的 axios。
plain-crypto-js@4.2.1的postinstall脚本启动 RAT 下载和执行。- RAT 完成后,删除自身并用干净的
package.json文件替换,以掩盖痕迹。
- 攻击者入侵了 axios 项目的主要维护者
- 木马细节:
setup.js使用双重混淆技术(XOR 密码和 Base64 解码)来隐藏恶意代码。- 恶意软件使用
curl和python3命令在各个平台上执行有效负载。 - 攻击者利用 macOS 的 AppleScript、Windows 的 PowerShell 和 Linux 的 Python 来执行恶意代码。
- 恶意软件会删除自身及相关文件,并替换
package.json文件,以掩盖其存在。
检测与响应:
- StepSecurity 的 AI Package Analyst 和 Harden-Runner 发现了此次攻击。
- 攻击已向 axios 项目维护者报告。
- npm 已经取消发布了被篡改的 axios 版本,并对
plain-crypto-js进行了安全封锁。
缓解措施:
- 立即检查: 检查项目是否安装了
axios@1.14.1或axios@0.30.4。 - 降级 axios: 将 axios 降级到干净版本,例如
axios@1.14.0或axios@0.30.3。 - 移除恶意依赖: 删除
node_modules/plain-crypto-js目录。 - 检查系统: 如果检测到恶意软件,请将系统重建为已知良好的状态。
- 轮换凭据: 轮换所有可能受到影响的凭据(npm tokens、AWS 密钥、SSH 密钥等)。
- CI/CD 检查: 审核 CI/CD 管道,查找安装了受影响版本的运行。
- 网络阻止: 阻止与 C2 服务器
sfrclak.com的通信。 - Harden-Runner: 使用 StepSecurity 的 Harden-Runner 限制网络访问,并检测异常行为。
- npm Package Cooldown Check 和 Package Compromised Updates Check: 使用 StepSecurity 的安全检查功能,确保引入的包是安全的。
社区活动:
StepSecurity 将于 20