// 威脅簡報

CVE-2026-48027已遭實際利用

Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證

CVSS
9.8 CRITICAL
CISA KEV
2026-05-27
弱點類型
CWE-506
主題
供應鏈

PlainCVE 團隊 · 發布 2026-09-29 · AI 輔助 · 媒體簡報 ↓

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

攻擊者用偷來的權限發布藏有惡意程式的 Nx Console 18.95.0 擴充套件,編輯器一啟動就竊取開發者電腦上的憑證。已遭實際利用。

誰會中在 2026-05-18 約 12:30–13:09 UTC 之間,於 VS Code 或 Cursor 等分支版本安裝了 Nx Console(nrwl.angular-console)且開啟自動更新的人,或手動安裝過 18.95.0 的人。
後果惡意程式會蒐集 GitHub、npm、雲端(AWS/GCP)、Kubernetes、Vault、SSH 私鑰等憑證,若當時 1Password CLI(op)正處於登入狀態,也會讀取其中的內容,並全部傳出去;在 Linux 上還會嘗試寫入 sudoers 以長期駐留。GitHub 有員工裝置因此中招;攻擊者聲稱取走約 3,800 個內部程式庫,GitHub 表示這和它目前的調查「方向一致」,調查仍在進行。
現在該做什麼更新到 18.100.0 以上;若曾在曝險時段內使用,先停掉惡意程式並刪除駐留檔案,再輪替這台電腦能接觸到的所有憑證,並考慮重灌。
受影響版本僅 18.95.0(VS Code 擴充套件,透過 Visual Studio Marketplace 與 Open VSX 發布)
修好的版本18.100.0 以上(攻擊前最後一個乾淨版本為 18.94.0)
CVSS 向量
顯示完整向量CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
時間點
  • 漏洞出現 2026-05-18 · 惡意版本 18.95.0 於 12:30 UTC 上架 來源
  • 首次公開 2026-05-18
  • 開始被攻擊 2026-05-18 · GitHub 員工裝置遭惡意擴充套件入侵 來源
CISA KEV已列入(2026-05-27),代表已有實際攻擊案例

藍隊應對手冊

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

DETECT確認我受影響嗎?有沒有入侵跡象?
  1. 01確認是否裝過 18.95.0

    官方建議列出已安裝擴充套件與版本,尋找 angular-console 18.95.0。只要在 2026-05-18 約 12:30–13:09 UTC 間開著自動更新,即使現在已是新版,也要當作可能中招。

    唯讀查詢
    code --list-extensions --show-versions | grep -i angular-console
  2. 02搜尋官方公布的駐留檔案(macOS/Linux)

    官方列出的檔案:~/.local/share/kitty/cat.py、~/Library/LaunchAgents/com.user.kitty-monitor.plist、/var/tmp/.gh_update_state、/tmp/kitty-*。指令分兩段:ls 檢查三個固定路徑,find 另外找 /tmp 底下的 kitty-* 暫存目錄(不用萬用字元,避免 zsh 在沒有符合項時整行中止);沒有任何輸出代表沒找到。Windows 請檢查 %USERPROFILE%\.local\share\kitty\cat.py、%TEMP%\kitty-*、%TEMP%\.gh_update_state、%USERPROFILE%\.bun\bin\bun.exe。

    唯讀查詢
    ls -la ~/.local/share/kitty/cat.py ~/Library/LaunchAgents/com.user.kitty-monitor.plist /var/tmp/.gh_update_state 2>/dev/null; find /tmp/ -maxdepth 1 -name 'kitty-*' 2>/dev/null
  3. 03找出還在執行的惡意程序

    官方指標:執行 cat.py 的 Python 程序,或環境變數含 __DAEMONIZED=1 的任何程序。前半段 ps 在 macOS 與 Linux 都能用;後半段讀 /proc/*/environ 只適用 Linux(macOS 沒有 /proc,zsh 會顯示 no matches found,不代表沒有這類程序)。

    唯讀查詢
    ps aux | grep '[c]at\.py'; sudo grep -l '__DAEMONIZED=1' /proc/*/environ 2>/dev/null
  4. 04Linux:檢查 sudoers 是否被改

    惡意程式會嘗試修改 sudoers 以長期駐留;廠商的指標是 /etc/sudoers 或 /etc/sudoers.d/ 出現不認得的條目。指令只讀不改,會列出兩處所有非空白、非一般註解的行(保留

    唯讀查詢
    sudo grep -rvE '^[[:space:]]*(#[[:space:]]|#$|$)' /etc/sudoers /etc/sudoers.d/
MITIGATE修補 / 緩解先修補;還不能修補時先擋住
  1. 01更新到 18.100.0 以上

    18.95.0 已從兩個市集下架;18.100.0 以上是安全版本。注意:更新只換掉擴充套件,不會清除已經在電腦上執行或駐留的惡意程式。

    唯讀查詢
    code --list-extensions --show-versions | grep -i angular-console
RESPOND應變發現入侵跡象時
  1. 01先清除駐留,再輪替憑證

    官方步驟:停掉含 __DAEMONIZED=1 的程序與執行 cat.py 的 Python 程序;刪除駐留檔案,macOS 要先卸載 LaunchAgent 再刪。同一台機器若也中了 TanStack(Mini Shai-Hulud)惡意套件,那一款據報在 token 被撤銷時可能清空家目錄,所以順序更重要。

    唯讀查詢
    ls -la ~/Library/LaunchAgents/com.user.kitty-monitor.plist 2>/dev/null
  2. 02輪替這台電腦能接觸到的所有憑證

    包括 GitHub 與 npm token、SSH 金鑰、AWS/GCP/Azure/Kubernetes 憑證、Vault token 與 .env 內容。

  3. 03稽核存取紀錄並考慮重灌

    檢查被輪替前的憑證是否被拿去使用;官方建議把機器視為可能仍受感染,輪替後考慮重建。

HARDEN強化長期避免同類問題
  1. 01發布需要兩人核准

    Nx 事後改用 GitHub environment 的必要審核者,且核准者不能是觸發者本人。

  2. 02確認新套件延遲設定真的生效

    「最短發布時間」需要 pnpm 10.16 以上;舊版會默默忽略。Nx 的事後檢討建議把 packageManager 釘在 pnpm 10.16 以上,並在 CI 加一道 pnpm 版本低於門檻就讓建置失敗的檢查。

    唯讀查詢
    pnpm --version
  3. 03不要把長期 token 存成明文檔案

    GitHub CLI 之類的長期 token 放進秘密管理工具,避免任何本機程序都能讀取。

  4. 04監控稽核紀錄並釘選 Actions

    對刪除 workflow 執行紀錄等事件發出警示;GitHub Actions 釘選到確切的 commit SHA。

完整修復步驟與說明
  1. 更新。 把 Nx Console 更新到 18.100.0 以上。可用 code --list-extensions --show-versions | grep -i angular-console 查看版本。
  2. 判斷是否中招。 曝險時段內開著自動更新,或手動裝過 18.95.0,就依官方要求當作已遭入侵處理。廠商公布的指標:
    • macOS/Linux 檔案:~/.local/share/kitty/cat.py、~/Library/LaunchAgents/com.user.kitty-monitor.plist、/var/tmp/.gh_update_state、/tmp/kitty-*
    • Windows 檔案:%USERPROFILE%\.local\share\kitty\cat.py、%TEMP%\kitty-*、%TEMP%\.gh_update_state、%USERPROFILE%\.bun\bin\bun.exe
    • 程序:執行 cat.py 的 Python,或環境變數含 __DAEMONIZED=1 的任何程序
    • Linux:/etc/sudoers 或 /etc/sudoers.d/ 出現不明條目
    • StepSecurity(第三方)另外公布了惡意 VSIX 等檔案的雜湊值,可到其原文查閱。
  3. 先清除,再輪替。 停掉上述惡意程序;刪除駐留檔案,macOS 要先卸載 LaunchAgent。然後輪替這台電腦能接觸到的所有憑證:GitHub 與 npm token、SSH 金鑰、AWS/GCP/Azure/Kubernetes 憑證、Vault token、.env 內容。
  4. 稽核與重建。 檢查存取紀錄;官方建議把機器視為可能仍受感染,輪替後考慮重灌。
  5. 如果同一台電腦也裝過惡意 TanStack 套件。 那是另一個惡意程式(Mini Shai-Hulud),據 Snyk 與 Tenable,它在偷到的 token 被撤銷時可能清空家目錄。兩者不要混為一談,但「先移除駐留、再輪替」的順序在這種情況更重要。
  6. 長期做法。 發布需兩人核准;監控稽核紀錄中刪除 workflow 等事件;GitHub Actions 釘選到 commit SHA;設定最短發布時間時,把 pnpm 釘在 10.16 以上並在 CI 檢查版本,確認設定真的生效;長期 CLI token 放進秘密管理工具。

這次不是自動化工具抓到的:Marketplace 每次上傳都會寄信通知發布者,維護者在約 6 分鐘內就發現這是一個不該出現的版本。

攻擊流程

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

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

Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證: 1. 上游 TanStack 套件遭入侵,偷走 Nx 貢獻者的 GitHub CLI token → 2. 攻擊者以該貢獻者身分發布惡意的 18.95.0 → 3. 開發者的編輯器自動更新到 18.95.0 → 4. 擴充套件啟動時下載並執行混淆過的惡意程式 → 5. 蒐集憑證、傳出去並設法駐留 → 6. GitHub 員工裝置中招,內部程式庫外洩CVE-2026-48027 · Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證攻擊者你的系統上游 TanStack 套件遭入侵,偷走 Nx 貢獻者的 GitHub CLI token — 2026-05-11,一名 Nx 貢獻者在另一個專案安裝套件時,裝到只發布 77 分鐘的惡意 TanStack 版本。專案雖設了 7 天的「最短發布時間」延遲,但鎖定的 pnpm 10.14 不支援這個設定且默默忽略。token 存在任何本機程式都能讀的設定檔裡。 1上游 TanStack 套件遭入侵,偷走 Nx 貢獻者的GitHub CLI token攻擊者以該貢獻者身分發布惡意的 18.95.0 — 5 月 11 日至 16 日,攻擊者用這組權限推送 commit、刪除 workflow 執行紀錄。5 月 18 日上架 VS Code Marketplace 與 Open VSX。當時發布 Nx Console 只需一個人,不需第二人核准。確切使用哪個憑證或管道發布,官方沒有細說。 2攻擊者以該貢獻者身分發布惡意的 18.95.0開發者的編輯器自動更新到 18.95.0 — 不需要使用者做任何事。官方數字:Microsoft Marketplace 28 次安裝、Open VSX 41 次下載;Nx 自己的分析記錄到約 6,000 次啟用。 3開發者的編輯器自動更新到 18.95.0擴充套件啟動時下載並執行混淆過的惡意程式 — 根據 StepSecurity,主程式被塞入一小段載入器,從攻擊者推進官方 nrwl/nx 程式庫、不屬於任何分支的「孤兒 commit」抓取套件,再安裝 Bun 執行環境來跑惡意程式。惡意程式來自專案自己的可信程式庫,而不是可疑網域。 4擴充套件啟動時下載並執行混淆過的惡意程式蒐集憑證、傳出去並設法駐留 — 目標包括 Vault、Kubernetes、AWS、npm、GitHub token 與 Actions secrets、1Password CLI 內容(只在當時已登入 op CLI 時)、私鑰、GCP 與 Docker 憑證;透過 HTTPS、GitHub API 與 DNS 傳出。Linux 上嘗試寫入 sudoers,macOS 上留下 LaunchAgent。 5蒐集憑證、傳出去並設法駐留GitHub 員工裝置中招,內部程式庫外洩 — GitHub 揭露一名員工裝置被帶毒的 VS Code 擴充套件感染(並連結到 Nx 公告);攻擊者聲稱取走約 3,800 個內部程式庫,GitHub 表示和目前的調查「方向一致」;GitHub 表示沒有證據顯示內部程式庫以外的客戶資料受影響。 6GitHub 員工裝置中招,內部程式庫外洩攻擊路徑可在此擋下PlainCVE · plaincve.date/vulns/cve-2026-48027-nx-console-malicious-extension · CC BY 4.0
Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證: 1. 上游 TanStack 套件遭入侵,偷走 Nx 貢獻者的 GitHub CLI token → 2. 攻擊者以該貢獻者身分發布惡意的 18.95.0 → 3. 開發者的編輯器自動更新到 18.95.0 → 4. 擴充套件啟動時下載並執行混淆過的惡意程式 → 5. 蒐集憑證、傳出去並設法駐留 → 6. GitHub 員工裝置中招,內部程式庫外洩CVE-2026-48027 · Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證上游 TanStack 套件遭入侵,偷走 Nx 貢獻者的 GitHub CLI token — 2026-05-11,一名 Nx 貢獻者在另一個專案安裝套件時,裝到只發布 77 分鐘的惡意 TanStack 版本。專案雖設了 7 天的「最短發布時間」延遲,但鎖定的 pnpm 10.14 不支援這個設定且默默忽略。token 存在任何本機程式都能讀的設定檔裡。 1攻擊者上游 TanStack 套件遭入侵,偷走 Nx貢獻者的 GitHub CLI token攻擊者以該貢獻者身分發布惡意的 18.95.0 — 5 月 11 日至 16 日,攻擊者用這組權限推送 commit、刪除 workflow 執行紀錄。5 月 18 日上架 VS Code Marketplace 與 Open VSX。當時發布 Nx Console 只需一個人,不需第二人核准。確切使用哪個憑證或管道發布,官方沒有細說。 2攻擊者攻擊者以該貢獻者身分發布惡意的18.95.0開發者的編輯器自動更新到 18.95.0 — 不需要使用者做任何事。官方數字:Microsoft Marketplace 28 次安裝、Open VSX 41 次下載;Nx 自己的分析記錄到約 6,000 次啟用。 3你的系統開發者的編輯器自動更新到 18.95.0擴充套件啟動時下載並執行混淆過的惡意程式 — 根據 StepSecurity,主程式被塞入一小段載入器,從攻擊者推進官方 nrwl/nx 程式庫、不屬於任何分支的「孤兒 commit」抓取套件,再安裝 Bun 執行環境來跑惡意程式。惡意程式來自專案自己的可信程式庫,而不是可疑網域。 4你的系統擴充套件啟動時下載並執行混淆過的惡意程式蒐集憑證、傳出去並設法駐留 — 目標包括 Vault、Kubernetes、AWS、npm、GitHub token 與 Actions secrets、1Password CLI 內容(只在當時已登入 op CLI 時)、私鑰、GCP 與 Docker 憑證;透過 HTTPS、GitHub API 與 DNS 傳出。Linux 上嘗試寫入 sudoers,macOS 上留下 LaunchAgent。 5你的系統蒐集憑證、傳出去並設法駐留GitHub 員工裝置中招,內部程式庫外洩 — GitHub 揭露一名員工裝置被帶毒的 VS Code 擴充套件感染(並連結到 Nx 公告);攻擊者聲稱取走約 3,800 個內部程式庫,GitHub 表示和目前的調查「方向一致」;GitHub 表示沒有證據顯示內部程式庫以外的客戶資料受影響。 6攻擊者GitHub 員工裝置中招,內部程式庫外洩攻擊路徑可在此擋下PlainCVE · CC BY 4.0plaincve.date/vulns/cve-2026-48027-nx-console-malicious-extension
圖片可自由用於報導與教學,採 CC BY 4.0,圖上已附出處。
  1. 攻擊者

    上游 TanStack 套件遭入侵,偷走 Nx 貢獻者的 GitHub CLI token

    2026-05-11,一名 Nx 貢獻者在另一個專案安裝套件時,裝到只發布 77 分鐘的惡意 TanStack 版本。專案雖設了 7 天的「最短發布時間」延遲,但鎖定的 pnpm 10.14 不支援這個設定且默默忽略。token 存在任何本機程式都能讀的設定檔裡。

    防禦: 確認安全設定真的被你所用的工具版本支援(該設定需 pnpm 10.16+);長期 CLI token 放進秘密管理工具而不是明文檔案。

  2. 攻擊者

    攻擊者以該貢獻者身分發布惡意的 18.95.0

    5 月 11 日至 16 日,攻擊者用這組權限推送 commit、刪除 workflow 執行紀錄。5 月 18 日上架 VS Code Marketplace 與 Open VSX。當時發布 Nx Console 只需一個人,不需第二人核准。確切使用哪個憑證或管道發布,官方沒有細說。

    防禦: 發布流程要求兩位管理者核准(且核准者不能是觸發者);監控稽核紀錄中刪除 workflow 之類的事件。

  3. 你的系統

    開發者的編輯器自動更新到 18.95.0

    不需要使用者做任何事。官方數字:Microsoft Marketplace 28 次安裝、Open VSX 41 次下載;Nx 自己的分析記錄到約 6,000 次啟用。

    防禦: 更新到 18.100.0 以上;用列出擴充套件版本的方式檢查是否裝過 18.95.0。

  4. 你的系統

    擴充套件啟動時下載並執行混淆過的惡意程式

    根據 StepSecurity,主程式被塞入一小段載入器,從攻擊者推進官方 nrwl/nx 程式庫、不屬於任何分支的「孤兒 commit」抓取套件,再安裝 Bun 執行環境來跑惡意程式。惡意程式來自專案自己的可信程式庫,而不是可疑網域。

    防禦: StepSecurity 建議留意開發機連往雲端中繼資料位址或 Sigstore 端點的異常連線。

  5. 你的系統

    蒐集憑證、傳出去並設法駐留

    目標包括 Vault、Kubernetes、AWS、npm、GitHub token 與 Actions secrets、1Password CLI 內容(只在當時已登入 op CLI 時)、私鑰、GCP 與 Docker 憑證;透過 HTTPS、GitHub API 與 DNS 傳出。Linux 上嘗試寫入 sudoers,macOS 上留下 LaunchAgent。

    防禦: 先停掉惡意程序、刪除駐留檔案,再輪替所有憑證。

  6. 攻擊者

    GitHub 員工裝置中招,內部程式庫外洩

    GitHub 揭露一名員工裝置被帶毒的 VS Code 擴充套件感染(並連結到 Nx 公告);攻擊者聲稱取走約 3,800 個內部程式庫,GitHub 表示和目前的調查「方向一致」;GitHub 表示沒有證據顯示內部程式庫以外的客戶資料受影響。

    防禦: 稽核存取紀錄;把曾中招的電腦視為可能仍受感染,輪替後考慮重灌。

影響範圍

這不是程式寫錯造成的漏洞,而是有人拿到發布權限後,故意發布了一個帶毒的版本。CWE-506(內嵌惡意程式碼)就是描述這種情況。

條件是否受影響
在 VS Code 或 Cursor 等分支版本裝了 Nx Console(nrwl.angular-console),且 2026-05-18 約 12:30–13:09 UTC 間開著自動更新可能已中招,官方要求視為已遭入侵
曾手動安裝 18.95.0可能已中招
18.94.0 以前,且曝險時段內沒有更新未受影響
18.100.0 以上安全版本;但若曾裝過 18.95.0,更新不會清掉已經在電腦上的惡意程式
Nx Console 的 JetBrains 外掛沒有任何來源提到;官方事後檢討只談 VS Code 擴充套件,目前沒有證據顯示受影響

各市集的上架時間:VS Code Marketplace 約 12:30–12:48 UTC,Open VSX 約 12:33–13:09 UTC。官方數字是 Microsoft Marketplace 28 次安裝、Open VSX 41 次下載(21 個不同 IP),但 Nx 自己的分析記錄到約 6,000 次啟用;廠商解釋兩者計算的東西不同(安裝次數與啟用次數)。

原理

Nx 的事後檢討把這起事件拆成四個串在一起的失誤:

  1. 上游套件先被入侵。 2026-05-11,攻擊者發布了 42 個 @tanstack/* npm 套件的惡意版本(CVE-2026-45321)。
  2. 安全設定默默失效。 一名 Nx 貢獻者在另一個專案做例行安裝。那個專案設了 7 天的「最短發布時間」,本來會跳過太新的套件;但這個設定要 pnpm 10.16 以上才支援,專案卻鎖在 pnpm 10.14,舊版遇到不認得的設定直接忽略。結果裝到了才發布 77 分鐘的惡意 TanStack 版本。
  3. CLI token 沒有保護。 這名貢獻者的 GitHub CLI token 放在本機程式拿得到的地方:設定檔 ~/.config/gh/hosts.yml、執行 gh auth token,或執行中 gh 程序的記憶體。事後檢討說還沒確定惡意程式走的是哪一條,只知道它執行後 74 秒內就取得並使用了這個 token。攻擊者從 5 月 11 日用到 16 日,推送 commit 並刪除 workflow 執行紀錄。
  4. 一個人就能發布。 和 Nx 其他產品不同,發布 Nx Console 不需要第二個人核准。

5 月 18 日,惡意的 18.95.0 被上傳;Marketplace 記錄的上傳者就是那位被入侵的貢獻者。官方公告說偷來的憑證讓攻擊者能以貢獻者身分執行 workflow,但確切用了哪個 token、哪條管道,官方沒有細說。

根據 StepSecurity 的分析,擴充套件主程式被塞入一小段載入器。擴充套件一啟動(例如打開工作區),載入器就從攻擊者推進官方 nrwl/nx 程式庫的「孤兒 commit」抓取套件,安裝 Bun 執行環境,再執行高度混淆的惡意程式。重點是:惡意程式來自專案自己的可信程式庫,而不是明顯可疑的網域。

廠商確認的惡意行為: 蒐集 Vault token、Kubernetes 與 AWS IAM 認證、npm .npmrc token 與 npm OIDC token 交換、AWS 執行個體中繼資料、Secrets Manager、SSM 與 Web Identity token、GitHub token 與 Actions secrets、程序記憶體、1Password CLI 內容(只在當時已登入 op CLI 的情況下)、私鑰、連線字串、GCP 與 Docker 憑證;透過 HTTPS、GitHub API 與 DNS 傳出;在 Linux 上嘗試寫入 sudoers 以長期駐留。

只有 StepSecurity 提到的行為(第三方): 讀取 Claude Code 設定檔 ~/.claude/settings.json、在 Linux 掃描程序記憶體、傳出前先加密、在 macOS 安裝每小時執行並透過 GitHub 搜尋接收簽章指令的 Python 後門,以及能產生 Sigstore/SLSA 來源證明,讓偷來的 npm token 發布看起來簽章有效的套件。

有問題的發布流程(概念示意,不是 Nx 的實際設定):

展開程式碼範例(yaml)
# 任何有寫入權限的貢獻者觸發,就直接發布到市集
publish:
  steps:
    - run: publish-extension   # 沒有第二人核准

修好的思路:

展開程式碼範例(yaml)
# 發布工作綁定一個需要審核的 environment
publish:
  environment: release        # 需兩位管理者核准,且核准者不能是觸發者
  steps:
    - uses: some/action@<完整 commit SHA>   # Actions 釘選到確切 SHA
    - run: publish-extension

另一個教訓是「設定寫了不代表生效」:像最短發布時間這類保護,要確認你實際跑的工具版本支援它,否則可能被默默忽略。

時間軸

日期 / 時間(UTC)事件
2026-05-11 19:20–19:2684 個惡意 TanStack 版本發布
2026-05-11 20:43Nx 貢獻者電腦執行惡意 TanStack 套件,GitHub CLI token 被偷
2026-05-11 → 05-16 00:04攻擊者使用該 token(推送 commit、刪除 workflow 執行紀錄)
2026-05-18 12:30惡意 18.95.0 上傳到 VS Code Marketplace
12:33Open VSX 發布完成
12:36維護者收到發布通知信,發現不該出現的版本
12:47–12:48從 VS Code Marketplace 下架
13:09從 Open VSX 下架
13:58啟動事件應變,撤銷被入侵工程師的權限
2026-05-18 17:01GHSA-c9j4-9m59-847w 公開(時間依事後檢討;GitHub API 的 published_at 為 17:03:43 UTC)
2026-05-1818.100.0 釋出(版本說明只列功能,沒有提到安全)
2026-05-20GitHub 揭露員工裝置被帶毒 VS Code 擴充套件感染,內部程式庫被取走(攻擊者聲稱約 3,800 個)
2026-05-21Nx 發表事後檢討
2026-05-27CVE-2026-48027 公開;列入 CISA KEV(期限 2026-06-10)
2026-05-28據 SANS 報導,CISA 發布關於 Nx Console 與 GitHub 程式庫的供應鏈警示

延伸閱讀

  • 評分差異: 本頁標示的 9.8 分採用 NVD 的 CVSS 3.1 評分;GitHub(CNA)給的是 CVSS 4.0 的 9.3 分。兩者都標示不需使用者操作,符合「自動更新就會中招」的情況。GitHub 公告頁面顯示時沒有列 CWE 與分數,但 GitHub 送出的 CVE 紀錄有 CWE-506 與 9.3。
  • 日期與時長不一致: CVE/NVD 描述寫 5 月 19 日,其他所有來源寫 5 月 18 日,本頁採用 5 月 18 日。VS Code Marketplace 的上架時長也有兩種說法:GHSA 公告與 CVE 紀錄寫 12:30 上架、12:48 下架,約 18 分鐘;Nx 事後檢討的時間軸寫 12:47 下架,是上傳後約 17 分鐘、12:36 收到通知信後約 11 分鐘,但同一篇開頭的摘要寫套件「上架約 11 分鐘」,StepSecurity 也引官方公告寫約 11 分鐘。來源沒有說明差異的原因(例如上傳時間是否等於可下載的時間),本頁兩種都列出。
  • 勒索軟體標記: CISA KEV 紀錄把「已知用於勒索軟體活動」標為 Known。本頁照實轉述這是 CISA 的分類;我們讀到的來源都沒有把勒索軟體和 Nx Console 事件直接連起來,只有 Tenable 與 Snyk 轉述的「TeamPCP 與 Vect 勒索軟體集團合作」說法(Snyk 註明出自 Unit 42 依 BreachForums 公告所做的記錄),而 SANS 報告 Vect 的外洩網站到 6 月初仍無動靜。
  • GitHub 事件: GitHub 表示攻擊者的說法和調查結果「方向一致」,沒有證據顯示內部程式庫以外的客戶資料受影響;它輪替了秘密與 GitHub Enterprise Server 簽章金鑰,GHES 管理者需要輪替 GPG 金鑰才能安裝之後的更新。GitHub 沒有指名攻擊者。
  • 更大的攻擊活動: 資安廠商把上游 TanStack 事件歸為「Mini Shai-Hulud」蠕蟲活動,並歸因於 TeamPCP;但 TanStack 公告本身沒有命名,Unit 42 指出蠕蟲原始碼已在 5 月 12 日公開,SANS 也認為後續波次的歸因並不明確。各家對攻擊波次的算法也不同。Nx Console 惡意程式本身沒有來源描述它會像蠕蟲一樣擴散。
  • 簽章不等於安全: 上游 TanStack 套件帶有有效的 SLSA Build Level 3 來源證明;有效簽章只能證明是哪條管線建出來的,不能證明程式無害。
  • AI 相關: StepSecurity 指出這個惡意程式會讀取 Claude Code 設定檔,Nx 的事後檢討則完全沒有提到 AI。
  • StepSecurity 稱這是一年內第二起針對 Nx 的供應鏈攻擊(前一起是 2025 年 8 月的 npm 事件),本頁未對照一手來源確認。
  • 無法確認:18.96 到 18.99 為何被跳過;JetBrains 外掛是否受影響。

驗證紀錄 AI 依審稿規則逐項核對來源,全部通過;未經人工審稿,也尚未在我們的環境重現

AI 審稿2026-09-29 · 審稿規則

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

來源

  1. 安全公告Compromised Nx Console version 18.95.0 (GHSA-c9j4-9m59-847w) · Nx (nrwl) via GitHub, 2026-05-18 · 查閱 2026-09-23
  2. 廠商說明Postmortem: Nx Console v18.95.0 supply-chain compromise · Nx, 2026-05-21 · 查閱 2026-09-23
  3. 修補 commit / 版本Releases · nrwl/nx-console · Nx (nrwl) via GitHub, 2026-05-18 · 查閱 2026-09-23
  4. 其他Why Nx Console is removed from VSCode Marketplace? (issue #3139) · GitHub (nrwl/nx-console), 2026-05-18 · 查閱 2026-09-23
  5. 安全公告CVE-2026-48027 record · CVE Program / GitHub (CNA), 2026-05-27 · 查閱 2026-09-23
  6. CVE / NVD / OSVCVE-2026-48027 · NIST NVD, 2026-05-27 · 查閱 2026-09-23
  7. CVE / NVD / OSVCVE-2026-45321 · NIST NVD, 2026-05-12 · 查閱 2026-09-23
  8. 安全公告Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys · TanStack via GitHub, 2026-05-11 · 查閱 2026-09-23
  9. 廠商說明Investigating unauthorized access to GitHub's internal repositories · GitHub, 2026-05-20 · 查閱 2026-09-23
  10. 研究文章Nx Console VS Code extension compromised · StepSecurity, 2026-05-18 · 查閱 2026-09-23
  11. 研究文章TanStack npm Packages Hit by Mini Shai-Hulud · Snyk, 2026-05-11 · 查閱 2026-09-23
  12. 研究文章Mini Shai-Hulud Supply Chain Attack CVE-2026-45321 FAQ · Tenable, 2026-05-21 · 查閱 2026-09-23
  13. 研究文章TeamPCP Supply Chain Campaign: Activity Through 2026-06-07 · SANS Internet Storm Center, 2026-06-08 · 查閱 2026-09-23
  14. 研究文章The npm Threat Landscape: Attack Surface and Mitigations · Palo Alto Networks Unit 42, 2026-07-15 · 查閱 2026-09-23
  15. 新聞報導GitHub Internal Repositories Breached via Malicious Nx Console VS Code Extension · The Hacker News, 2026-05-21 · 查閱 2026-09-23

媒體簡報

一句話

Nx Console 是開發者常用的 VS Code 擴充套件。2026 年 5 月 18 日,攻擊者利用一名貢獻者先前在另一起套件入侵中被偷走的權限,發布了藏有惡意程式的 18.95.0 版,開著自動更新的使用者不需做任何事就會中招,電腦上的各種雲端與程式碼平台憑證會被偷走。GitHub 表示有員工裝置因此受害;攻擊者聲稱取走約 3,800 個內部程式庫,GitHub 表示這和它目前的調查方向一致。美國 CISA 已於 5 月 27 日將此漏洞列入已知遭利用漏洞清單。

關鍵數字

受影響版本
僅 18.95.0;18.100.0 以上安全 cveawg.mitre.org
嚴重度
CVSS 3.1 9.8(NVD,本頁標示的分數);CVSS 4.0 9.3(GitHub,CNA) services.nvd.nist.gov
曝險時段
2026-05-18 約 12:30–13:09 UTC nx.dev
列入 CISA KEV
2026-05-27(期限 2026-06-10) services.nvd.nist.gov
下游影響
攻擊者聲稱取走 GitHub 約 3,800 個內部程式庫(GitHub 稱與調查方向一致,調查仍在進行) github.blog

已確認

  • 攻擊者發布了藏有惡意程式的 Nx Console 18.95.0,啟動時會竊取多種憑證(官方公告與事後檢討)。
  • 起因是一名貢獻者先在 TanStack 套件入侵事件(CVE-2026-45321)中被偷走 GitHub CLI token。
  • GitHub 確認有員工裝置被帶毒的 VS Code 擴充套件感染,內部程式庫被取走;攻擊者聲稱約 3,800 個,GitHub 表示和目前的調查「方向一致」。
  • CISA 已將此漏洞列入已知遭利用漏洞清單。

尚未確認 / 說法不一

  • 事件日期:CVE/NVD 描述寫 5 月 19 日,廠商、StepSecurity 與 GitHub 都寫 5 月 18 日。
  • KEV 將「已知用於勒索軟體活動」標為 Known,但沒有來源把勒索軟體和這起 Nx Console 事件直接連起來。
  • 攻擊者確切用哪個憑證或管道完成發布,官方沒有細說。
  • 在 VS Code Marketplace 上架多久:GHSA 公告與 CVE 紀錄寫 12:30 上架、12:48 下架,約 18 分鐘;Nx 事後檢討的時間軸寫 12:47 下架,是上傳後約 17 分鐘、收到通知信後約 11 分鐘,但同一篇的摘要寫「上架約 11 分鐘」,StepSecurity 也引官方公告寫約 11 分鐘。來源沒有說明差異從何而來。

可引用的一句話

這次的惡意程式不是從可疑網站來的,而是從專案自己的官方程式庫,經由使用者信任的自動更新送到電腦上。

圖片

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

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

如何引用本頁

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

PlainCVE 團隊(2026)。《Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證》。PlainCVE。https://plaincve.date/vulns/cve-2026-48027-nx-console-malicious-extension(查閱日期:YYYY-MM-DD)
BibTeX
@misc{cve202648027nxconsolemaliciousextension2026,
  title  = {Nx Console 18.95.0 遭植入惡意程式:VS Code 擴充套件自動更新後竊取開發者憑證},
  author = {PlainCVE 團隊},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/vulns/cve-2026-48027-nx-console-malicious-extension},
  note   = {更新於 2026-09-29}
}