AI產品

Claude Code 的 settings.local.json 正把金鑰送進公開儲存庫

出問題的地方在專案資料夾裡的一個設定檔,它跟著程式碼一起被 commit 出去。刪掉那個 commit 不夠,金鑰得換。

陳柏宇陳柏宇
熱度:1,210
深色格線背景上的一個終端機視窗,裡面有被遮蔽的憑證色塊

Dek: 出問題的地方在專案資料夾裡的一個設定檔,它跟著程式碼一起被 commit 出去。刪掉那個 commit 不夠,金鑰得換。

Claude Code secrets leak 是怎麼被發現的

11 月 9 日,Ars Technica 報導數千組憑證躺在公開的 GitHub 儲存庫裡,來源是 Claude Code 的專案設定檔。同一天,Cybernews 用 AI 代理在 GitHub 上洩漏秘密的角度寫了同一件事,GitGuardian 的分析則把範圍收窄到一個檔名:settings.local.json,並點名 Docker Hub 的憑證是外流的類型之一。

三家講的是同一批檔案。這種事通常不會有受害者名單,因為沒有人被攻擊,檔案是自己被推上去的。

Claude Code settings.local.json 為什麼會進到 commit 裡

這個檔案的位置很關鍵。它住在專案資料夾裡,跟程式碼放在一起,裡面裝的是這個專案的工作設定:允許哪些指令、需要哪些環境變數、接了哪些 MCP 伺服器。它之所以叫 local,是因為本來只該留在本機。

問題出在習慣。開發者每天收工前打一次 git add -A,這個指令的意思是「把所有變動都加進來」,它不會問你哪個檔案不該進。第一次沒有寫進 .gitignore,之後每一次提交都會帶著它。

反過來說,這件事也很容易發生在趕時間的時候。新專案第一天,大家想的是先把東西跑起來,忽略清單通常是第三天補的,而第三天之前已經 push 過三次了。

AI agent secret leak 為什麼比一般金鑰外洩更麻煩

一般的金鑰外洩,通常是一個服務、一組憑證。這次的形狀不一樣:一個設定檔裡可能同時有模型 API key、雲端儲存權限、套件倉庫的登入資訊,還有通知服務的 webhook。一份檔案被打開,等於一整排門的鑰匙一起掉在路上。

第二個差別是檔案長得很像範例。settings.local.json 這種名字不會讓人警覺,它看起來像設定,不像機密。掃描工具也不一定抓得到,因為裡面的值沒有固定的前綴格式。

第三個差別在流通速度。公開儲存庫會被爬蟲與研究人員定期掃描,從 push 到被索引可能只有幾分鐘。台灣有團隊把 side project 放在個人帳號底下,公開了半年才想起來要整理,這段時間足夠讓裡面的東西被抄走。

Claude Code GitHub security:從三個地方開始查

第一個地方是檔名。在你的所有儲存庫裡搜 settings.local.json,包含個人帳號底下的專案,也包含公司組織裡的舊專案。很多人只查最近在寫的那一個,但外洩通常發生在已經沒在維護的那幾個。

第二個地方是忽略清單。打開 .gitignore,確認裡面有這個檔名,也補上 .env 與金鑰檔的規則,這一步防的是下一次,對已經發生的事沒有幫助。

順帶一提,團隊層級要做的是把它寫進範本。每個新專案從同一個 starter 開始,忽略清單就已經在裡面,這比事後要求每個人記得可靠。

第三個地方是提交歷史。用 git log 找這個檔案的紀錄,看它被加進來幾次、有沒有被刪掉又加回來。刪掉又加回來是最常見的情況,因為有人以為刪了就好。

處置順序:先換金鑰,再談歷史

順序不能反。金鑰一旦進了公開儲存庫,就當作已經外流。改寫歷史、force push、把儲存庫設成私有,這些動作都只影響之後的訪客,不影響已經抓走的那一份。

實務上的順序是這樣:先到每個服務的後台撤銷舊憑證、發出新的,再把新值放進本機的環境變數或密鑰管理服務,最後才處理 git 歷史。歷史要不要清,取決於儲存庫是不是公開、有沒有對外公告過。

還有一個常被跳過的步驟:查帳單與存取紀錄。金鑰被拿走之後,最容易被用來跑的是模型 API 與雲端算力,那些花費不會立刻出現,通常要等到下一期帳單。香港有團隊遇過類似情況,發現時帳單已經多了一截,而原因只是某個早已廢棄的專案。

這次事件沒有證明的事

第一,Claude Code 本身沒有被入侵。這是使用者自己提交的設定檔,不是產品漏洞,兩者的應對方式完全不同。

第二,報導說的是數千組,沒有更精確的數字,任何比這個更具體的說法目前都沒有依據。

第三,不是每一組外流的憑證都還有效。有些可能早就過期,有些可能只是測試用的字串。這也是為什麼清查要從服務後台做,而不是從檔案內容猜。

第四,Anthropic 有沒有打算預設忽略這個檔名,目前沒有公開說法。AI 代理的工具鏈還在長,這一類預設值該由誰負責,會是接下來幾個月的問題。

在那之前,能做的就是把搜尋做完、把金鑰換掉、把忽略規則補上。三件事加起來大概一個下午,比事後對客戶解釋便宜太多。要不要現在就動?如果你的組織裡有人這半年碰過 Claude Code,答案是要。

分享這則新聞

來源

相關 AI 新聞

深藍背景上疊著一疊病歷卡,上面有青色醫療十字
AI產品

Google Cloud 把 Gemini for healthcare 放進醫院行政流程,先從事前授權開始

這套東西賣的是行政流程,不是診斷。醫院省下的是查資料與填表格的時間,病人要面對的是病歷被拆開來看的方式。

熱度:1,290
深色背景上疊著四塊暖陶色的線條面板
AI產品

Claude Meetings 上線:Claude 現在會開會、畫白板、寫試算表

會議還沒結束,Claude 已經把計畫與待辦放進你的工作區。Anthropic 這次把會議、白板、試算表與資料看板一起補齊,但四項產品的上線狀態不一致,這才是要先弄清楚的地方。

熱度:1,620
珊瑚色與紫色漸層上,一整排圓角卡片中有一塊展開的面板
AI產品

Meta Spaces 上線:Muse 代理開始替你的專案保留狀態

Meta 的助理不再只回你一句話,而是替一個專案留下一塊可以回頭看的地方。這比較像換工作習慣,不像多一顆按鈕。

熱度:1,320
抽象帳本格線與上升的支出曲線
AI產品

Claude Personal Finance 上線:讀得到帳單,動不了錢

Anthropic 讓 Claude 直接讀你的銀行與信用卡帳戶,回答「這個月錢花去哪」。功能是唯讀的,代價是把最多兩年的交易紀錄交給一個模型。

熱度:1,520