~/ / AI 文章 / 公開 MCP 設定檔中的 2,117 組有效密鑰:GitGuardian 的發現,以及如何檢查你的設定檔
公開 MCP 設定檔中的 2,117 組有效密鑰:GitGuardian 的發現,以及如何檢查你的設定檔
告訴 AI 應用程式要執行哪些 MCP 伺服器的設定檔,往往需要用到金鑰。GitGuardian 的《State of Secrets Sprawl 2026》報告統計了公開 GitHub 上 MCP 相關設定檔中的 24,008 組不重複密鑰,其中 2,117 組是有效憑證。本文整理這份報告,說明 Claude Code 文件對專案設定檔的說明,並讓你檢查自己的檔案。
發布: · 已於 2026-10-24 對照官方資料確認。本文為其整理摘要,並非取代官方資料。
報告的發現
- GitGuardian 於 2026 年 3 月 17 日發布《State of Secrets Sprawl 2026》報告,資料涵蓋 2025 年。
- 報告統計到公開 GitHub 上 MCP 相關設定檔中暴露了 24,008 組不重複密鑰,其中包含 2,117 組不重複的有效憑證。
- 光是 2025 年,公開 GitHub 的提交中就新增了 28.65 百萬組寫死(hardcoded)的新密鑰,報告稱這比前一年增加了 34%。
- AI 服務相關的密鑰達到 1,275,105 組,比前一年增加 81%。
- 報告指出,這個問題往往是文件本身所助長的,因為文件鼓勵不安全的做法:把 API 金鑰直接寫進設定檔、命令列引數或內嵌的連線字串。
為什麼專案的 MCP 檔案容易外洩
Claude Code 把專案範圍的 MCP 伺服器存放在專案根目錄的 .mcp.json 檔案中,其文件將該檔案描述為透過版本控制共用。寫進去的金鑰,所有能讀取該儲存庫的人都看得到。
| 範圍 | 儲存位置 | 誰看得到 |
|---|---|---|
| 本機(Local) | ~/.claude.json,位於該專案路徑之下 | 目前的專案,僅限你本人 |
| 專案(Project) | 專案根目錄的 .mcp.json | 目前的專案,透過版本控制共用 |
| 使用者(User) | ~/.claude.json | 你的所有專案 |
不要把金鑰寫進檔案裡
- Claude Code 會展開 command、args、env、url 與 headers 中的 ${VAR} 與 ${VAR:-default},所以檔案中可以寫變數名稱,而不必存放實際的值。文件中的範例把標頭寫成 Authorization: Bearer ${API_KEY}。
- 如果變數未設定且沒有預設值,設定仍會載入。Claude Code 會顯示警告,並直接使用 ${VAR} 這段原文。
- 在遠端伺服器的 url 與 headers 中,部分憑證類變數即使已設定,讀到的也是空值。文件舉出 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、AWS_BEARER_TOKEN_BEDROCK、HTTPS_PROXY 與 NPM_TOKEN 為例,並說明名為 API_KEY 的變數會依原文展開。
- 寫在 args 或 url 中的值同樣會存進檔案,因此報告對命令列引數與內嵌連線字串的警告,在此也適用。
檢查你的檔案
下方的檢查工具會在你的瀏覽器中讀取 .mcp.json 或 claude_desktop_config.json。它使用與 Prompt Redactor 相同的偵測規則,標出寫在 args、env 與 headers 中看起來像密鑰的值,以及 Claude Code 會讀成空值的變數參照。偵測只是啟發式的判斷,因此可能漏掉密鑰,也可能把無害的值標出來。
立即試用: MCP Config Checker
規則已於 2026-10-23 對照文件核對。
文件: Claude Code / Model Context Protocol / VS Code
未檢查:command 是否存在、套件是否能安裝、遠端伺服器是否有回應,以及其他應用程式讀取方式不同的設定。
所有處理都在你的瀏覽器中執行,設定不會被上傳。
把設定貼進 AI 對話之前
人們常把設定檔貼進 AI 對話,詢問伺服器為什麼無法啟動。Prompt Redactor 會遮蔽文字中的 API 金鑰、權杖、密碼與個人資料,並能在回答中還原,這一切都在你的瀏覽器中完成。
立即試用: Prompt Redactor
遮蔽後的文字
遮蔽後的文字會顯示在這裡。
本工具找的是具有可辨識格式的文字。它無法找出用一般句子寫成的機密資訊,所以沒有找到不代表安全。
送出之前,請先讀過遮蔽後的文字。
金鑰格式已於 2026-10-23 對照廠商文件與 RFC 確認。
所有處理都在你的瀏覽器中執行。你的文字與還原對照表都不會被上傳。
如果密鑰已經被提交
- GitHub 的文件指出,第一步是撤銷或輪替該密鑰,使其無法再用來存取。
- 輪替之後,未必需要改寫儲存庫的歷史記錄,因為撤銷密鑰可能就足以解決問題。
- 如果該提交存在於 fork 中,它在那裡仍可被存取。GitHub 無法提供 fork 擁有者的聯絡資料給你。
- 提交可能仍可透過其 SHA-1 雜湊值,在 GitHub 的快取檢視中被存取。對於輪替憑證也無法降低風險的敏感資料,GitHub Support 可以移除快取檢視與參照。