觀點 · 資訊分享

資安公司 CrowdSec 程式碼外流:起因是 5 月 TanStack 套件被下毒,離職員工帳號沒及時移除

CrowdSec 公開事件報告:約 170 個私有 GitHub 程式庫在 5 月被下載、9 月 16 日被貼上論壇。源頭是一位剛離職、仍留在 GitHub 組織裡的工程師電腦,被 TanStack npm 供應鏈攻擊偷走了權杖。

發布
2026-09-19
篇幅
約 4 分鐘 · 1,590 字
結構
7 節 + 3 題常見問題
標籤
#CrowdSec#TanStack#供應鏈攻擊#npm#GitHub
資安公司 CrowdSec 程式碼外流:起因是 5 月 TanStack 套件被下毒,離職員工帳號沒及時移除

一句話看懂:資安公司 CrowdSec 的私有程式碼外流,起點是 5 月被下毒的 TanStack npm 套件,偷走了一位剛離職員工的 GitHub 權杖。

CrowdSec 程式碼外流事件報告資訊圖卡:npm 套件被下毒,離職員工的帳號成了破口

先用白話講:什麼是「供應鏈攻擊」?

想像你開餐廳,每天跟同一家廠商叫貨。如果有人偷偷在廠商的麵粉裡下藥,你自己的廚房再乾淨也沒用,客人吃了一樣出事。

寫程式也一樣。現在的網站大量使用別人寫好的套件(例如前端常用的 TanStack),透過 npm 下載。供應鏈攻擊就是駭客去污染這些套件,讓所有安裝它的工程師電腦一起中招,偷走電腦裡存的各種權杖和密碼。

發生什麼事

CrowdSec 是一家做協作式防火牆的資安公司。執行長在 9 月 18 日發布完整事件報告,時間線如下:

  • 5 月 11 日:攻擊者入侵 TanStack 的 npm 套件,42 個套件被植入專偷憑證與權杖的惡意程式
  • 5 月 22 日:攻擊者用一個 GitHub OAuth 權杖,在約 9 分鐘內下載了 約 170 個 CrowdSec 私有程式庫
  • 5 月 25 日:這位剛離職員工的 GitHub 存取被撤銷(他因為想完成交接工作,帳號先被保留)
  • 8 月 17 日:外流資料裡的一組 AWS 權杖被人拿來測試權限
  • 9 月 16 日:程式碼被貼上駭客論壇;CrowdSec 當晚成立應變小組
  • 9 月 18 日:發布完整報告,前後約 48 小時完成盤點、權杖輪替與調查

損失有多大?

依 CrowdSec 的說法:

類別 狀況
基礎設施、資料庫 沒有被存取或入侵
程式碼 沒有被竄改(含開源軟體與建置流程)
可用的憑證 只有一組 AWS SNS 權杖,權限限縮到只能對單一主題發通知
使用者資料 83 個 Email(約 15 萬用戶中不到 0.05%)
其他個資 51 位 2020 年潛在投資人的姓名、Email 與投資脈絡

CrowdSec 也坦承,用來決定封鎖哪些 IP 的「共識演算法」門檻值一起外流了,他們會調整門檻並加強監控。

給開發者的技術細節

這份報告最有價值的是調查過程:

  • 外流封存檔裡的 .git/config 留著當初複製用的網址,可以看出用的是 gho_ 開頭的 GitHub OAuth 權杖
  • 這個權杖在被發現時已經不存在,組織稽核紀錄也找不到;GitHub 一般方案的稽核紀錄不會記錄 Git 下載活動
  • 最後是 GitHub 支援團隊提供那段時間的 Git 活動,才確認是離職員工的帳號
  • 報告提到可以用權杖的雜湊值去稽核紀錄裡比對:
echo -n "$TOKEN" | openssl dgst -sha256 -binary | base64
  • 讓損害沒有擴大的關鍵:AWS 採無伺服器架構、機密大量放在 SSM 與 Secrets Manager、權杖權限切到最小,另外對 Node 套件設了「發布滿一段時間才安裝」的規則

我的看法

這件事最值得小團隊警惕的,不是駭客多厲害,而是那句「我們跟他好聚好散,讓他把工作收尾」。接案團隊很常這樣:外包夥伴或離職同事的 GitHub、雲端權限一直沒收,覺得「反正人很好」。但問題從來不是人,而是那台電腦哪天被套件下毒。

我會建議把「離職或結案當天收回所有權限」寫成固定流程,並定期輪替權杖。另外,CrowdSec 能在 48 小時內講清楚影響範圍,靠的是權限切得夠細、機密沒寫在程式碼裡。這兩件事平常麻煩,出事時就是救命繩。

名詞小辭典

  • npm:JavaScript 最常用的套件下載平台,前端與 Node.js 專案幾乎都靠它安裝套件。
  • 權杖(Token):代替帳號密碼的通行證,拿到它的人就能用你的身分做事。
  • OAuth:讓 App 代表你存取某個服務的授權方式,GitHub 的 gho_ 權杖就是其中一種。
  • 權限最小化:每把鑰匙只給剛好夠用的權限,被偷了損失也有限。

資料來源

常見問題

我有用 TanStack(例如 TanStack Query),要擔心嗎?
這次報告提到的是 2026 年 5 月 11 日那波被下毒的版本,共 42 個套件。重點是確認你在那段時間有沒有安裝到被植入惡意程式的版本;CrowdSec 自己檢查後發現,他們用到的 TanStack 套件都不在被下毒的清單上。若不確定,最保險的做法是輪替那段期間開發機上的所有權杖。
為什麼程式碼外流幾個月後才被發現?
攻擊者用的是 GitHub OAuth 權杖,在 CrowdSec 發現時已經不存在了,組織的稽核紀錄也查不到它。最後是靠 GitHub 支援團隊調出那兩小時的 Git 活動紀錄,才確認是哪個帳號被盜用。
小團隊可以學到什麼?
三件事:離職當天就把人移出 GitHub 等所有組織、收回權杖;雲端權杖只給剛好夠用的權限;機密不要寫在程式碼裡,改放密鑰管理服務。CrowdSec 也提到他們會限制 Node 套件必須發布滿一段時間才安裝。
LINE