跳转到主要内容

Axios被投毒?npm供应链攻击事件始末及排查修复指南

近期主流JavaScript库Axios遭黑客投毒,[email protected]与0.30.4版本被注入远程控制木马。本文详细解析Axios投毒事件原理,并提供全面的排查与修复指南。

axios被投毒 npm供应链攻击 axios木马 plain-crypto-js [email protected] [email protected] 前端安全 AntidetectBrowser zh-CN

近期,前端开发圈发生了一起重大的安全事件——全球广泛使用的主流 JavaScript HTTP 客户端库 Axios 被爆出遭到供应链投毒攻击。据安全研究机构 StepSecurity 披露,黑客成功劫持了 Axios 核心维护者的 npm 账号,并在特定的 npm 版本中恶意注入了远程控制木马。这一事件不仅引发了广大开发者的极大担忧,也再次为开源软件的供应链安全敲响了警钟。

事件始末:Axios 投毒事件的核心细节

Axios 是目前前端和 Node.js 后端开发中最常用的网络请求库之一,每周下载量数以千万计。根据相关安全通告,此次攻击者通过入侵 Axios 的核心维护者(jasonsaayman)的 npm 账号,将邮箱替换为匿名的 ProtonMail,从而绕过了正常的 GitHub Actions CI/CD 流程,通过 npm CLI 手动发布了被污染的安装包。

攻击原理解析:黑客是如何植入木马的?

此次攻击手法极其隐蔽,黑客并没有直接修改 Axios 的核心源代码,而是通过注入一个名为 plain-crypto-js 的虚假依赖包来实现恶意目的。该包是知名加密库 crypto-js 的仿冒品。

1. 掩护与潜伏

攻击者在发布恶意包前 18 小时,先发布了一个干净的版本 [email protected] 以打掩护,随后才发布了真正包含恶意代码的 4.2.1 版本,以此避免被各大安全扫描工具识别为全新的可疑依赖。

2. 触发恶意脚本

当开发者在终端执行 npm install axios 安装受影响的版本时,恶意依赖包中的 postinstall 钩子脚本(setup.js)会自动运行。该脚本经过了高度混淆,会在运行时解码 Base64 字符串,并连接到攻击者控制的远程 C2 服务器(如 sfrclak[.]com)。

3. 多平台后门植入

恶意脚本会根据开发者使用的操作系统,下载并执行对应的恶意载荷,最终建立持久化的远程控制后门:

操作系统 恶意行为与落地文件路径
macOS 下载恶意载荷至 /Library/Caches/com.apple.act.mond,伪装成系统文件在后台静默运行。
Windows 通过 PowerShell 定位二进制路径,复制到 %PROGRAMDATA%\wt.exe,并保存隐藏的木马脚本至 %TEMP%\6202033.ps1
Linux 通过 Node.js 执行 /tmp/ld.py,使用 nohup 在后台运行木马脚本。

完成植入后,木马会自动删除 setup.jspackage.json,并替换回纯净版本,导致开发者在检查 node_modules 目录时极难发现异常。

开发者如何自查与排查是否中招?

如果您在近期更新过项目依赖或新初始化了前端项目,必须立即进行安全自查。您可以参考 腾讯云安全通告 提供的以下命令进行排查:

检查项目依赖版本

npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
ls node_modules/plain-crypto-js 2>/dev/null

如果命令输出了上述版本号或找到了 plain-crypto-js 目录,说明您的项目可能已经受到了污染。

检查本地是否存在恶意落地文件

根据您的操作系统,执行以下命令检查是否存在木马文件:

  • macOS: ls -la /Library/Caches/com.apple.act.mond
  • Linux: ls -la /tmp/ld.py
  • Windows: dir "%PROGRAMDATA%\wt.exe"

应对措施与修复建议

如果确认您的设备或服务器已经感染了该恶意程序,建议采取以下紧急响应措施:

  1. 立即降级 Axios 版本:将项目中的 Axios 降级到安全的版本,如 <= 1.14.0<= 0.30.3,或者升级到官方发布的最新安全版本。执行 npm uninstall axios 后重新安装安全版本。
  2. 重置所有敏感凭证:由于木马具有窃取敏感信息的功能,您必须立即更换设备上存储的各种凭证,包括但不限于 npm token、云服务密钥、SSH Key、数据库密码以及各类 API Token。
  3. 系统重装与审计:对于已确诊感染的开发机或生产服务器,最安全的做法是备份核心代码后重装操作系统。同时,全面检查 CI/CD 流水线(如 Jenkins、GitHub Actions)是否被植入了后门。

开源供应链安全防范:开发环境的隔离至关重要

Axios 投毒事件暴露出开源生态中维护者账号安全的重要性。黑客正是通过盗取核心开发者的 npm 凭证实现了攻击。对于企业和个人开发者而言,如何保护自己的开发账号不被窃取、如何隔离高风险的开发环境成为了必修课。

在日常开发与运维中,强烈建议使用专业的环境隔离工具来管理不同权限的账号。推荐使用 AntidetectBrowser(防关联指纹浏览器)。它能够为每个开发账号(如 GitHub、npm 平台账号)创建完全独立的浏览器指纹和运行环境。即使某个环境不慎访问了恶意站点或受到了环境特征扫描,也不会波及其他核心工作账号,有效防止 Cookie 被盗用和会话劫持,是保护开发者核心资产和抵御高级持续性攻击(APT)的强大辅助工具。

“开源软件的供应链攻击正变得越来越频繁且复杂,开发者不能盲目信任 npm 上的最新版本包,锁定依赖版本号并在更新前进行安全审计是基本素养。”

以下是一个关于 NPM 供应链攻击原理的科普视频,有助于加深对这类安全威胁的理解:

Axios 被投毒的受影响版本有哪些?

受此次投毒事件影响的 Axios npm 版本主要为 [email protected][email protected]。如果您的项目中使用了这两个版本,请立即进行排查和降级修复。

恶意包 plain-crypto-js 的作用是什么?

[email protected] 是一个伪装的依赖包,它利用 postinstall 钩子在开发者执行 npm install 时自动运行恶意脚本(setup.js)。该脚本会连接远程服务器并下载针对不同操作系统(Windows、macOS、Linux)的远程控制木马。

如果发现自己电脑感染了 Axios 木马,应该怎么办?

如果确认感染,建议立即断开网络连接。最安全的彻底清除方式是重装操作系统。此外,必须立即重置所有在设备上使用过的敏感凭证,包括云服务密钥、SSH Key、npm Token 及各类密码。

如何防止类似 npm 供应链攻击对项目造成影响?

建议开发者在 package.json 中锁定依赖的具体版本号,提交 package-lock.json 或 yarn.lock 文件到版本控制系统。在升级重要依赖前,关注官方安全公告或使用 npm audit 等安全扫描工具检查已知风险。

如何保护开发者的 npm 和 GitHub 账号不被黑客劫持?

务必为所有重要账号开启双因素认证(2FA)。此外,推荐使用如 AntidetectBrowser 等防关联浏览器来物理隔离不同的工作账号环境,防止本地 Cookie 被恶意软件窃取后导致核心账号被黑客接管。

最后更新: