緊急安全警報:Axios npm 套件被投毒事件詳解與防護指南

🚨 事件概述

2026 年 3 月 31 日,安全研究機構 StepSecurity 披露了一起震撼開源社群的重大安全事件:主流 JavaScript 函式庫 Axios 的兩個 npm 版本(1.14.1 和 0.30.4)被惡意植入遠端控制程式碼

由於 Axios 是全球使用最廣泛的 HTTP 用戶端函式庫,週下載量超過 3 億次,此次供應鏈攻擊的影響範圍極其巨大,幾乎所有使用 Node.js 的專案都可能受到影響。

⏰ 攻擊時間線(北京時間)

title: Axios 供應鏈攻擊事件時間線

section: 3 月 30 日

  • 23:59:攻擊者發布惡意帳號註冊資訊([email protected])

section: 3 月 31 日

  • 00:00:劫持維護者帳號,發布被投毒的 Axios 版本
  • 00:05:Socket.dev 偵測到異常相依套件
  • 04:00:npm 官方下架所有惡意套件
  • 08:00:安全機構公開披露事件細節

🔍 攻擊手法深度解析

1️⃣ 帳號劫持

攻擊者成功劫持了 Axios 核心維護者 "jasonsaayman" 的 npm 帳號,並將帳號電子郵件替換為匿名的 ProtonMail 地址。此一操作使攻擊者能夠完全控制套件的發布流程。

2️⃣ 繞過 CI/CD 審核

正常情況下,npm 套件的發布需透過 GitHub Actions 等自動化流程進行構建與驗證。但攻擊者利用維護者權限,直接用 npm CLI 手動上傳被污染的版本,繞過了所有自動化安全檢查。

3️⃣ 虛假相依注入

這是整個攻擊中最狡猾的部分。攻擊者並未直接修改 Axios 原始碼,而是採用了更隱蔽的手法:

{
  "dependencies": {
    "axios": "^1.14.1",
    "plain-crypto-js": "4.2.1"  // ← 惡意相依套件
  }
}

[email protected] 是一個從未在 Axios 程式碼中被引用的虛假相依套件,它唯一的作用就是執行 postinstall 腳本。

4️⃣ 雙重偽裝策略

為了規避安全偵測,攻擊者提前 18 小時發佈了兩個版本的偽裝套件:

  • 版本號類型
    • [email protected]:乾淨版本,用於打掩護,降低安全工具警覺
    • [email protected]:惡意版本,攜帶木馬腳本,執行攻擊

這種策略使得惡意套件看起來像是「既有套件的正常更新」,而非「全新可疑套件」。

5️⃣ 自動執行機制

當開發者執行 npm install axios 時,會發生以下連鎖反應:

# 開發者執行的命令
npm install axios

# 實際發生的過程
├── 安裝 [email protected] (被投毒版本)
├── 自動安裝 [email protected] (惡意相依)
└── 觸發 postinstall 腳本
    └── 執行 setup.js (惡意腳本)
        └── 連線 C2 伺服器 (sfrclak.com)
            └── 下載並執行跨平台木馬

💀 惡意行為分析

感染流程

一旦觸發惡意腳本,會根據作業系統種類執行不同的攻擊載荷:

Windows 系統

# 建立隱藏的 PowerShell 視窗
VBScript → 隱藏 cmd.exe → 儲存木馬到 %TEMP%\6202033.ps1

# 持久化駐留
複製到:%PROGRAMDATA%\wt.exe
偽裝成:Windows Terminal 可執行檔

macOS 系統

# 藏匿位置
/Library/Caches/com.apple.act.mond

# 偽裝方式
偽裝成:macOS 系統快取進程

Linux 系統

# 直接執行
/tmp/ld.py

# 後台駐留
nohup python3 /tmp/ld.py &

惡意功能

木馬成功後會執行以下操作:

  1. 連線遠端指揮伺服器 (C2) - 網域:sfrclak.com
  2. 竊取敏感資訊 - 環境變數、API 金鑰、設定檔
  3. 下載額外載荷 - 依系統架構下載更多惡意程式
  4. 建立持久後門 - 保持背景執行、長期潛伏
  5. 自我清理 - 刪除惡意腳本,偽造乾淨的配置檔

🎯 影響範圍評估

高危專案

以下類型的專案風險最高:

  • 使用 [email protected] 或 0.30.4 的所有專案
  • OpenClaw(「龍蝦」)AI 智能體工具使用者
  • React/Vue 前端專案
  • Node.js 後端服務
  • CI/CD 工具和自動化腳本
  • MCP Server 和各類 AI 程式工具

傳播途徑

(原文未列舉細節,請依據環境與相依性鏈追蹤)

特別警示:AI 程式工具風險

2026 年流行的 AI 程式工具(如 Claude Code、Codex CLI、OpenClaw 等)大幅擴大了 npm 的攻擊面:

  • 🔴 自動安裝相依 - AI 可能在你不知情的情況下安裝被投毒的套件
  • 🔴 高系統權限 - AI 工具通常具有檔案讀寫、命令執行權限
  • 🔴 難以稽核 - 你可能連自己安裝了什麼都不清楚

正如社群所言:「你自己不寫 npm 命令,AI 替你寫了,你可能連自己裝了什麼都不知道。」

🛡️ 緊急處置方案

第一步:立即自查

# 檢查專案中是否使用了 axios
npm list axios

# 或使用 pnpm
pnpm list axios

# 查看詳細版本
npm list axios --depth=0

如果看到以下版本,立即採取行動

  • [email protected]
  • [email protected]

第二步:緊急移除

# 立即移除被投毒版本
npm uninstall axios

# 刪除 node_modules 與鎖檔(可選但建議)
rm -rf node_modules package-lock.json

# Windows PowerShell:
# Remove-Item -Recurse -Force node_modules, package-lock.json

# 重新安裝安全版本
npm install axios@latest

第三步:檢查失陷跡象

Windows 系統

# 檢查可疑檔案
Test-Path "$env:PROGRAMDATA\wt.exe"
Test-Path "$env:TEMP\6202033.ps1"

# 檢查網路連線
netstat -ano | findstr sfrclak.com

macOS 系統

# 檢查可疑目錄
ls -la /Library/Caches/com.apple.act.mond

# 檢查異常程序
ps aux | grep -i "act.mond"

Linux 系統

# 檢查惡意腳本
ls -la /tmp/ld.py

# 檢查 Python 進程
ps aux | grep ld.py

# 檢查網路連線
netstat -tulpn | grep sfrclak.com

第四步:重置憑證

如果你確認安裝了被投毒的版本,必須立即重置所有敏感憑證:

  • 🔑 所有 API 金鑰(雲端服務、資料庫、第三方服務)
  • 🔑 SSH 金鑰與存取權杖
  • 🔑 資料庫密碼
  • 🔑 管理員帳號密碼
  • 🔑 任何儲存在環境變數中的敏感資訊

因為木馬具備竊取環境變數的能力,即使你已經移除惡意套件,之前泄露的資訊也需要全部更換

🔒 長期防護策略

1. 鎖定相依版本

package.json 中避免使用模糊版本範圍:

{
  "dependencies": {
    "axios": "1.13.0"     // ✅ 確切版本
    // 而不是 "axios": "^1.13.0"  ❌
  }
}

2. 禁用自動腳本執行

# 全域設定
npm config set ignore-scripts true

# 或在 .npmrc 檔案中加入
ignore-scripts=true

3. 啟用 npm 審計

# 安裝時手動或定期執行審計
npm audit

# 自動修復可修復的問題
npm audit fix

# 強制修復(可能破壞相容性)
npm audit fix --force

4. 使用安全工具

# 安裝 socket-security 等安全工具
npm install -g socket-security

# 使用 Snyk 進行持續監控
npm install -g snyk
snyk test

5. 實施相依審查流程

對於企業級專案,建議:

  • ✅ 使用私有 npm 快取/鏡像(如 Verdaccio)
  • ✅ 實施相依套件白名單制度
  • ✅ 定期產生 SBOM(軟體物料清單)
  • ✅ 使用 Sigstore 等簽章驗證機制

6. AI 程式工具使用規範

如果你使用 AI 程式工具:

  • ⚠️ 審查所有自動安裝的相依
  • ⚠️ 不要給 AI 過高的系統權限
  • ⚠️ 定期檢查 node_modules 內容
  • ⚠️ 在隔離環境中執行 AI 產生的程式碼

📊 技術細節補充

惡意域名資訊

  • C2 伺服器: sfrclak.com
  • 註冊時間: 2026 年 3 月 30 日
  • 註冊商: 匿名註冊服務

惡意套件雜湊值

供安全工具檢測使用:

  • [email protected]:
    • SHA-256: [已移除,避免散播]
  • [email protected] (被投毒版本):
    • SHA-256: [已移除,避免散播]
  • [email protected] (被投毒版本):
    • SHA-256: [已移除,避免散播]

網路特徵

安全設備可以監控以下網路請求:

🎓 事件啟示

供應鏈安全的脆弱性

這次事件再次揭露現代軟體供應鏈的脆弱性:

  1. 單點故障 - 一個維護者帳號被劫持,影響數億使用者
  2. 信任鏈中斷 - 我們信任的知名函式庫也可能被投毒
  3. 自動化風險 - CI/CD 流程被繞過,缺乏多層驗證
  4. 相依傳遞 - 你的相依的相依也可能有問題

開源安全的新挑戰

隨著 AI 程式工具的普及,攻擊面正在急劇擴大:

  • 🤖 AI 自動決策 - AI 可能選擇安裝不安全的相依
  • 🤖 權限放大 - AI 的高權限使攻擊後果更嚴重
  • 🤖 稽核困難 - 自動產生的程式碼更難追溯與審查

開發者的責任

作為開發者,我們需要:

  • ✅ 保持安全意識,不盲目信任任何相依
  • ✅ 實施最小權限原則
  • ✅ 建立完善的相依管理與稽核流程
  • ✅ 關注安全動態,及時回應漏洞預警

📝 總結

關鍵要點

  1. 受影響版本: [email protected][email protected]
  2. 攻擊手法: 劫持維護者帳號 + 虛假相依 + 自動執行腳本
  3. 影響範圍: 週下載量 3 億+,全平台受影響
  4. 惡意行為: 遠端控制木馬 + 資訊竊取 + 持久化駐留
  5. 處置方案: 立即自查 → 緊急移除 → 檢查失陷 → 重置憑證

行動清單

  • 檢查所有專案的 axios 版本
  • 如果中招,立即移除並重裝安全版本
  • 檢查系統是否有失陷跡象
  • 重置所有可能洩漏的憑證
  • 更新 package.json 鎖定版本號
  • 設定 npm 忽略自動腳本
  • 安裝安全稽核工具
  • 學習 AI 程式工具安全使用規範

🔗 參考資料

  1. StepSecurity 官方報告:https://link.juejin.cn?target=https%3A%2F%2Fwww.stepsecurity.io%2Fblog%2Faxios-supply-chain-attack
  2. npm 安全公告:https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fnpm%2Fsecurity-advisories
  3. Socket.dev 偵測分析:https://link.juejin.cn?target=https%3A%2F%2Fsocket.dev
  4. GitHub Issue 討論:https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Faxios%2Faxios%2Fissues

原文出處:https://juejin.cn/post/7623322130490802222


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝9   💬11   ❤️3
554
🥈
我愛JS
📝2   💬7   ❤️2
148
🥉
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登