// 威脅簡報
axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬
- CVSS
- —
- CISA KEV
- 未列入
- 弱點類型
- CWE-506
- 主題
- 供應鏈
人工審稿 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)
|
| 受影響版本 | 1.14.1、0.30.4(另含惡意相依套件 plain-crypto-js 4.2.1)查看依據(4)
|
| 修好的版本 | 惡意版本已下架;建議 1.15.0 或 0.31.0 以上(同時修補 CVE-2026-40175)查看依據(4)
|
| 時間點 | |
| CISA KEV | 未列入(未列入 KEV 不代表沒有被利用)查看依據(4)
|
藍隊應對手冊
確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。
- 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" - 02檢查 CI 建置紀錄
翻 2026-03-31 約 00:21–03:29(UTC)之間的建置(axios 惡意版本約 03:15 下架,plain-crypto-js 03:29 下架),看 npm install 是否解析到上述版本。
- 01升級 axios 到 1.15.0 或 0.31.0 以上
同時修補 CVE-2026-40175。
- 02封鎖官方公布的惡意網域與 IP
依 CISA 與 Google 公布的網域與 IP 封鎖,並搜尋紀錄。
- 01把中招的機器視為完全遭入侵
移除套件不代表移除了攻擊者裝的東西;隔離並調查受影響主機。
- 02從另一台乾淨的機器輪替所有憑證
版本控制 token、CI/CD 祕密、雲端金鑰、npm token、SSH 金鑰。
- 03清除惡意套件與快取
刪除 node_modules/plain-crypto-js/,執行 npm cache clean --force,公司內部的套件快取也要清。
完整修復步驟與說明
- 先確認有沒有中。 用上面的指令檢查每個專案、每台開發機與 CI。
- 如果中了:
- 把那台機器視為完全遭入侵。GitHub 公告特別提醒:移除套件不代表移除了攻擊者裝的東西,輪替憑證要從另一台乾淨的機器進行。
- 輪替機器與流程上所有憑證:版本控制 token、CI/CD 祕密、雲端金鑰、npm token、SSH 金鑰。
- 刪除
node_modules/plain-crypto-js/,執行npm cache clean --force,公司內部的套件快取也要清。 - 依 CISA 與 Google 公布的網域與 IP 封鎖並搜尋紀錄;隔離並調查受影響主機。
- 升級 axios。 事件當下,維護者與 CISA 建議先退回 1.14.0(或 0.30.3)。這兩版沒有惡意程式,但仍受另一個漏洞 CVE-2026-40175 影響,所以本站建議直接升到 1.15.0 或 0.31.0 以上。
- 長期強化。
ignore-scripts、min-release-age、固定版本號、開發者帳號用防釣魚 MFA;套件維護者改用 OIDC Trusted Publishing。
攻擊流程
從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
- 攻擊者
以社交工程入侵維護者的個人電腦
維護者的事後報告說,這是一次針對性的社交工程攻擊,惡意程式讓攻擊者拿到維護者的 npm 憑證。
防禦: 開發者帳號使用防釣魚的 MFA(如安全金鑰)。
- 攻擊者
用偷來的 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。
- 你的系統
開發者或 CI 執行 npm install
新版本多了一個 axios 根本沒用到的相依套件 plain-crypto-js,它的安裝腳本(postinstall)自動執行。
防禦: npm ci --ignore-scripts;設定 min-release-age 延遲採用新版本;用 lockfile 鎖定版本。
- 外部
安裝腳本下載對應作業系統的遠端控制木馬
支援 Windows、macOS、Linux。完成後刪除自己,並把套件描述檔換成看似乾淨的版本。
防禦: 限制開發機與 CI 的對外連線;封鎖官方公布的惡意網域與 IP。
- 攻擊者
遠端控制受害電腦
可以執行指令、列出檔案、定期回報,在 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 程式碼的漏洞,而是發布管道被接管。
- 帳號被盜。 維護者的個人電腦被社交工程入侵,npm 憑證因此外洩;Google 的報告指出,帳號的 email 也被改成攻擊者控制的地址。
- 繞過正常發布流程。 npm 的版本紀錄顯示,前一個 1.x 版本 1.14.0 是由 GitHub Actions 經 OIDC(Trusted Publishing)發布,並附有來源證明(provenance)。0.x 分支不一樣:前一版 0.30.3 是由維護者帳號直接發布,沒有這些欄位。這兩個惡意版本是用偷來的 token 手動上傳的,沒有任何對應的 commit 或標籤。
- 藏在相依套件裡。 axios 本身的程式幾乎沒動,只在
package.json多加一個相依套件plain-crypto-js。axios 根本沒用到它,但 npm 會在安裝時自動執行它的postinstall腳本。 - 自我掩蓋。 腳本下載木馬後刪除自己,並把套件描述檔換成看起來乾淨的 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:21 | axios 1.14.1 發布 |
| 2026-03-31 01:00 | axios 0.30.4 發布,外部研究者開始偵測到異常 |
| 2026-03-31 01:38 | axios 協作者開始處理並聯絡 npm |
| 2026-03-31 約 03:15 | 兩個惡意版本下架,GitHub 安全公告發布 |
| 2026-03-31 03:29 | plain-crypto-js 下架 |
| 2026-04-01 | Google 與微軟發表調查與歸因 |
| 2026-04-20 | CISA 發布警示 |
延伸閱讀
- 沒有 CVE。 這類惡意套件事件通常以 GHSA 或 OSV 的 MAL 編號追蹤;沒有 CVE 也就不會出現在 CISA KEV。
- 歸因。 Google 以高信心度歸因於 UNC1069;微軟歸因於 Sapphire Sleet。兩者都指向北韓,但是否為同一團體無法確認,本頁分別標示。
- 影響專案數與下載量的數字來自二手來源,本頁不引用。
- 同期另一起供應鏈事件:Trivy 供應鏈攻擊。
驗證紀錄 已人工審稿、核對來源;尚未在我們的環境重現
| 人工審稿 | 2026-09-23 |
|---|
驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.
來源
- 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 以前受影響。
- 其他Huntress sees first real infection, on a Mac · www.huntress.com · 查閱 2026-09-24
- 安全公告Post-mortem: axios@1.14.1 and axios@0.30.4 compromise(issue #10636) · axios 維護者(GitHub), 2026-03-31 · 查閱 2026-09-24
- 安全公告GHSA-fw8c-xr5c-95f9 — Malware in axios · GitHub Advisory Database, 2026-03-31 · 查閱 2026-09-23
- CVE / NVD / OSVMAL-2026-2307 · OSV / OpenSSF Malicious Packages, 2026-03-31 · 查閱 2026-09-23
- 安全公告Supply Chain Compromise Impacts Axios Node Package Manager · CISA, 2026-04-20 · 查閱 2026-09-23
- 研究文章North Korea threat actor targets axios npm package · Google Threat Intelligence Group, 2026-04-01 · 查閱 2026-09-23
- 研究文章Mitigating the axios npm supply chain compromise · Microsoft Security Blog, 2026-04-01 · 查閱 2026-09-23
- 其他axios 1.14.0 version metadata (npm registry) · npm registry · 查閱 2026-09-24
- 其他axios 0.30.3 version metadata (npm registry) · npm registry · 查閱 2026-09-24
- 研究文章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 會替你把它執行起來。
圖片
引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.
axios npm 套件遭投毒:維護者帳號被盜,1.14.1 與 0.30.4 夾帶遠端控制木馬 2026 年 3 月 31 日,每週下載量極高的 JavaScript 套件 axios 有兩個版本被植入惡意程式,在網路上存在約三小時。攻擊者先入侵維護者的電腦、盜用發布帳號。Google 與微軟都將此事歸因於北韓相關的攻擊團體。這起事件沒有 CVE 編號,追蹤編號為 GHSA-fw8c-xr5c-95f9。 關鍵數字: - 惡意版本:axios 1.14.1、0.30.4(https://github.com/advisories/GHSA-fw8c-xr5c-95f9) - 在網路上的時間:約 3 小時(2026-03-31 00:21–約 03:15 UTC;惡意相依 03:29 下架)(https://github.com/axios/axios/issues/10636) - 追蹤編號:GHSA-fw8c-xr5c-95f9(沒有 CVE)(https://github.com/advisories/GHSA-fw8c-xr5c-95f9) - Google 歸因:UNC1069(北韓相關)(https://cloud.google.com/blog/topics/threat-intelligence/north-korea-threat-actor-targets-axios-npm-package) - 微軟歸因:Sapphire Sleet(北韓相關)(https://www.microsoft.com/en-us/security/blog/2026/04/01/mitigating-the-axios-npm-supply-chain-compromise/) - CISA 警示:2026-04-20(https://www.cisa.gov/news-events/alerts/2026/04/20/supply-chain-compromise-impacts-axios-node-package-manager) 已確認: - 攻擊者用盜來的 npm 憑證手動發布兩個版本,沒有對應的 GitHub commit 或標籤。 - 惡意程式藏在新加入的相依套件 plain-crypto-js,安裝時會自動執行,支援 Windows、macOS、Linux。 - 兩個惡意版本在約三小時內下架。 尚未確認 / 說法不一: - 實際受影響的專案數與下載次數:公開數字來自二手來源,本頁不引用。 - Google 與微軟指認的是不是同一個團體。 「攻擊者沒有改 axios 的任何一行功能程式,只是多加了一個依賴;而 npm install 會替你把它執行起來。」— PlainCVE https://plaincve.date/vulns/ghsa-2026-axios-npm-compromise
如何引用本頁
本文採 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}
}