乐于分享
好东西不私藏

Axios * OpenClaw 供应链攻击爆发!npm 恶意依赖注入远程控制木马

Axios * OpenClaw 供应链攻击爆发!npm 恶意依赖注入远程控制木马

    知名 HTTP 请求库 Axios(每周下载量超过 1 亿次)刚刚遭遇了一次严重的供应链攻击。这次攻击不是传统的 typosquatting 或普通账号劫持,而是攻击者通过注入一个看似无关的依赖包,在安装时悄悄植入远程访问木马(RAT)。

攻击细节曝光

攻击者没有直接修改 Axios 的核心代码,而是巧妙地在 axios@1.14.1 和 axios@0.30.4 这两个版本中,注入了一个从未被 Axios 实际使用的依赖包:

plain-crypto-js@4.2.1

这个包的唯一作用,就是在 postinstall 脚本中执行恶意操作:

  • 安装后立即向 C2 服务器(sfrclak[.]com / IP: 142.11.206.73,完整 URL:http://sfrclak.com:8000/6202033)发起请求,下载平台特定的第二阶段 payload。
  • 支持跨平台:macOS、Windows、Linux
  • 执行完成后,恶意脚本会立刻覆盖自己的 package.json 为干净版本,抹除安装痕迹,让事后检查 node_modules 几乎看不出异常。

这意味着:即使你只看 Axios 的源码或 GitHub Tag,也很难发现问题。版本号本身不再是可靠的信号

受影响版本

  • axios@1.14.1
  • axios@0.30.4
  • plain-crypto-js@4.2.1(恶意依赖)

需要检查的持久化痕迹(Persistence Artifacts)

如果你的机器可能已中招,请立刻排查以下路径:

  • macOS
    /Library/Caches/com.apple.act.mond
  • Windows
    %programdata%\wt.exe
  • Linux
    /tmp/ld.py

同时,检查网络日志中是否有对 sfrclak[.]com 或 IP 142.11.206.73 的 outbound 连接(尤其是端口 8000)。

立即修复建议

  1. 降级 Axios

    推荐在 package.json 中使用 overrides 或 resolutions 强制锁定安全版本。

    • 1.x 系列 → 使用 axios@1.14.0
    • 0.x 系列 → 使用 axios@0.30.3
  2. 旋转所有密钥:立即更换所有 Secrets、API Key、Token 等敏感凭证。

  3. CI/CD 加固:在 npm installyarn installpnpm install 时添加 --ignore-scripts 参数,阻断 postinstall 脚本执行。

  4. 加强依赖验证:单纯的版本 pinning 已不够用,建议引入 artifact hash 验证或开源工具(如 ReleaseGuard)。

EDR 系统检测参考策略(适用于 CrowdStrike、SentinelOne、Microsoft Defender for Endpoint、Elastic EDR 等)

EDR 重点监控“行为”而非仅签名,针对本次攻击可快速配置以下规则:

  • 进程行为监控检测 node / npm 进程在 postinstall 阶段发起外联(尤其是 child_process.exec 执行 curlwgetpowershell 或 python 下载 payload)。关键字:setup.js 执行 + HTTP 请求到未知域名。

  • 文件创建/修改规则(File Path Monitoring):

    • macOS:创建或修改 /Library/Caches/com.apple.act.mond
    • Windows:创建 %PROGRAMDATA%\wt.exe(或 ProgramData 目录下以 .exe 结尾的可疑文件)
    • Linux:创建 /tmp/ld.py(或 /tmp 目录下以 .py 结尾的脚本)
  • 命令行异常检测阻断来自 node_modules 目录下的 PowerShell / sh / python 进程执行 base64 解码或下载命令。常见 Sigma 规则关键词:npm postinstall + Invoke-WebRequest / curl -o

  • 持久化行为监控注册表(Windows)或 LaunchAgents(macOS)中出现 wt.exe / com.apple.act.mond 相关项。

大多数商用 EDR 已可通过“Living off the Land” + “Suspicious Script Execution” 策略自动告警,建议立即开启 npm 相关行为策略并回溯过去 24 小时安装记录。

NIDS 检测参考策略(适用于 Suricata、Snort、Zeek、Wireshark 等)

NIDS 重点捕获网络层异常,推荐以下签名规则(可直接复制到规则文件中):

  • DNS 查询规则(Suricata 示例):

    alert dns any any -> any any (msg:"[Axios RAT] C2 DNS Query"; dns.querycontent:"sfrclak.com"; nocase; sid:1000001; rev:1;)
  • HTTP/TCP 连接规则

    alert tcp any any -> 142.11.206.738000 (msg:"[Axios RAT] C2 Connection"flow:to_server,established; content:"6202033"; sid:1000002; rev:1;)
  • HTTP Payload 特征匹配 POST/GET 请求中包含 packages.npm.org/product0/1/2 或特定 User-Agent(npm 相关),结合 C2 域名。Zeek 脚本可监控 http.log 中 host == "sfrclak.com" 的记录。

  • 异常流量监控 CI/CD 服务器或开发者机器在 npm install 期间出现非 npm registry(registry.npmjs.org)的 outbound HTTP/HTTPS 流量。

建议将以上规则优先级调高,并对匹配流量进行包捕获(PCAP)留存取证。

这次事件再次敲响警钟

供应链攻击越来越隐蔽。攻击者可通过劫持 maintainer 账号,直接向 npm registry 推送带毒版本,而不走 GitHub Release 流程。

传统依赖锁定策略已无法完全防御这类“干净外表 + 隐藏后门”的攻击。

你所在的团队目前是如何应对 npm/PyPI 等供应链风险的呢?

  • 是单纯依赖 package-lock.json + 版本 pinning?
  • 还是已经引入 SBOM、hash 验证、EDR/NIDS 规则、或 --ignore-scripts
  • 有没有在用 ReleaseGuard / Safe Chain / Aikido 等开源/商用工具?

行动起来

  1. 立刻检查项目依赖,降级 Axios;
  2. 开启 EDR/NIDS 相关检测规则;
  3. 加强 CI 安全策略。

别让一次 npm install 就让整个生产环境沦陷。

安全第一,代码第二。保持警惕,保护好你的供应链!