3 月 31 日消息,安全研究机构 StepSecurity 昨天发文称,主流 JavaScript 库 Axios 的两个 npm 版本 axios@1.14.1、axios@0.30.4 被恶意植入远程控制代码。

沧海网在此援引StepSecurity,黑客劫持了 Axios 核心维护者“jasonsaayman”的 npm 账号,将邮箱替换为匿名的 ProtonMail,随后绕过正常的 GitHub Actions 流程手动发布被污染版本,并直接通过 npm CLI 上传恶意安装包。

这个恶意安装包本身并没有直接修改 Axios 源码,而是注入了 plain-crypto-js@4.2.1 虚假依赖包,它原本在代码中从未被引用,唯一作用是执行 postinstall脚本并自动在安装时运行。

从流程来讲,攻击者提前18小时发布了plain-crypto-js@4.2.0、plain-crypto-js@4.2.1两个伪装包,前者是干净版本,用于打掩护;而后者是真正的恶意版本,利用4.2.0的掩护避免被安全工具识别为“全新可疑包”。

当开发者在终端执行 npm install axios 命令时,黑客埋下的 4.2.1 虚假包就会开始工作,自动安装依赖并触发 setup.js 执行恶意脚本。具体行径包括连接远程指挥服务器、根据系统下载恶意程序、保持后台运行和自我删除痕迹。

在苹果 macOS 上,恶意程序会被下载到/Library/Caches/com.apple.act.mond 目录,伪装成系统文件在后台运行;而在微软 Windows 则是先运行 where powershell 指令,定位二进制路径并复制到 % PROGRAMDATA%\wt.exe 目录,伪装成 Windows 终端可执行文件、运行隐藏脚本。

随后该恶意程序会通过 VBScript 写一个完全隐藏的 cmd.exe 窗口,将返回的 PowerShell 木马脚本保存在 % TEMP%\6202033.ps1 路径。Linux 系统则是通过 Node.js 的 execSync 直接执行 / tmp/ld.py 脚本,将返回的木马脚本用 nohup后台运行。

攻击完成后,该木马会删除 setup.jspackage.json 并用纯净版本替换,导致开发者检查 node_modules 文件时完全看不出异常。

开发者可以通过 npm list axios 指令检查 Axios 版本,然后通过 ls node_modules/plain-crypto-js 检查是否被植入恶意依赖。

如果设备已经感染,开发者应尽快重装系统,更换 npm token、云服务密钥、SSH Key 等凭证,并检查 CI / CD 流水线。

发表回复

后才能评论