MALFEX:8 个恶意 npm 包被下载 4 万次,投递 Overlord 远控

CloudSEK 与 Checkmarx 于 2026 年 10 月 7 日披露一个长期潜伏的 npm 供应链投毒行动,代号 MALFEX。研究人员把该活动归因为一名葡萄牙语背景的单一攻击者,其自 2023 年 8 月起陆续发布了 12 个 npm 包,其中 8 个被确认携带恶意代码,累计下载量达 40,767 次——仅 function-flag 一个包就贡献了 37,419 次。截至披露时,仍有 3 个包(function-flag、function-color、cdn-img-fetch)挂在 npm 仓库上可被安装。恶意载荷通过生命周期钩子自动执行,向 Windows 主机投递远控木马与窃密程序。

事件概述

被标记的 8 个恶意包分别是 tlxbnhd、tldriver、mxdriver、img-to-native、native-runner、function-flag、function-color 与 cdn-img-fetch。它们伪装成普通工具包,借 npm 的 postinstall 钩子在安装阶段自动运行恶意逻辑。攻击设计了三条独立的感染链路:一条投递 Overlord RAT,一条投递名为 movinlike 的 Node.js 窃密程序,第三条充当下载器从远程服务器拉取后续载荷。function-color 自身不含载荷,但它把 function-flag 声明为依赖,安装前者就会连带拉起后者,形成链式触发。

技术细节

Checkmarx 对 function-flag 1.7.3 版本的分析显示,其 postinstall 脚本会运行 example.js,调用一个以 Bloody 字体渲染的 ASCII 艺术函数;正是这个字体取值触发了隐藏逻辑,从 cdnzona.discloud.app(巴西应用托管服务上的一个域名)下载 node.exe,保存到 %APPDATA% 目录并以隐藏窗口运行。Overlord 是一款用 Go 编写的开源远控木马,它通过 Solana 区块链交易动态提取 C2 地址,让 C2 端点无法从静态代码中被提取。movinlike 则面向 Discord、浏览器、Telegram 与加密货币钱包收集敏感数据。

影响评估

npm 生态的信任继承机制是这类攻击的放大器:开发者只凭包名判断可信度,安装时却会在本机以同等权限运行陌生代码。40,767 次下载并不等同于同样数量的受害主机——其中包含构建服务器对同一包的反复拉取,且载荷仅针对 Windows,但真实的开发者工作站与 CI/CD 流水线显然已在暴露范围内。Overlord RAT 近期还出现在滥用 WordPress 漏洞(CVE-2026-63030 与 CVE-2026-60137)以及伪装成 Zoom 安装包的两起行动中。

修复建议

  • 立即对项目依赖做审计,用 npm audit 或软件成分分析(SCA)工具扫描上述 8 个包名,发现即移除并轮换相关凭据。
  • 在 CI/CD 与开发环境中禁用安装期脚本(如 npm install –ignore-scripts),或对 postinstall 行为做白名单管控。
  • 限制开发机与构建节点对 cdnzona.discloud.app 等可疑域名的出站访问,并监控异常外连。
  • 检查 %APPDATA% 下是否存在伪装的 node.exe 及隐藏窗口进程,对开发者工作站做一次主机层排查。

参考来源