返回資料庫
安全與治理

1.4% 的 Console 用戶、所有廠商金鑰:OpenCode 洩漏事件關於 AI 憑證集中的啟示

最後更新:2026年11月2日

關鍵要點

  • 2026 年 10 月 16 日夜間,一名入侵者切入 OpenCode 託管 Console 背後的一個舊系統,暴露了 1.4% Console 用戶的 OpenAI、Anthropic 與 Google API 金鑰 —— 這些金鑰是使用者特意保存的,為的是讓團隊永遠看不到它們(OpenCode 於 X、CSA 研究筆記)。
  • 自行回報的濫用使單一帳戶在 OpenAI 上被扣 281 美元、在 Anthropic 上被扣 168 美元,還有一例回報達 1,700 美元 —— 由於這些金鑰是不記名憑證,被複製的金鑰會持續消費,直到各提供商將其撤銷(TechCrunch)。
  • 在 Console 裡刪除金鑰毫無作用;只有提供商能使已外洩的金鑰失效 —— Anthropic 與 Google 大規模封鎖了暴露金鑰,OpenAI 向受影響的 API 客戶退款(TechCrunch)。
  • 事件的應變處置卡在了一個安全過濾器上:前沿模型拒絕在回應中途分析惡意載荷,直到透過 OpenAI 的 Daybreak Blue 計畫獲得審查後的存取權 —— 這與 Hugging Face 七月記錄的同一堵牆一致(「護欄無法區分事件應變者與攻擊者」)(TechCrunch、Hugging Face)。
  • 截至 2026 年 11 月 2 日 —— 已過十六天 —— OpenCode 仍未發布根本原因、事後報告或總損失數字,「大規模蒸餾攻擊」的歸因仍有爭議;無論事件如何收場,集中化的教訓都成立(StepSecurity、CSA)。

每個把 OpenAI、Anthropic 或 Google 金鑰存進 OpenCode 託管 Console 的團隊,其開發者都做出了同樣站得住腳的本地決定:把金鑰移出 shell、點檔案與聊天記錄,讓託管工具代團隊呼叫提供商。2026 年 10 月 16 日,這些決定疊加成一個攻擊面。入侵者切入了 OpenCode Console 背後的一個舊系統 —— 這是團隊共享模型提供商的託管層 —— 1.4% Console 用戶的金鑰隨之流失(OpenCode 於 X、CSA)。數小時內,開發者們發布著同時命中三個提供商帳戶的消費告警 —— 有人在睡前回報了 281 美元 OpenAI 扣款與 168 美元 Anthropic 扣款,還有人回報總額超過 1,700 美元(TechCrunch)。

本文梳理該事件所證明的、如今每一次 AI 代理部署都背負的模式:一個託管你提供商憑證的工具,就是一個託管你 AI 關係的廠商,而撤銷權在提供商,不在工具。它承接 MCP Events: When a Subscription Becomes a Credential You Cannot Revoke —— 該文討論了訂閱生命週期缺口如何使 MCP 事件成一種無法乾淨撤銷的憑證;這裡缺口反了過來 —— 工具持有憑證,而你對已外洩副本的唯一槓桿,在簽發它的提供商那裡。

事實經過,按可驗證的順序

可驗證的時間線很短,因為廠商幾乎沒有對外發布:

  • 10 月 16 日(夜間): 入侵者切入 OpenCode Console 背後的一個較舊系統 —— 一個正退役拆解中的舊平台(CSA)。
  • 10 月 17 日: OpenCode 在 X 上披露洩漏,將影響範圍定為 Console 用戶的 1.4%,並以主旨「Action Required: Potential provider key breach」向每位受影響用戶寄出郵件。共同創辦人 Dax Raad 澄清了邊界 —— 「這是 OpenCode Console,不是 OpenCode 本體,那些金鑰從來不會到我們這裡」;開源 CLI 未受影響(TechCrunch)。
  • 10 月 17–18 日: Anthropic 與 Google 封鎖了他們認定已曝光的 API 金鑰(TechCrunch)。OpenAI 與 OpenCode 協同修復,並就已用額度向受影響的 API 客戶退款。
  • 仍在進行: 用戶回報的扣款持續累積 —— OpenAI 281 美元 / Anthropic 168 美元,其他回報顯示約 400 美元 Anthropic 扣款與約 200 歐元 Google 扣款,還出現了 1,700 美元的自助回報總額(CSA)。OpenCode 表示,對未授權扣款的退款正在進行。
  • 截至 11 月 2 日仍未公布: 根本原因、事後報告、總損失數字、儲存金鑰是否加密,以及確切的提供商名單 —— Cyera 的摘要把 OpenRouter 也列入暴露金鑰類型,而 The Hacker News 回報的是 OpenAI、Anthropic 與 Google(CSA、Cyera)。

誠實標記很重要:OpenCode 將事件歸因於「大規模蒸餾攻擊」,而研究者數小時內就提出異議 —— Nathan Lambert 稱這一表述言過其實,認為事件看起來就是一次直接的洩漏,其蒸餾用途未經證實(TechCrunch)。蒸餾本身是真實威脅 —— Anthropic 曾記錄過約 24,000 個詐騙帳戶、產生逾 1,600 萬次互動以 Claude 輸出進行訓練的活動 —— 但尚無人公開把 OpenCode 入侵與之連結。被竊金鑰是該市場的合理原料;合理不等於歸因。事件的規模背景:OpenCode 以 217,000 顆星位列 GitHub 星標最多的儲存庫之一,暴露面並非小型實驗 —— 而是生產環境中最大的開源 AI 專案之一。

模式:託管代理工具中的憑證集中

洩漏的結構比規模更重要。每一個存了提供商金鑰的 Console 工作區,都在本地解決了一個真實問題 —— 金鑰不再經由開發者的機器外流。加總起來,同樣的設計造就了一座保管庫:內含多個互不相關廠商的有效憑證,藏在一道客戶無法觀察、僅屬於一家公司的安全邊界之內。攻擊者無需入侵 OpenAI、Anthropic 或 Google,也無需攻破任何一台客戶機器;託管工具本身,就是用戶所託付的所有廠商關係的單點暴露面(CSA)。

提供商金鑰比大多數機密更危險,因為它們是高權限的不記名憑證:它們通常不綁定任何裝置、網路或工作階段,除非設定了更窄範圍的專案金鑰與消費上限,就會以客戶帳戶消費。被竊金鑰立即生效、隨處可用、計在你的帳上 —— 受害者的未授權扣款紀錄正是如此(CSA)。本月早些時候,同樣的結構以另一種形態出現:CSA 對 LiteLLM 閘道漏洞鏈的分析記錄了一座託管企業提供商金鑰的閘道,一次淪陷即暴露其前端所有上游服務的憑證。架構不同;集中相同。

舊系統這個細節值得單獨一行。入侵者切中的系統正在退役 —— 待刪除系統往往修補更少、監控更弱、存取審查更鬆,卻仍持有生產資料(CSA)。憑證儲存不是「舊資料」。在遷移與刪除完成之前,一個正在退役的系統就是一座在役保管庫。

撤銷是不對稱的 —— 它在提供商,不在工具

操作上的不對稱是本事件最可遷移的教訓。從 OpenCode Console 刪除金鑰,只是移除廠商側的副本;它對 10 月 16 日凌晨 2 點已外洩的副本毫無作用。只有簽發方提供商能使憑證失效 —— 這正是 CSA 與 Cyera 一再強調同一程序的原因:在各提供商自己的控制台內撤銷並重新簽發,絕不能只在代理工具裡操作(CSA、Cyera)。

下圖把這種不對稱拆解得清清楚楚:

OpenCode Console 洩漏:憑證集中與兩條撤銷路徑 一座託管保管庫存著多家廠商的金鑰。在工具中刪除只是記帳;在提供商處撤銷才是遏制。 保管庫如何形成 工作區 A OpenAI 金鑰 工作區 B Anthropic 金鑰 工作區 C Google + OpenRouter 金鑰 ... 全體 Console 用戶 已識別且受影響的 1.4% OpenCode Console 託管保管庫 在役提供商金鑰、一條邊界、一種客戶 無法觀察的安全姿態 入侵者 —— 正在退役的舊系統 2026-10-16,夜間 · 10 月 17 日披露 Console 用戶的 1.4% · 金鑰已外洩 不記名憑證:不綁定裝置或工作階段 一次被複製,處處可消費,計在你的帳上 撤銷真正生效之處 路徑 1 —— 在 Console 中刪除 僅移除廠商側副本 對已外洩副本毫無作用 已被竊的副本持續消費 不是遏制 路徑 2 —— 在提供商處撤銷 在每個提供商的控制台內撤銷並重新簽發: OpenAI · Anthropic · Google · 其他所列項目 Anthropic 與 Google 大規模封鎖了金鑰; OpenAI 向受影響的 API 客戶退款 遏制 —— 簽發方終結憑證 然後是稽核 自 10 月 16 日起複查每個提供商的用量與帳單 在每個提供商帳戶上設定硬性消費上限 把金鑰按專案或按使用者劃定範圍 Console 的預算攔不住直接使用被竊金鑰的人 ! 回應之牆 —— 事件中途被回報,並非猜測 前沿模型拒絕分析惡意載荷:安全過濾器分不清事件應變者與攻擊者 Hugging Face 七月撞上同一堵牆 —— 「護欄無法區分事件應變者與攻擊者」 透過 OpenAI 的 Daybreak Blue 計畫獲得審查後的存取,團隊才恢復調查能力 OpenCode 披露到防禦的 48 小時窗口由防禦型代理支撐 —— 提前規劃你的 IR 工具 截至 11 月 2 日未公布:根本原因 · 事後報告 · 總損失 · 金鑰加密 · 確切提供商名單 · 蒸餾歸因(有爭議) 無論每個未決問題如何收場,集中化的教訓都成立 在代理工具中刪除金鑰只是記帳。在提供商處撤銷才是遏制。 1.4% 受影響 · 自報扣款 168–1,700 美元 · 撤銷於 OpenAI、Anthropic、Google —— 依序而行

不對稱的第三層是時間。自動化濫用通常在憑證曝光後立即開始,因此稽核必須覆蓋每一位可能持有已關聯金鑰的提供商 —— 自 10 月 16 日起複查用量與帳單,覆蓋每一個提供商帳戶,無論是否收到 OpenCode 的郵件(Cyera、CSA)。1.4% 這個數字不能轉移信任:只有 OpenCode 知道它是如何算出的,金鑰保存在 Console 卻沒收到郵件的團隊,不能把沉默當作清白。輪替便宜;它所防範的暴露沒有邊界。

回應之牆:當事件應變撞上自己的護欄

本事件為一個已有名字的問題添上了第二個實例。OpenCode 團隊在 48 小時持續攻擊期間全天候運行防禦型 AI 代理時,他們用於分析的模型開始拒絕檢查惡意程式 —— 載荷觸發了安全過濾器。OpenCode 後來取得 OpenAI Daybreak Blue 計畫的存取資格,該計畫向經審查的使用者提供較不易拒絕防禦性安全工作的模型,調查隨之有了起色(TechCrunch)。

這是七月模式在小公司的重演。Hugging Face 分析自主 AI 代理入侵其基礎設施時,商用模型拒絕分析日誌;其部落格「The asymmetry problem」一節把這個操作事實說得非常精確 —— 護欄「無法區分事件應變者與攻擊者」(Hugging Face)。回應之牆如今是一個反覆出現的事件參數:兩家公司、同樣身處危機、同樣發現分析工具拒絕分析。治理上的結論並不是事件中途應放寬護欄 —— 而是事件預案應假設 AI 輔助的分流會卡在安全過濾器上,並提前安排好經審查的存取路徑;OpenCode 是在牆拖慢了自己之後才做到的。

總統科技顧問委員會共同主席 David Sacks 公開指出,護欄在攻擊進行中幫了倒忙 —— OpenCode 與 Hugging Face 皆是如此(TechCrunch)。政策層面的關注已經到來;可落地的改變仍在買方一側。

經得起任何未決問題的四項控制

目前已披露的任何事實都不能告訴買家他們的 Console 金鑰是否加密過。採用以下控制並不需要這些答案:

  1. 盤點哪些工具持有哪些提供商金鑰。 故障始於集中化在被攻陷之前不可見。逐一向團隊使用的每款託管 AI 工具 —— 編碼代理、聊天平台、閘道 —— 詢問它到底儲存哪些廠商憑證。
  2. 把這些工具當作盡職調查中的憑證廠商。 一個持有你提供商金鑰的工具,就持有你的 AI 關係。問清金鑰如何儲存、是否加密、由誰加密,退役路徑會得到怎樣的存取審查 —— CSA 在其 AI Controls Matrix 中映射了相應領域(身分與存取管理、密碼學與金鑰管理、供應鏈)。
  3. 讓輪替成為例行公事,而不是緊急反應。 按計畫輪替提供商金鑰,並在任何託管廠商發布事件公告時立即輪替 —— 因為廠商保管庫被攻陷,只有廠商選擇告訴你時你才看得見。
  4. 在提供商處劃界並設上限。 在提供商控制台內設定按專案劃分的金鑰與硬性消費上限,才能約束直接用於攻擊該提供商的被竊金鑰 —— 託管工具的預算做不到(Cyera)。

把退役規則加進同一名單:一個系統要被視為低優先級,前提是資料遷移與刪除已經完成。OpenCode 失守的那個系統本已在退役之列,卻仍持有客戶金鑰。

相關閱讀


一家中型通路商的工程團隊把一把共用的 Anthropic 金鑰存進了其 AI 編碼工具的託管控制台,因為這樣金鑰就不會出現在任何一台筆記型電腦與點檔案裡。一個週二晚上,工具廠商披露了自家舊系統的一次洩漏。團隊把金鑰從工具中刪除,把預算面板歸零,然後繼續工作。四天後,財務主管質問為何 Anthropic 的帳單上出現了 740 美元無法歸類的用量 —— 廠商側的副本已刪除,但入侵者取走的那份副本,在被 Anthropic 撤銷之前始終是一份在役的不記名憑證,而沒有人從入侵之日起複查過提供商帳單。廠商的預算小工具全程無關。

申請一次範圍明確的構建。為期一週的調研。你將得到系統清單、工作流程地圖與確定的範圍 —— 無論最終是否與我們合作。

想為您的系統建構這個嗎?

這裡的每份文件都來自真實的生產工作。如果您有目標系統和工作流程想法,我們可以在一週內確定範圍。

申請客製開發

為期一週的發掘階段。您會拿到系統清單、工作流程地圖和固定範圍——無論您最終是否與我們合作開發。