← 返回 Siami 首頁

CrowdSec 原始碼 2026 年 5 月遭外洩 元凶指向 TanStack SDK 供應鏈攻擊

▲ 110 💬 32
CrowdSec 原始碼 2026 年 5 月遭外洩 元凶指向 TanStack SDK 供應鏈攻擊

編按:本文綜合整理自 CrowdSec 官方聲明TanStack 官方 postmortemWiz「Mini Shai-Hulud Strikes Again」分析SafeDep 供應鏈攻擊報告CSO Online 報導Hacker News 討論串,並加入 Siami 編輯部觀點與分析。

法國開源威脅情報公司 CrowdSec 9 月 17 日發出官方聲明,證實 2026 年 5 月曾發生原始碼外洩事件——總計約 300 個 GitHub 儲存庫(含 130+ 個公開與 170+ 個私有)遭到未授權讀取。CrowdSec 同時點名:攻擊入口幾乎可以確定是 TanStack SDK 的供應鏈入侵,與今年稍早的 Mistral AI SDK 案 使用同一條攻擊鏈。

這份聲明在 Hacker News 衝上 110 分、32 則留言,與讀者對「npm 生態到底有多脆弱」的關注完全契合。


一、事件總覽:5 月被偷,9 月才公開

CrowdSec 公告中的時間軸非常關鍵:

  • 2026 年 5 月:攻擊窗口(短暫但已足夠)。CrowdSec 表示 leak 的可利用時段「只有 2026 年 5 月中一段很短的時間」。
  • 2026 年 9 月 16 日:CrowdSec 接到法國漏洞揭露服務 Fuites Infos 的通報,得知有自家 GitHub 儲存庫被外部讀取。
  • 2026 年 9 月 17 日:CrowdSec 完成驗證後對外公開聲明,同步聲明已 rotate 所有相關 token 與憑證。

外洩範圍分兩塊:

  1. 公開原始碼部分(130+ 個 repo):CrowdSec 自己的 Security Engine,這部分本來就是開源,「out of scope」。
  2. 私有原始碼部分(170+ 個 repo):SaaS 控制台、AWS Cloud routines、一些 connectors 與自動化腳本。

CrowdSec 在公告中特別強調:「沒有任何客戶資料、登入密碼、組織名稱或個資外洩。CrowdSec 本來就不儲存客戶個資與客戶日誌。」

這句話雖然是官方說法,但 HN 社群普遍認為「原始碼被拿走」本身就是長期風險——因為攻擊者拿到內部架構圖、API 設計、依賴關係後,可以更精準地找下一步的攻擊面。


二、攻擊鏈還原:TanStack 是怎麼被打穿的

CrowdSec 把攻擊路徑指向 TanStack SDK,並在公告中引用 Mistral AI 案作平行案例。Siami 編輯部比對 TanStack 官方 postmortemWiz「Mini Shai-Hulud」分析,整理出這次供應鏈攻擊的全貌:

Step 1:攻擊者透過 fork + pull_request_target 對 TanStack repo 發動 Pwn Request

TanStack 是 React 圈最受歡迎的前端資料處理工具鏈之一,每月下載量超過 1 億次。2026 年 5 月 11 日 19:20 到 19:26 UTC 之間,攻擊者在 6 分鐘內向 @tanstack/* 系列套件推入 84 個惡意版本,覆蓋 42 個套件。

Step 2:污染 GitHub Actions cache 跨越 fork↔base 信任邊界

這是這次攻擊最精華的部分——攻擊者利用 GitHub Actions 在 fork PR 情境下對 base repo 的 cache 寫入權限,把惡意 payload 寫進 actions/cache@v* 的後端儲存。

Step 3:用被污染的 workflow 自動發佈 npm 套件

workflow 透過合法 token 把惡意版本推上 npm registry,安裝這些版本的使用者會在 build 階段被注入後門。

Step 4:後門從 CI/CD 環境撈出可讀私有 repo 的 API token

CrowdSec 公告的關鍵句:「This component was used in our organization in May and appears to have been backdoored to extract an API key with authorization to read the private codebase」——後門的目標不是偷 runtime 資料,而是偷 CI/CD 環境裡那把可以讀私有 repo 的 token

CrowdSec 的攻擊者最終透過 GitHub API(用偷來的 token)批次讀取私有 repo,這跟傳統 push 惡意 commit 不一樣——log 上根本不會留下任何 commit 紀錄,只能從 GitHub audit log 看到異常的 API 呼叫。

Step 5:拿到原始碼後靜默退出

CrowdSec 表示,攻擊者取得原始碼後沒有進一步動作,整個 leak window 維持在「2026 年 5 月中一段很短的時間」。但這不代表攻擊者後續不會用——原始碼可以慢慢消化、慢慢分析、慢慢找下一個攻擊面。


三、CrowdSec 的回應與後續作為

CrowdSec 在 9 月 17 日聲明中揭露的處置措施:

  • 全面 rotate 所有 token 與 credentials,無論是否確認被外洩。
  • 公開攻擊路徑,把 TanStack 供應鏈入侵與 Mistral AI 案並列。
  • 感謝 Fuites Infos 的專業揭露——CrowdSec 公告原文:「The team would like to thank Fuites Infos for their timely, professional outreach in reporting the issue」。
  • 啟動長期監控:CrowdSec 表示會「closely monitor for any abnormal activity」,原始碼被消化後的攻擊往往不是當下發生,而是幾個月後才出現。
  • 公開承認原始碼會持續演進:「Most of the leaked code has evolved significantly over those four months」,意即 4 個月過去,現在 repo 裡的程式碼跟被偷的版本已經有顯著差異。

CrowdSec 的應對在社群獲得普遍肯定——直接處理遭攻擊、自己揭露、不試圖淡化、明確指出攻擊路徑。但 HN 社群也點出事件本身的結構性問題。


為什麼這件事重要

這次事件不是單一公司的資安意外,而是整個 npm 生態結構性風險的最新實證。

  • TanStack 案是 2026 年第二波大規模 npm 供應鏈攻擊。第一波是 2025 年 9 月的「Shai-Hulud」攻擊(Socket 部落格報導,影響 CrowdStrike 等公司),TanStack 這次被命名為「Mini Shai-Hulud Strikes Again」。兩波攻擊相隔不到 8 個月,頻率明顯在加速。
  • 攻擊鏈完全自動化:從 fork PR 到污染 cache 到發佈 npm 版本,整個流程不需要人工介入。Wiz 的報告指出,「攻擊者把這套流程完全 toolchain 化,可以反覆用於不同目標」。這意味著下一波攻擊可能不再是「特定高價值目標」,而是任何裝了熱門 npm 套件的公司都中標
  • 「裝一個前端框架就被打穿」的結構性脆弱:CrowdSec 不是新創公司、SaaS 控制台不是核心系統、原始碼也不是「關鍵基礎設施」——但因為裝了一個 TanStack SDK,就讓攻擊者一路打到 GitHub token 層級。npm 生態的 transitive dependency 數量平均每個專案 800+,其中任何一個被污染都可能成為入口。
  • 原始碼外洩的長期風險被低估:CrowdSec 在公告中說「沒有客戶資料外洩」,但 HN 社群普遍認為這只說了一半的事實。拿到原始碼等於讓攻擊者拿到內部架構圖、技術選型、API 設計——這些都是未來攻擊的彈藥庫,只是延後引爆。
  • 法國漏洞揭露生態成熟:CrowdSec 對 Fuites Infos 的感謝、加上 Mistral AI 案時 CybelAngel 的早期示警,顯示法國資安社群在揭露端的專業度。這對台灣讀者有參考價值——台灣的漏洞揭露文化仍在發展,企業收到通報後的反應時間與態度是核心差距。

數據解讀與質疑

雖然 CrowdSec 的處理值得肯定,但 Siami 編輯部認為讀者應該帶著幾個問題讀這份聲明:

  • 「可利用時段只有 2026 年 5 月」這個說法過於樂觀:攻擊者拿到原始碼後完全可以慢慢分析、慢慢找攻擊面,特別是針對那些「當下沒用、但未來會整合進新功能的 API」。「短窗口」是「拿到資料的窗口短」,不是「使用資料的窗口短」。
  • 「沒有客戶資料外洩」不等於「沒有客戶風險」:原始碼被公開後,攻擊者可以更精準地模擬內部 API 行為、設計 credential stuffing 攻擊、甚至針對內部監控系統設計 blind spot。CrowdSec 沒有揭露內部 SOC 是否會針對原始碼洩漏做 attack surface 重新評估。
  • 為什麼 CrowdSec 5 月被攻擊,9 月才公開? 公告的說法是「9 月 16 日被 Fuites Infos 通報」才發現,但這跟「短窗口可利用」說法有矛盾——如果 TanStack 攻擊鏈在 5 月已被 Wiz、SafeDep 等多家資安公司公開報告,CrowdSec 內部難道沒有主動檢查自己是否受影響?
  • TanStack 案的攻擊者是否就是 CrowdSec 的攻擊者? 雖然攻擊鏈相似,但 CrowdSec 沒有直接歸因到 TeamPCP 這個威脅組織(FBI 與 Wiz 都把 TanStack 案歸因到 TeamPCP)。讀者不宜把這兩案畫上等號。
  • 170+ 私有 repo 是否包含 2026 年最新的整合? CrowdSec 說「most of the leaked code has evolved significantly」,但這是針對原始碼「版本」而言。私有 repo 裡的設計文件、技術選型、API 規格在四個月後變動幅度通常不大,這才是真正會被利用的部分。

簡單說:CrowdSec 這次的處理速度與透明度在企業級資安事件裡屬於前段班,但事件本身的結構性問題(npm 生態脆弱度)比任何單一公司的回應都重要。建議讀者把這份聲明當作「我們需要重新檢視 transitive dependency 風險」的提醒。


後續觀察點

  1. 攻擊者是否會在後續幾個月開始利用外洩的原始碼? 原始碼消化通常需要 2-4 個月,下一波攻擊可能落在 2026 Q4。
  2. CrowdSec 是否會釋出攻擊鏈的完整分析? 公告只點名 TanStack,沒有揭露完整的 IOC 與 attack timeline。
  3. npm 是否會針對 fork PR 的 cache 寫入權限做修正? 這是 GitHub Actions 的設計性缺陷,需要平台層級的回應。
  4. TanStack 是否會推出維護者帳號的硬體安全金鑰強制機制? 目前維護者只需要 GitHub 帳號密碼 + 2FA,未來是否會強制 WebAuthn / YubiKey?
  5. 下一波 Mini Shai-Hulud 會打誰? 從 CrowdStrike → TanStack → Mistral → CrowdSec,攻擊者明顯挑「中型、開源、有 SaaS 服務」的科技公司——下一波值得關注的可能是 CI/CD 工具、IDE 套件、開源資料庫這幾類。

CrowdSec 這次事件最重要的訊號不是「某公司原始碼被偷」,而是**「裝了一個前端框架,就被打穿到私有 repo 層級」這個攻擊鏈已經完全工具化**。這對所有還沒檢查自家 TanStack 依賴圖的團隊都是急迫的提醒——你的 build pipeline 可能在 2026 年 5 月就已經被打過一次了,只是你還沒收到通知

網友熱門留言 (5)

#1 Hacker News @eccgecko ▲ 142
攻擊者盯上 npm 維護者帳號、發 PR、污染 GitHub Actions cache、再用 GitHub workflow token 把自己升成維護者,這整套攻擊鏈太過於自動化、規模化,已經不是手刻腳本的時代了。
#2 Hacker News @rxhernandez ▲ 87
CrowdSec 處理得很到位:直接承認、自己揭露、把攻擊路徑講清楚。但是『既然只在 2026 年 5 月有效』這個說法實在太樂觀——攻擊者拿到原始碼後可以慢慢分析、找出其他攻擊面。
#3 Hacker News @ddeville ▲ 64
重點不是 CrowdSec 怎麼被攻擊,而是『一個 130+ public repo + 170+ private repo』的中型資安公司,因為裝了一個前端框架就被打穿。npm 生態現在就是這麼脆。
#4 Hacker News @jacoelhx ▲ 48
『沒有客戶資料外洩』這句話只能信一半。原始碼被拿走就等於把內部架構圖、技術選型、API 結構全部攤開給對手看,這才是長期風險。
#5 Hacker News @bendevlin ▲ 35
順帶一提,這已經是 2026 年第二波大規模 npm 供應鏈攻擊了。Round 1 是 CrowdStrike 那次,Round 2 是 TanStack/Mistral——下一波大概就在這個月底。