AI Coding 安全警告:你嘅 API Key 可能已經外洩
你上次 paste 咗 API key 入 Cursor 係幾時?你記唔記得?AI 工具幫你記得。
先講個嚇人嘅數字
2026 年 GitGuardian 發布嘅 State of Secrets Sprawl 報告揭示:在公開 GitHub 倉庫嘅 MCP 配置文件入面,已發現超過 24,000 個唯一 secrets,當中逾 2,100 個係已驗證嘅有效憑證。
更令人不安嘅是另一組數據:AI 輔助生成嘅 commit,secrets 洩露率高達 3.2%——係普通 commit 基線 1.5% 嘅兩倍以上。換句話說,你用 AI 幫手寫代碼,連同帶出去嘅 secret 嘅概率,比你自己寫仲要高。
有個開發者喺 2026 年初親身示範咗後果:Google Cloud API key 被盜,一覺醒來賬單多咗 $82,000 美金。
你可能以為自己冇問題——API key 放喺 .env,冇 commit 落 git,應該安全。但問題唔係 git,係你部電腦本地嘅 AI 工具。
AI IDE 點樣「吞掉」你嘅 Secrets
工具知道嘅比你以為多
Cursor、Claude Code、GitHub Copilot、Windsurf——呢類 AI coding assistant 為咗提供上下文,會主動讀取你嘅開發環境。包括但不限於:
.env文件同所有 environment variables- YAML / TOML / JSON 配置文件
- MCP 配置文件(
~/.config/mcp/...等) - 你主動 paste 入 chat 嘅任何內容
問題係:呢啲工具讀完之後,唔係「睇完就算」——佢哋會將呢啲內容持久化到本地嘅對話歷史文件,通常係未加密嘅 SQLite 資料庫或純文字文件,放喺你系統某個角落。
Chat History 係個潛在的 Secrets Dump
每次你向 AI 問:「點解我嘅 API call 報 403?」然後 paste 一段包含 authorization header 嘅代碼——你嘅 API key 就永久儲存落 chat history 入面。
每次 AI agent 讀取你嘅 .env 作為上下文——裡面所有 tokens、passwords、private keys 都會嵌入呢個 session 嘅 transcript。
標準嘅 secret scanner(例如 gitleaks、detect-secrets)只掃 git repo。佢哋完全唔掃 AI 工具嘅 transcript store。你嘅 .gitignore 保護你嘅 git history,但對 AI chat history 毫無效果。
三個工具,三個藏 Secrets 嘅地方
| 工具 | 對話歷史位置 |
|---|---|
| Cursor / VS Code | ~/.cursor/workspaceStorage/*/chat.vscdb (SQLite) |
| Claude Code | ~/.claude/projects/*/ JSONL 文件 |
| OpenAI Codex CLI | ~/.codex/ 本地 session files |
呢啲文件通常不在任何 backup 排除清單,可能被 Time Machine、雲端同步甚至第三方備份服務上傳。
真實風險升級:不只是自己不小心
Prompt Injection 讓攻擊者「借用」你嘅 AI
AI coding agent 面對嘅另一個威脅係 prompt injection。惡意代碼、被污染嘅 npm 包、或者含有隱藏指令嘅 README 文件,都可以向 AI 工具下達指令。因為 AI 分唔清楚「用戶嘅指令」同「外部內容入面嵌入嘅指令」,攻擊者可以誘導 AI 將你嘅 credentials 外洩。
Endor Labs 研究人員指出:AI coding agent 有時候直接存取 secrets 同執行環境,一次成功嘅 prompt injection 就係直接嘅 credential theft 通道。
MCP 擴大嘅攻面
MCP(Model Context Protocol)係 AI agent 讀取外部工具嘅新標準。問題係,MCP 配置文件通常直接包含 API keys,而唔少開發者會將呢類配置推上公開嘅 GitHub repo。GitGuardian 報告就係喺呢類文件入面發現上萬個洩露 secrets。
一個 40 分鐘的教訓
2026 年 5 月,有開發者分享自己嘅經歷:佢喺 AI 輔助開發過程中,AWS credentials 被 agent 讀取後通過某個工具鏈外洩,40 分鐘內就有攻擊者嘗試存取佢嘅 AWS 賬戶。發現到修復,整個過程係一場心理壓力測試。
Sieve:第一個針對 AI 工具 Chat History 的掃描器
填補盲點
Sieve 係一個 macOS app,專門做一件事:掃描 AI coding assistant 嘅本地 chat history,搵出裡面嵌入嘅 secrets。
支援嘅工具包括 Claude Code、Cursor、VS Code Copilot、Windsurf、Codex 等主流 AI IDE。
運作原理
- 首次啟動時,授予 app 讀取各工具對話歷史資料夾嘅權限
- Sieve 掃描 SQLite 資料庫同 JSONL 文件,識別 API keys、tokens、passwords、private keys 等格式
- 所有掃描純本地進行——無網絡請求、無雲端同步、無帳號、無遙測
- 發現嘅 secrets 儲存到本地 SQLite,敏感值只存入 macOS Keychain,唔係明文資料庫
- 可直接從 VS Code 嘅
.vscdb文件中**原地 redact(刪除)**已洩露嘅 secrets,操作前自動建立 timestamped backup
更值得一提嘅是:Sieve 本身亦提供一個本地 MCP server,讓 Claude Code 等工具可以查詢 findings、執行 vault 注入——但整個過程 AI 工具唔會見到 secrets 嘅原始值。
Sieve 嘅 core 係 open source(SieveCore),可以自己審計佢點運作。
實用防禦 Checklist
即時行動(今天就做)
- 下載 Sieve 掃描你嘅 AI 工具 chat history
- Rotate 所有你記得曾經 paste 入 AI chat 嘅 API keys
- 喺你嘅 secrets provider(AWS、GCP、Anthropic、OpenAI 等)開啟 usage alerts,設定消費閾值通知
- 檢查你嘅 MCP 配置文件係咪包含 hardcoded keys,有就移到環境變量
開發習慣調整
- 唔好 paste raw secrets 入 AI chat——改問「點解我嘅 Bearer token request 返 403」而唔係 paste 整個 auth header
- 向 AI 描述問題時,用佔位符代替真實值:
YOUR_API_KEY、***REDACTED*** - 確保
.env、*.pem、*_rsa等敏感文件喺 AI 工具嘅 ignore 設定入面(Cursor 有.cursorignore,效果類似.gitignore) - 定期清理 AI 工具嘅 chat history(唔需要保留幾個月前嘅對話)
架構層面最佳實踐
- 採用 secrets manager(HashiCorp Vault、AWS Secrets Manager、Doppler)代替
.env文件——讓 AI 工具根本接觸唔到原始值 - 為不同用途生成 最小權限嘅獨立 API key,唔好用「萬能 key」
- 開啟 GitHub secret scanning 同 push protection,防止 secrets 意外進入 git repo
- 考慮 CI/CD 層嘅 Cycode 或類似工具做 real-time IDE security guardrails
點解大家都冇意識到?
有個心理誤區係:「AI 工具係幫我工作嘅,唔係攻擊者,冇問題。」
但問題唔係工具本身有惡意——係工具嘅持久化機制超出咗你嘅預期。你以為係臨時嘅對話,其實係永久嘅本地記錄。你以為係開發機才有嘅文件,其實可能隨 iCloud Drive 或 Dropbox 同步到雲端。
另一個原因係工具鏈本身嘅複雜度。一個現代開發環境可能涉及:AI IDE + MCP server + git hooks + CI/CD pipeline + cloud deploy——每個環節都可能係 secrets 嘅洩露點。
現在就做的三件事
第一步(5 分鐘): 下載 Sieve,授予權限,跑一次掃描。知道自己嘅歷史 chat 入面有冇洩露過嘢。
第二步(15 分鐘): Rotate 任何喺 AI chat 入面出現過嘅 API key。唔確定有冇?寧可 rotate。大多數服務嘅 key rotation 係兩分鐘嘅事。
第三步(長期): 調整描述問題嘅方式。把 AI coding assistant 當作一個公共論壇——你唔會喺 Stack Overflow 問題入面 paste 你嘅 production API key,同樣道理適用於 AI chat。
AI coding 工具係真正嘅生產力倍增器,但唔係每個開發者都意識到佢哋改變咗 secrets 嘅 threat model。花幾分鐘審計一下,比等緊急 rotate 然後追究哪個環節出事要從容得多。
參考資料: