觀點 · 資訊分享

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 題常見問題
標籤
#Axios#npm#供應鏈攻擊#Sapphire Sleet#Node.js
Axios 的兩個 npm 新版被植入惡意程式:裝到 1.14.1 或 0.30.4 的人,請換掉機器上的所有金鑰

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

Axios 套件遭植入惡意程式資訊圖卡:Axios 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):攻擊者用來下達指令、發送惡意程式的伺服器。

資料來源

常見問題

什麼是供應鏈攻擊?
攻擊者不直接打你,而是去污染你信任的零件(例如一個大家都在用的套件),等大家自己把有毒的零件裝進專案。
我只是在專案裡用 Axios,會中招嗎?
只有在惡意版本發布期間,執行 npm install 或更新後解析到 1.14.1 或 0.30.4 的環境才有風險。請查 package-lock.json 或 node_modules 裡的版本,以及有沒有 plain-crypto-js 這個資料夾。
降版就夠了嗎?
不夠。微軟明確建議:裝過的人要立即更換所有可能暴露的密碼與憑證,因為木馬安裝後就等於攻擊者可以遠端操作那台機器。
瀏覽器裡用的 Axios 也有問題嗎?
微軟文章談的是 npm 安裝階段的行為,也就是開發機與 CI/CD 環境。官方分析沒有討論瀏覽器端的情形,不要自行推論,先檢查你的建置紀錄。
LINE