// 威脅簡報

無 CVE 編號

axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬

CVSS
CISA KEV
未列入
弱點類型
CWE-506
主題
供應鏈

PlainCVE 團隊 · 發布 2026-09-23 · 更新 2026-09-24 · AI 輔助 · 媒體簡報 ↓

人工審稿 2026-09-23指令測試:未提供漏洞重現:未進行驗證紀錄 ↓

攻擊者盜用 axios 維護者的 npm 帳號,發布兩個夾帶惡意相依套件的版本;只要 npm install,就會在電腦上裝好一個遠端控制木馬。

誰會中2026-03-31 約 00:21 至 03:15(UTC,惡意 axios 版本下架;惡意相依 plain-crypto-js 到 03:29 才下架)之間,安裝或更新到 axios 1.14.1 或 0.30.4 的開發機與 CI 環境。版本範圍寫 ^1.14.0 或 ^0.30.0 且沒有 lockfile 的專案最容易中。
後果攻擊者取得那台電腦的遠端控制能力,可以執行指令、讀取檔案,等同拿到上面所有的金鑰與憑證。
現在該做什麼檢查 lockfile 與 node_modules 是否有 plain-crypto-js;有的話把該機器視為已遭入侵,從另一台乾淨的機器輪替所有憑證。axios 升到 1.15.0 或 0.31.0 以上。
查看依據(4)
  • 廠商 / 維護者維護者事後報告:中招的機器要輪替上面所有的祕密、token 與憑證Rotate every secret, token, and credential on that machinegithub.com
  • 漏洞資料庫GitHub 公告:把機器視為完全遭入侵,從另一台乾淨的電腦輪替所有祕密與金鑰;移除套件不代表清除了攻擊者裝的東西All secrets and keys stored on that computer should be rotated immediately from a different computer.github.com
  • CERT / 政府CISA 建議預設不執行安裝腳本(ignore-scripts)、設定 min-release-age,並對開發者帳號使用防釣魚 MFASet ignore-scripts=true in the .npmrc configuration filecisa.gov
  • 研究團隊Google:偵測到 plain-crypto-js 就視主機為已遭入侵,輪替憑證並封鎖公布的網域與 IPIf plain-crypto-js is detected, assume the host environment is compromised.cloud.google.com
受影響版本1.14.1、0.30.4(另含惡意相依套件 plain-crypto-js 4.2.1)
查看依據(4)
  • 廠商 / 維護者axios 維護者的事後報告:1.14.1 與 0.30.4 兩個惡意版本是用被盜的帳號發布的On March 31, 2026, two malicious versions of axios (1.14.1 and 0.30.4) were published to the npm registry through my compromised account.github.com
  • 廠商 / 維護者維護者事後報告:兩個版本都加入惡意相依套件 plain-crypto-js 4.2.1,會在 macOS、Windows、Linux 裝上遠端控制木馬Both versions injected a dependency called `plain-crypto-js@4.2.1` that installed a remote access trojan on macOS, Windows, and Linux.github.com
  • 廠商 / 維護者維護者事後報告:已鎖在乾淨版本、且在 3 月 31 日 00:21–03:15 UTC 之間沒有重新安裝的,不受影響If you were already pinned to a clean version and didn't run a fresh install between 00:21 and 03:15 UTC on March 31, you're fine.github.com
  • 漏洞資料庫OSV(MAL-2026-2307):受影響的 axios 版本為 0.30.4 與 1.14.1"versions":["0.30.4","1.14.1"]osv.dev
修好的版本惡意版本已下架;建議 1.15.0 或 0.31.0 以上(同時修補 CVE-2026-40175)
查看依據(4)
  • 廠商 / 維護者維護者事後報告:前一版 1.14.0 與 0.30.3 是沒有惡意程式的乾淨版本Downgrade to `axios@1.14.0` (or `0.30.3` for 0.x users)github.com
  • 研究團隊StepSecurity:兩個惡意版本已從 npm 下架,latest 標籤回到 1.14.0Both versions are removed from the registry and the latest dist-tag reverts to 1.14.0.stepsecurity.io
  • 本站判斷本站建議升到 1.15.0 或 0.31.0 以上:1.14.0 與 0.30.3 雖然沒有惡意程式,仍受 CVE-2026-40175 影響
  • CVE 紀錄CVE-2026-40175 紀錄:1.0.0 以上、1.15.0 以前(以及 0.31.0 以前)受這個另外的漏洞影響,所以事件當下建議退回的 1.14.0 也在範圍內"version":">= 1.0.0, < 1.15.0"cveawg.mitre.org
時間點
  • 漏洞出現 2026-03-31 · 惡意版本 axios@1.14.1 上架 npm 來源
  • 首次公開 2026-03-31
  • 開始被攻擊 2026-03-31 · Huntress 發現首例 Mac 實際感染 來源
CISA KEV未列入(未列入 KEV 不代表沒有被利用)
查看依據(4)
  • 廠商 / 維護者維護者事後報告:惡意版本在 npm 上約 3 小時後才下架The malicious versions were live for about 3 hours before being removed.github.com
  • 研究團隊StepSecurity 的時間軸:axios 1.14.1 在 npm 上將近 3 小時(約 00:21 至 03:15 UTC)axios@1.14.1 had been live for approximately 2 hours 53 minutesstepsecurity.io
  • 研究團隊Huntress 在 2026-03-31 觀察到首例實際感染,發生在一台 Mac 上First Huntress-observed infection — macOS endpoint executes RAThuntress.com
  • 本站判斷這起事件沒有 CVE,以 GHSA 與 OSV 的 MAL 編號追蹤,因此不會出現在 CISA KEV

藍隊應對手冊

確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01檢查 lockfile 與 node_modules

    看是否有 axios 1.14.1、0.30.4 或 plain-crypto-js。惡意程式會把版本號改成 4.2.0,所以看資料夾存不存在就好。

    唯讀查詢
    grep -nE 'axios@(1\.14\.1|0\.30\.4)|plain-crypto-js' package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null
    ls node_modules/plain-crypto-js 2>/dev/null && echo "發現 plain-crypto-js"
  2. 02檢查 CI 建置紀錄

    翻 2026-03-31 約 00:21–03:29(UTC)之間的建置(axios 惡意版本約 03:15 下架,plain-crypto-js 03:29 下架),看 npm install 是否解析到上述版本。

MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01升級 axios 到 1.15.0 或 0.31.0 以上

    同時修補 CVE-2026-40175。

  2. 02封鎖官方公布的惡意網域與 IP

    依 CISA 與 Google 公布的網域與 IP 封鎖,並搜尋紀錄。

RESPOND應變發現入侵跡象時
  1. 01把中招的機器視為完全遭入侵

    移除套件不代表移除了攻擊者裝的東西;隔離並調查受影響主機。

  2. 02從另一台乾淨的機器輪替所有憑證

    版本控制 token、CI/CD 祕密、雲端金鑰、npm token、SSH 金鑰。

  3. 03清除惡意套件與快取

    刪除 node_modules/plain-crypto-js/,執行 npm cache clean --force,公司內部的套件快取也要清。

HARDEN強化長期避免同類問題
  1. 01預設不執行安裝腳本

    .npmrc 設 ignore-scripts=true,或 CI 用 npm ci --ignore-scripts。

  2. 02延遲採用新版本、固定版本號

    設定 min-release-age=7 並提交 lockfile,相依版本就不會在你不知情時改變。

  3. 03開發者帳號使用防釣魚 MFA
  4. 04套件維護者改用 OIDC Trusted Publishing

    停用可手動發布的長效 token。

完整修復步驟與說明
  1. 先確認有沒有中。 用上面的指令檢查每個專案、每台開發機與 CI。
  2. 如果中了:
    • 把那台機器視為完全遭入侵。GitHub 公告特別提醒:移除套件不代表移除了攻擊者裝的東西,輪替憑證要從另一台乾淨的機器進行。
    • 輪替機器與流程上所有憑證:版本控制 token、CI/CD 祕密、雲端金鑰、npm token、SSH 金鑰
    • 刪除 node_modules/plain-crypto-js/,執行 npm cache clean --force,公司內部的套件快取也要清。
    • 依 CISA 與 Google 公布的網域與 IP 封鎖並搜尋紀錄;隔離並調查受影響主機。
  3. 升級 axios。 事件當下,維護者與 CISA 建議先退回 1.14.0(或 0.30.3)。這兩版沒有惡意程式,但仍受另一個漏洞 CVE-2026-40175 影響,所以本站建議直接升到 1.15.0 或 0.31.0 以上
  4. 長期強化。 ignore-scriptsmin-release-age、固定版本號、開發者帳號用防釣魚 MFA;套件維護者改用 OIDC Trusted Publishing。

攻擊流程

從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。

axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬: 1. 以社交工程入侵維護者的個人電腦 → 2. 用偷來的 token 手動發布 1.14.1 與 0.30.4 → 3. 開發者或 CI 執行 npm install → 4. 安裝腳本下載對應作業系統的遠端控制木馬 → 5. 遠端控制受害電腦axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬攻擊者你的系統外部以社交工程入侵維護者的個人電腦 — 維護者的事後報告說,這是一次針對性的社交工程攻擊,惡意程式讓攻擊者拿到維護者的 npm 憑證。 1以社交工程入侵維護者的個人電腦用偷來的 token 手動發布 1.14.1 與 0.30.4 — npm 紀錄顯示前一個 1.x 版本 1.14.0 是經 GitHub Actions 與 OIDC 發布(0.x 分支的 0.30.3 則是由維護者帳號發布);這兩版沒有對應的 GitHub commit 或標籤,是用偷來的 token 直接上傳的。 2用偷來的 token 手動發布 1.14.1 與 0.30.4開發者或 CI 執行 npm install — 新版本多了一個 axios 根本沒用到的相依套件 plain-crypto-js,它的安裝腳本(postinstall)自動執行。 3開發者或 CI 執行 npminstall安裝腳本下載對應作業系統的遠端控制木馬 — 支援 Windows、macOS、Linux。完成後刪除自己,並把套件描述檔換成看似乾淨的版本。 4安裝腳本下載對應作業系統的遠端控制木馬遠端控制受害電腦 — 可以執行指令、列出檔案、定期回報,在 Windows 上還會設定開機常駐。 5遠端控制受害電腦攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/ghsa-2026-axios-npm-compromise · CC BY 4.0
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    以社交工程入侵維護者的個人電腦

    維護者的事後報告說,這是一次針對性的社交工程攻擊,惡意程式讓攻擊者拿到維護者的 npm 憑證。

    防禦: 開發者帳號使用防釣魚的 MFA(如安全金鑰)。

  2. 攻擊者

    用偷來的 token 手動發布 1.14.1 與 0.30.4

    npm 紀錄顯示前一個 1.x 版本 1.14.0 是經 GitHub Actions 與 OIDC 發布(0.x 分支的 0.30.3 則是由維護者帳號發布);這兩版沒有對應的 GitHub commit 或標籤,是用偷來的 token 直接上傳的。

    防禦: 只允許 OIDC Trusted Publishing,停用可手動發布的長效 token。

  3. 你的系統

    開發者或 CI 執行 npm install

    新版本多了一個 axios 根本沒用到的相依套件 plain-crypto-js,它的安裝腳本(postinstall)自動執行。

    防禦: npm ci --ignore-scripts;設定 min-release-age 延遲採用新版本;用 lockfile 鎖定版本。

  4. 外部

    安裝腳本下載對應作業系統的遠端控制木馬

    支援 Windows、macOS、Linux。完成後刪除自己,並把套件描述檔換成看似乾淨的版本。

    防禦: 限制開發機與 CI 的對外連線;封鎖官方公布的惡意網域與 IP。

  5. 攻擊者

    遠端控制受害電腦

    可以執行指令、列出檔案、定期回報,在 Windows 上還會設定開機常駐。

影響範圍

條件是否受影響
在 2026-03-31 約 00:21–03:15 UTC(惡意版本下架前)安裝到 axios 1.14.1 或 0.30.4受影響,該機器視為已遭入侵
lockfile 鎖在其他版本,且那段時間沒有重新解析相依不受影響
使用 npm ci --ignore-scripts 安裝惡意安裝腳本不會執行
axios 1.14.0、0.30.3沒有惡意程式,但仍受 CVE-2026-40175 影響,建議升級

怎麼查:

# lockfile 裡有沒有惡意版本或惡意相依
grep -nE 'axios@(1\.14\.1|0\.30\.4)|plain-crypto-js' package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null
# node_modules 裡有沒有這個資料夾(版本號可能已被竄改成 4.2.0,看資料夾存不存在就好)
ls node_modules/plain-crypto-js 2>/dev/null && echo "發現 plain-crypto-js,請依修復建議處理"

CI 環境也要查:翻那段時間內的建置紀錄,看是否有 npm install 解析到上述版本。

原理

這不是 axios 程式碼的漏洞,而是發布管道被接管

  1. 帳號被盜。 維護者的個人電腦被社交工程入侵,npm 憑證因此外洩;Google 的報告指出,帳號的 email 也被改成攻擊者控制的地址。
  2. 繞過正常發布流程。 npm 的版本紀錄顯示,前一個 1.x 版本 1.14.0 是由 GitHub ActionsOIDC(Trusted Publishing)發布,並附有來源證明(provenance)。0.x 分支不一樣:前一版 0.30.3 是由維護者帳號直接發布,沒有這些欄位。這兩個惡意版本是用偷來的 token 手動上傳的,沒有任何對應的 commit 或標籤。
  3. 藏在相依套件裡。 axios 本身的程式幾乎沒動,只在 package.json 多加一個相依套件 plain-crypto-js。axios 根本沒用到它,但 npm 會在安裝時自動執行它的 postinstall 腳本。
  4. 自我掩蓋。 腳本下載木馬後刪除自己,並把套件描述檔換成看起來乾淨的 4.2.0 版。所以檢查時要看資料夾存不存在,不要只看版本號。

有問題的寫法:

展開程式碼範例(json)
{ "dependencies": { "axios": "^1.14.0" } }

沒有 lockfile 時,^1.14.0 會自動裝到當時最新的 1.14.1。

比較安全的做法:

展開程式碼範例(ini)
# .npmrc
ignore-scripts=true      # 預設不執行套件的安裝腳本
min-release-age=7        # 發布未滿 7 天的新版本不自動採用

搭配提交 lockfile、CI 用 npm ci,相依版本就不會在你不知情時改變。

時間軸

時間(UTC)事件
2026-03-30 05:57誘餌套件 plain-crypto-js 4.2.0(無害)發布
2026-03-30 23:59惡意的 plain-crypto-js 4.2.1 發布
2026-03-31 00:21axios 1.14.1 發布
2026-03-31 01:00axios 0.30.4 發布,外部研究者開始偵測到異常
2026-03-31 01:38axios 協作者開始處理並聯絡 npm
2026-03-31 約 03:15兩個惡意版本下架,GitHub 安全公告發布
2026-03-31 03:29plain-crypto-js 下架
2026-04-01Google 與微軟發表調查與歸因
2026-04-20CISA 發布警示

延伸閱讀

  • 沒有 CVE 這類惡意套件事件通常以 GHSA 或 OSV 的 MAL 編號追蹤;沒有 CVE 也就不會出現在 CISA KEV
  • 歸因。 Google 以高信心度歸因於 UNC1069;微軟歸因於 Sapphire Sleet。兩者都指向北韓,但是否為同一團體無法確認,本頁分別標示。
  • 影響專案數與下載量的數字來自二手來源,本頁不引用。
  • 同期另一起供應鏈事件:Trivy 供應鏈攻擊

驗證紀錄 已人工審稿、核對來源;尚未在我們的環境重現

人工審稿2026-09-23

驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.

來源

  1. CVE / NVD / OSVCVE-2026-40175 Record (CVE Services API) · CVE Program, 2026-04-10 · 查閱 2026-09-24
    另一個 axios 漏洞(與這次投毒無關):1.0.0 以上、1.15.0 以前,以及 0.31.0 以前受影響。
  2. 其他Huntress sees first real infection, on a Mac · www.huntress.com · 查閱 2026-09-24
  3. 安全公告Post-mortem: axios@1.14.1 and axios@0.30.4 compromise(issue #10636) · axios 維護者(GitHub), 2026-03-31 · 查閱 2026-09-24
  4. 安全公告GHSA-fw8c-xr5c-95f9 — Malware in axios · GitHub Advisory Database, 2026-03-31 · 查閱 2026-09-23
  5. CVE / NVD / OSVMAL-2026-2307 · OSV / OpenSSF Malicious Packages, 2026-03-31 · 查閱 2026-09-23
  6. 安全公告Supply Chain Compromise Impacts Axios Node Package Manager · CISA, 2026-04-20 · 查閱 2026-09-23
  7. 研究文章North Korea threat actor targets axios npm package · Google Threat Intelligence Group, 2026-04-01 · 查閱 2026-09-23
  8. 研究文章Mitigating the axios npm supply chain compromise · Microsoft Security Blog, 2026-04-01 · 查閱 2026-09-23
  9. 其他axios 1.14.0 version metadata (npm registry) · npm registry · 查閱 2026-09-24
  10. 其他axios 0.30.3 version metadata (npm registry) · npm registry · 查閱 2026-09-24
  11. 研究文章axios compromised on npm — malicious versions drop remote access trojan · StepSecurity · 查閱 2026-09-23

媒體簡報

一句話

2026 年 3 月 31 日,每週下載量極高的 JavaScript 套件 axios 有兩個版本被植入惡意程式,在網路上存在約三小時。攻擊者先入侵維護者的電腦、盜用發布帳號。Google 與微軟都將此事歸因於北韓相關的攻擊團體。這起事件沒有 CVE 編號,追蹤編號為 GHSA-fw8c-xr5c-95f9。

關鍵數字

惡意版本
axios 1.14.1、0.30.4 github.com
在網路上的時間
約 3 小時(2026-03-31 00:21–約 03:15 UTC;惡意相依 03:29 下架) github.com
追蹤編號
GHSA-fw8c-xr5c-95f9(沒有 CVE) github.com
Google 歸因
UNC1069(北韓相關) cloud.google.com
微軟歸因
Sapphire Sleet(北韓相關) microsoft.com
CISA 警示
2026-04-20 cisa.gov

已確認

  • 攻擊者用盜來的 npm 憑證手動發布兩個版本,沒有對應的 GitHub commit 或標籤。
  • 惡意程式藏在新加入的相依套件 plain-crypto-js,安裝時會自動執行,支援 Windows、macOS、Linux。
  • 兩個惡意版本在約三小時內下架。

尚未確認 / 說法不一

  • 實際受影響的專案數與下載次數:公開數字來自二手來源,本頁不引用。
  • Google 與微軟指認的是不是同一個團體。

可引用的一句話

攻擊者沒有改 axios 的任何一行功能程式,只是多加了一個依賴;而 npm install 會替你把它執行起來。

圖片

下載分享圖(PNG) · 攻擊流程圖(可下載)

引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.

如何引用本頁

本文採 CC BY 4.0,轉載請保留署名與連結。

PlainCVE 團隊(2026)。《axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬》。PlainCVE。https://plaincve.date/vulns/ghsa-2026-axios-npm-compromise(查閱日期:YYYY-MM-DD)
BibTeX
@misc{ghsa2026axiosnpmcompromise2026,
  title  = {axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/ghsa-2026-axios-npm-compromise},
  note   = {更新於 2026-09-24}
}