重點摘要
你以為的「公開金鑰」,正在被人刷你的 Gemini 帳單
Google 長年告知開發者 API 金鑰非機密,Firebase 文件至今仍如此聲稱,但 Gemini 上線後同一組金鑰已具備呼叫 LLM 與消耗配額的能力,形成靜默的安全邊界轉移。
Truffle Security 在 Common Crawl 資料集中發現 2,863 個可用的 Google API 金鑰,驗證後均可呼叫 Gemini 端點,波及私人檔案、快取資料與 LLM 使用費用。
Google 已主動封鎖部分外洩金鑰並在 AI Studio 加入狀態通知,但既有文件矛盾未解,開發者應立即為所有舊有金鑰設定 API 範圍限制並輪替曾公開的金鑰。
前情提要
Google 多年來在 Firebase 等平台文件中明確告知開發者:API 金鑰不是機密,可以放入前端程式碼、公開 Git 儲存庫,甚至 Common Crawl 可索引的網頁中。這個「公開即安全」的前提,讓無數開發者在無意間將金鑰曝光於公共網路。Truffle Security 的研究揭露,這個延續多年的安全假設,在 Gemini 服務上線後已悄然失效。
前因 1:文件明文說「非機密」的歷史
Firebase 的安全檢查清單至今(2026-01-21 更新版本)仍寫明 Firebase API 金鑰不是機密,Maps JavaScript API 文件(2026-02-26 更新)同樣展示前端直接嵌入金鑰的做法,並僅以「未限制的金鑰可能遭濫用」輕描淡寫帶過風險。這套文件策略使開發者長期低估金鑰管理的必要性,形成系統性的安全認知缺口。
前因 2:Gemini 上線帶來「特權提升」路徑
2025 年起,Google 陸續在各 GCP 專案中推出 Gemini 與 Generative Language API。問題的核心在於:一個已存在的 GCP 專案 API 金鑰,一旦有人——或自動化流程——在同一專案內啟用了生成式語言 API,該金鑰便可立即用於呼叫 Gemini 端點,無需重新核發、無需額外授權。Truffle Security 將此定義為「單服務特權提升」 (Single-Service Privilege Escalation) ,Google 在 2026-01-13 接受了這個分類。
名詞解釋
Single-Service Privilege Escalation(單服務特權提升):指原本僅具低風險存取權限的憑證,因同一系統的新服務被啟用,導致其實際可存取範圍大幅擴張,而憑證持有人毫不知情。
政策法規細節
核心條款
Google 的應對措施分為兩層。第一層為事後封鎖:針對在 Common Crawl 等公開資料集中被偵測到的外洩金鑰,Google 已主動阻止其存取 Gemini 端點,受影響的金鑰呼叫時會收到錯誤訊息:Your API key was reported as leaked. Please use another API key. 第二層為預防性設計建議:Google 建議開發者改用 AI Studio 核發的金鑰,這類金鑰預設僅限 Google AI Studio 與 Gemini 使用範圍,降低跨服務特權提升的風險。
適用範圍
所有持有 GCP 專案 API 金鑰的開發者均受影響,尤其是:
- 曾在公開 Git 儲存庫、前端程式碼或可索引網頁中嵌入金鑰的開發者
- 使用 Firebase、Maps JavaScript API 等歷史上文件明示「金鑰非機密」的服務的開發者
- 其 GCP 專案中已啟用或未來將啟用 Generative Language API 的帳戶
執法機制
目前 Google 的執法機制為被動偵測:僅對已知外洩(如 Common Crawl 資料集)的金鑰採取封鎖行動。未被偵測到的外洩金鑰仍可正常使用,產生的帳單風險由金鑰持有者自行承擔。Google 的帳單申訴流程可處理部分情況,但審核結果因案而異,並非保證退款。
合規實作影響
工程改造需求
開發者需要完成以下技術改造:
- 稽核現有 GCP 專案的 API 金鑰清單,確認哪些金鑰所屬專案已啟用 Generative Language API
- 為所有 API 金鑰設定 API 限制(僅允許必要的服務)與應用程式限制(綁定來源 IP 或 HTTP referrer)
- 將前端直接使用的 API 金鑰遷移至伺服器端代理或短效憑證 (ephemeral tokens)
- 輪替 (rotate) 所有曾公開出現過的舊有金鑰
合規成本估計
對於小型開發者或個人專案,金鑰審計通常可在半天內完成。對於擁有大量 GCP 專案的企業,則需要:
- 人力:資安工程師盤點所有專案金鑰(視規模需 1-5 人天)
- 工具:TruffleHog 等開源工具可掃描程式碼儲存庫(免費,但需整合進 CI/CD 管線)
- 時間:金鑰輪替與應用程式重新部署的耗時視服務數量而定
最小合規路徑
最低限度的合規步驟:
- 登入 Google AI Studio,檢視金鑰狀態警告面板
- 前往 GCP Console → APIs & Services → Credentials,對每個金鑰加上 API 限制
- 搜尋程式碼儲存庫中所有
AIza開頭字串(Google API 金鑰的常見前綴) - 若發現曾公開曝光的金鑰,立即建立新金鑰並停用舊有金鑰
產業衝擊
直接影響者
首當其衝的是:
- 使用 Firebase 並已在前端嵌入 API 金鑰的 Web 開發者(Firebase 文件長期宣稱金鑰非機密)
- 在 Common Crawl 可索引網頁中出現金鑰的網站所有人(已有 2,863 個確認受影響)
- 使用 Maps JavaScript API 的開發者,相關文件至今仍示範前端嵌入方式
間接波及者
- GCP 服務商與受管服務提供商 (MSP) :需協助客戶稽核並修補金鑰配置
- 使用 Google Cloud 金鑰管理的 SaaS 供應商:若客戶的 GCP 專案啟用了 Gemini,其金鑰風險等級已悄然提升
- 企業資安合規部門:需重新評估組織內 Google 憑證的分類標準與存取控制政策
成本轉嫁效應
攻擊者可利用外洩金鑰呼叫 Gemini API,產生的 LLM 推理費用直接計入金鑰所有者的 GCP 帳單。若未設定配額上限,受害者可能在短時間內累積大量費用。Google 的帳單申訴流程可處理部分情況,但審核結果因案而異,並非保證退款,最終費用風險仍由終端開發者承擔。
時程與展望
Truffle Security 向 Google 提交漏洞報告
Google 將問題重新分類為已知錯誤 (bug)
Google 正式將其分類為「單服務特權提升」
Google 更新 Gemini API 疑難排解文件,說明金鑰封鎖機制與帳單申訴流程
Truffle Security 公開發布研究報告
BleepingComputer 等媒體跟進報導,事件進入主流視野
現有已外洩金鑰遭主動封鎖;開發者社群展開大規模金鑰稽核;Firebase 與 Maps 官方文件是否更新值得持續觀察
Google 可能修訂跨服務金鑰繼承的設計,要求新服務啟用時需明確授權而非自動繼承;第三方金鑰掃描工具更新偵測規則
GCP 金鑰管理機制可能走向更細粒度的 OAuth scope 模型,逐步取代全域 API 金鑰的設計模式
唱反調
Google 金鑰的設計原本就是用於低風險服務,舊有文件並非錯誤而是設計邊界的歷史遺留;真正的責任在於未在新服務上線時同步更新安全指引,而非整個金鑰架構的系統性失敗。
2,863 個受影響金鑰佔整體 GCP 用戶比例極小,且 Google 已主動封鎖已知外洩金鑰,媒體報導的緊迫程度可能造成不必要的恐慌,讓原本不需重構的小型靜態網站浪費工時。
社群風向
是的,但每位管理員都必須使用他們的產品 (Cloud Functions) ,設定 IAM,並對每個專案重複執行這些步驟。這顯然只是個權宜之計。
我很想知道你以為把信用卡綁定進去是要幹嘛的。
也許是有經驗的資安審查人員都被裁員了。
這只是公用事業模式而已,沒什麼特別惡意的。想想你的電力公司、水務公司等等。你用多少就付多少。如果有人來接上你戶外的水龍頭偷水,或把延長線插進你外牆插座偷電,你還是得付錢——除非你能抓到竊賊讓他賠償。
Google API 金鑰過去不被視為「機密」,所以它們散落在整個網路上——但現在它們成了 Gemini 的一扇敞開的大門。Truffle Security 研究的快速摘要:近 3,000 個網站受影響⋯⋯包括 Google 自己 😅
炒作指數
行動建議
登入 Google AI Studio,檢視現有 API 金鑰的狀態面板,確認是否出現外洩警告通知,並對每個金鑰設定 API 範圍限制(僅允許必要的服務)與應用程式限制(綁定來源 IP 或 HTTP referrer)。
在 CI/CD 管線中整合 TruffleHog,掃描所有 `AIza` 前綴字串(Google API 金鑰的常見前綴),偵測到金鑰時自動阻擋 PR 合併,定期稽核 GCP Console 的 Credentials 頁面。
追蹤 Firebase 安全文件的更新,觀察 Google 是否正式撤回「API 金鑰非機密」的官方聲明,以及是否在金鑰啟用新服務時引入顯式確認機制。