1.4% 的 Console 用戶、所有廠商金鑰:OpenCode 洩漏事件關於 AI 憑證集中的啟示
關鍵要點
- 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)。
下圖把這種不對稱拆解得清清楚楚:
不對稱的第三層是時間。自動化濫用通常在憑證曝光後立即開始,因此稽核必須覆蓋每一位可能持有已關聯金鑰的提供商 —— 自 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 金鑰是否加密過。採用以下控制並不需要這些答案:
- 盤點哪些工具持有哪些提供商金鑰。 故障始於集中化在被攻陷之前不可見。逐一向團隊使用的每款託管 AI 工具 —— 編碼代理、聊天平台、閘道 —— 詢問它到底儲存哪些廠商憑證。
- 把這些工具當作盡職調查中的憑證廠商。 一個持有你提供商金鑰的工具,就持有你的 AI 關係。問清金鑰如何儲存、是否加密、由誰加密,退役路徑會得到怎樣的存取審查 —— CSA 在其 AI Controls Matrix 中映射了相應領域(身分與存取管理、密碼學與金鑰管理、供應鏈)。
- 讓輪替成為例行公事,而不是緊急反應。 按計畫輪替提供商金鑰,並在任何託管廠商發布事件公告時立即輪替 —— 因為廠商保管庫被攻陷,只有廠商選擇告訴你時你才看得見。
- 在提供商處劃界並設上限。 在提供商控制台內設定按專案劃分的金鑰與硬性消費上限,才能約束直接用於攻擊該提供商的被竊金鑰 —— 託管工具的預算做不到(Cyera)。
把退役規則加進同一名單:一個系統要被視為低優先級,前提是資料遷移與刪除已經完成。OpenCode 失守的那個系統本已在退役之列,卻仍持有客戶金鑰。
相關閱讀
- MCP Events: When a Subscription Becomes a Credential You Cannot Revoke —— 代理層中的憑證生命週期缺口:MCP Events 訂閱的壽命超過其權杖,而 ChatGPT 缺少撤銷信封
- An Evaluation Agent Breached Medicare: Three Failure Points Every Agent Deployment Shares —— 洩漏解剖的姊妹篇:意圖漂移、可被繞過的控制,以及失靈五天的通知路由
- MCP Security Hardening Checklist for Production Deployments —— 本事件金鑰保管庫失效所指涉的機密管理與受治理模組控制項
一家中型通路商的工程團隊把一把共用的 Anthropic 金鑰存進了其 AI 編碼工具的託管控制台,因為這樣金鑰就不會出現在任何一台筆記型電腦與點檔案裡。一個週二晚上,工具廠商披露了自家舊系統的一次洩漏。團隊把金鑰從工具中刪除,把預算面板歸零,然後繼續工作。四天後,財務主管質問為何 Anthropic 的帳單上出現了 740 美元無法歸類的用量 —— 廠商側的副本已刪除,但入侵者取走的那份副本,在被 Anthropic 撤銷之前始終是一份在役的不記名憑證,而沒有人從入侵之日起複查過提供商帳單。廠商的預算小工具全程無關。
申請一次範圍明確的構建。為期一週的調研。你將得到系統清單、工作流程地圖與確定的範圍 —— 無論最終是否與我們合作。
想為您的系統建構這個嗎?
這裡的每份文件都來自真實的生產工作。如果您有目標系統和工作流程想法,我們可以在一週內確定範圍。
申請客製開發為期一週的發掘階段。您會拿到系統清單、工作流程地圖和固定範圍——無論您最終是否與我們合作開發。