紧急!Axios 被投毒,3亿项目受到影响!教你怎么自查!

iPython
iPython
发布时间:2026-10-15| 1人浏览过
原创

Axios 惊现恶意版本:一场针对前端生态的精准供应链攻击

2026年3月30日,一场针对前端生态的“地震”发生了。作为每周下载量超亿次、最为主流的HTTP客户端库,Axios被曝出在npm官方仓库中植入了两个恶意版本:axios@1.14.1 和 axios@0.30.4。这可不是普通的安全漏洞,而是一场精心策划、极高危的软件供应链攻击。

图片攻击事件示意图

核心攻击方式:一场教科书式的“隐秘行动”

先来看攻击是如何实施的。整个过程可谓环环相扣,极具迷惑性,堪称供应链攻击的“教科书案例”。

第一步:维护者账号被盗。 攻击者直接盗取了Axios核心维护者的npm账号。这意味着,恶意版本是由合法账号发布,完全绕过了最新的CI/CD安全检查流程。这些版本没有对应的合法Git提交记录,也没有经过OIDC校验,仅凭肉眼查看npm页面,极难区分真伪。

第二步:植入“幽灵依赖”。 这两个恶意包本身对Axios源码的修改微乎其微,仅在package.json中偷偷加入了一个名为plain-crypto-js@4.2.1的依赖项。蹊跷之处在于,这个包在Axios的源码中完全没有被引用。它的唯一使命,就是触发postinstall这个安装后钩子脚本——木马执行的起点。

第三步:部署跨平台远控木马。 plain-crypto-js包内携带了一个经过混淆的恶意脚本setup.js,在安装时会自动执行。这个脚本的能力相当全面:

  • 自动识别macOS、Windows或Linux系统;
  • 连接攻击者的C2(命令与控制)服务器sfrclak.com:8000;
  • 下载对应的攻击载荷(Payload);
  • 窃取本地密钥、SSH凭证、云服务凭据、环境变量等一切敏感信息。

第四步:极强的反侦察“擦除”能力。 这才是整个攻击链最令人警觉的地方。木马执行后,会立刻进行“自我销毁”:不仅删除自身,还会将package.json替换回一个干净的版本。事后再用npm list检查,显示的将是完全正常的版本号,几乎不留痕迹。唯一的物理证据,就是node_modules目录下是否残留着plain-crypto-js这个文件夹。它的存在,就等于系统中招的铁证。

受影响版本:立即核对你的依赖树

以下是明确的版本清单,请务必仔细核对:

  • 有毒版本(立即处理):axios@1.14.1、axios@0.30.4、plain-crypto-js@4.2.1
  • 安全版本(可回退至):axios@1.14.0、axios@0.30.3

前端自查命令:一分钟快速诊断

打开你的项目终端,执行以下命令,快速排查风险:

# 检查是否安装了恶意版本的Axios
npm list axios | grep -E “1\.14\.1|0\.30\.4”

# 检查项目中是否存在恶意的依赖目录
ls node_modules/plain-crypto-js

紧急修复步骤:按顺序操作,杜绝后患

如果发现中招,请立即按以下步骤处理:

  1. 立即降级至安全版本。
    # 主流版本用户
    npm install axios@1.14.0
    
    # 仍在使用旧版的用户
    npm install axios@0.30.3
  2. 在package.json中精确锁定版本,避免后续依赖升级时再次引入风险。
  3. 物理删除恶意依赖目录。
    rm -rf node_modules/plain-crypto-js
  4. 加固CI/CD流程。 建议在构建命令中增加—ignore-scripts参数,全局禁用安装钩子脚本,从根本上阻断此类攻击途径。
  5. 进行安全评估。 如果机器已经执行过恶意包,必须假设所有密钥和凭证均已泄露。需要立即轮换所有相关的密钥、令牌,在极端情况下,甚至应考虑重置或重装开发环境。

高危提醒:这不是演习

必须警惕的是,此次攻击的精准度和隐蔽性都达到了极高水准。从依赖安装到外联控制,整个过程可能仅在数秒内完成。无论是前端项目、开发者本地机器,还是集成了npm安装的CI/CD流水线,都面临着严重的敏感信息泄露风险。时间紧迫,尽快排查,刻不容缓。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。