2026 年 3 月 31 日,安全研究機構 StepSecurity 披露了一起震撼開源社群的重大安全事件:主流 JavaScript 函式庫 Axios 的兩個 npm 版本(1.14.1 和 0.30.4)被惡意植入遠端控制程式碼。
由於 Axios 是全球使用最廣泛的 HTTP 用戶端函式庫,週下載量超過 3 億次,此次供應鏈攻擊的影響範圍極其巨大,幾乎所有使用 Node.js 的專案都可能受到影響。
title: Axios 供應鏈攻擊事件時間線
section: 3 月 30 日
section: 3 月 31 日
攻擊者成功劫持了 Axios 核心維護者 "jasonsaayman" 的 npm 帳號,並將帳號電子郵件替換為匿名的 ProtonMail 地址。此一操作使攻擊者能夠完全控制套件的發布流程。
正常情況下,npm 套件的發布需透過 GitHub Actions 等自動化流程進行構建與驗證。但攻擊者利用維護者權限,直接用 npm CLI 手動上傳被污染的版本,繞過了所有自動化安全檢查。
這是整個攻擊中最狡猾的部分。攻擊者並未直接修改 Axios 原始碼,而是採用了更隱蔽的手法:
{
"dependencies": {
"axios": "^1.14.1",
"plain-crypto-js": "4.2.1" // ← 惡意相依套件
}
}
[email protected] 是一個從未在 Axios 程式碼中被引用的虛假相依套件,它唯一的作用就是執行 postinstall 腳本。
為了規避安全偵測,攻擊者提前 18 小時發佈了兩個版本的偽裝套件:
[email protected]:乾淨版本,用於打掩護,降低安全工具警覺[email protected]:惡意版本,攜帶木馬腳本,執行攻擊這種策略使得惡意套件看起來像是「既有套件的正常更新」,而非「全新可疑套件」。
當開發者執行 npm install axios 時,會發生以下連鎖反應:
# 開發者執行的命令
npm install axios
# 實際發生的過程
├── 安裝 [email protected] (被投毒版本)
├── 自動安裝 [email protected] (惡意相依)
└── 觸發 postinstall 腳本
└── 執行 setup.js (惡意腳本)
└── 連線 C2 伺服器 (sfrclak.com)
└── 下載並執行跨平台木馬
一旦觸發惡意腳本,會根據作業系統種類執行不同的攻擊載荷:
# 建立隱藏的 PowerShell 視窗
VBScript → 隱藏 cmd.exe → 儲存木馬到 %TEMP%\6202033.ps1
# 持久化駐留
複製到:%PROGRAMDATA%\wt.exe
偽裝成:Windows Terminal 可執行檔
# 藏匿位置
/Library/Caches/com.apple.act.mond
# 偽裝方式
偽裝成:macOS 系統快取進程
# 直接執行
/tmp/ld.py
# 後台駐留
nohup python3 /tmp/ld.py &
木馬成功後會執行以下操作:
sfrclak.com以下類型的專案風險最高:
(原文未列舉細節,請依據環境與相依性鏈追蹤)
2026 年流行的 AI 程式工具(如 Claude Code、Codex CLI、OpenClaw 等)大幅擴大了 npm 的攻擊面:
正如社群所言:「你自己不寫 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
# 檢查可疑檔案
Test-Path "$env:PROGRAMDATA\wt.exe"
Test-Path "$env:TEMP\6202033.ps1"
# 檢查網路連線
netstat -ano | findstr sfrclak.com
# 檢查可疑目錄
ls -la /Library/Caches/com.apple.act.mond
# 檢查異常程序
ps aux | grep -i "act.mond"
# 檢查惡意腳本
ls -la /tmp/ld.py
# 檢查 Python 進程
ps aux | grep ld.py
# 檢查網路連線
netstat -tulpn | grep sfrclak.com
如果你確認安裝了被投毒的版本,必須立即重置所有敏感憑證:
因為木馬具備竊取環境變數的能力,即使你已經移除惡意套件,之前泄露的資訊也需要全部更換。
在 package.json 中避免使用模糊版本範圍:
{
"dependencies": {
"axios": "1.13.0" // ✅ 確切版本
// 而不是 "axios": "^1.13.0" ❌
}
}
# 全域設定
npm config set ignore-scripts true
# 或在 .npmrc 檔案中加入
ignore-scripts=true
# 安裝時手動或定期執行審計
npm audit
# 自動修復可修復的問題
npm audit fix
# 強制修復(可能破壞相容性)
npm audit fix --force
# 安裝 socket-security 等安全工具
npm install -g socket-security
# 使用 Snyk 進行持續監控
npm install -g snyk
snyk test
對於企業級專案,建議:
如果你使用 AI 程式工具:
sfrclak.com供安全工具檢測使用:
[email protected]:
[email protected] (被投毒版本):
[email protected] (被投毒版本):
安全設備可以監控以下網路請求:
這次事件再次揭露現代軟體供應鏈的脆弱性:
隨著 AI 程式工具的普及,攻擊面正在急劇擴大:
作為開發者,我們需要:
[email protected] 和 [email protected]