觀點 · 資訊分享
Axios 的兩個 npm 新版被植入惡意程式:裝到 1.14.1 或 0.30.4 的人,請換掉機器上的所有金鑰
每週下載量超過 7,000 萬的 HTTP 套件 Axios,在 3/31 被發布兩個惡意版本。微軟 4/1 發布分析並歸因給北韓駭客組織 Sapphire Sleet,建議降版並更換所有可能外洩的憑證。
- 發布
- 2026-04-02
- 篇幅
- 約 4 分鐘 · 1,987 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:熱門的 JavaScript 套件 Axios 在 3 月 31 日被發布了兩個夾帶惡意程式的版本(1.14.1 與 0.30.4),裝到的環境要降版、換掉所有可能外洩的憑證,並清查有沒有木馬殘留。

先用白話講:供應鏈攻擊是什麼?
想像你開餐廳,向一家大家都信任的醬料廠進貨。壞人沒有直接闖進你的廚房,而是偷偷在醬料廠的出貨箱裡多塞了一包東西。你照常拆箱、照常煮菜,毒就這樣進了自己的店。
這就是供應鏈攻擊。Axios 是一個幫 JavaScript 程式發送網路請求的套件,微軟的文章說它每週下載量超過 7,000 萬次,攻擊者挑上它,就是想讓毒一次散到很多專案裡。
發生什麼事
微軟的威脅情報團隊在 4 月 1 日發布了分析,內容如下:
- 3 月 31 日:兩個新的 Axios npm 版本(1.14.1 與 0.30.4)被發現是惡意的
- 手法:Axios 本身的程式碼沒有被改,只是在套件清單裡多加了一個依賴
[email protected],這個套件從來不會被 Axios 的程式用到,唯一目的就是在安裝時自動執行腳本 - 結果:腳本會連到攻擊者控制的伺服器,依作業系統下載第二階段的遠端控制木馬(RAT),Windows、macOS、Linux 都有對應版本
- 歸因:微軟把基礎設施與這次事件歸因給 Sapphire Sleet,並稱它是北韓的國家級駭客組織。建立 plain-crypto-js 的帳號已被停用
微軟還提到,這兩個版本發布時缺少專案平常的 CI 發布紀錄(例如沒有可信發布者綁定、也沒有對應的原始碼標籤),和平常的發布模式不一樣。
為什麼這種攻擊特別麻煩?
- 應用程式看起來一切正常:Axios 的功能沒變,惡意行為發生在
npm install的當下,不是程式執行的時候 - 版本自動升級會讓人中招:很多專案的 package.json 寫的是
^1.14.0這種範圍,只要重新安裝就可能抓到新版 - 開發機與 CI 都是目標:官方明說會影響開發人員的電腦與 CI/CD 系統
給開發者的技術細節
先查有沒有中招:
npm ls axios
npm ls plain-crypto-js
除了 lockfile,微軟建議在家目錄搜尋有沒有 node_modules 資料夾裡含 plain-crypto-js,或版本是 [email protected]、[email protected] 的紀錄;並檢查網路出口紀錄,看有沒有連到 sfrclak[.]com 的 8000 埠。
各系統可能的殘留(微軟分析的結果):
| 系統 | 木馬形式與位置 |
|---|---|
| macOS | 原生執行檔 /Library/Caches/com.apple.act.mond |
| Windows | PowerShell 木馬,常見殘留 %PROGRAMDATA%\wt.exe,並在使用者 Registry 的 Run 項目新增 MicrosoftUpdate 讓它開機後再次下載 |
| Linux | Python 木馬,寫入 /tmp/ld.py |
處置建議:
- 降到 1.14.0(1.x 系列)或 0.30.3(0.x 系列)
- 立即更換所有暴露在受影響系統上的密碼、金鑰與憑證
- 停用 Axios 的自動升級,因為惡意程式帶有會持續嘗試更新的機制
- 可能的話停用安裝腳本:
npm ci --ignore-scripts,或npm config set ignore-scripts true
如果已經發現木馬痕跡,我自己的建議是整台機器重灌比較保險(這是我的判斷,不是微軟的原文)。
我的看法
接案時常遇到客戶的專案跑在別人的 CI 或共用主機上,而 npm install 又常常是自動跑的。這次事件最讓我警覺的是:你什麼都沒改,只是重新安裝一次,就可能中招。
我會做的事:第一,專案一律提交 lockfile,CI 用 npm ci 而不是 npm install,這樣版本不會自己漂移;第二,能不跑安裝腳本的環境就不要跑;第三,自己的 NAS 或開發機上的金鑰盡量不要放在 npm 專案能直接讀到的地方。這些做法不能擋掉所有供應鏈攻擊,但至少能把受害範圍縮小。
名詞小辭典
- npm:JavaScript 世界最大的套件下載站,
npm install就是從這裡抓套件。 - RAT(遠端控制木馬):讓攻擊者能遠端操作受害電腦的惡意程式。
- lockfile(package-lock.json):記錄專案實際裝了哪些版本的檔案,鎖住它才不會每次安裝版本都不一樣。
- C2(Command and Control):攻擊者用來下達指令、發送惡意程式的伺服器。