Generated by Answer me with HTML 0.5.10 · 2026-11-09 11:54 · ★ Star on GitHub
Claude Code「不再詢問」把密碼寫上 GitHub
Apiiro 掃 10.4 萬份設定檔,1,122 份含真實憑證
Lead: 使用者在核准提示按「不再詢問」,含秘密的整條指令就存進 .claude/settings.local.json。repo 沒有保護這個檔案,它跟著程式碼上網。
泄漏鏈
洩漏的憑證類型
資料
| 資料庫密碼 | 379 |
|---|---|
| Supabase service-role 金鑰 | 122 |
| Supabase 帳號 token | 103 |
| SSH 登入 | 43 |
| GitHub/GitLab/npm token | 42 |
| AWS 金鑰 | 23 |
| 私鑰 | 6 |
1,122 份檔案含 1,379 組不同憑證。另有 636 組供應商金鑰與 743 組公開主機密碼。
誰暴露了
| 組織 | 暴露內容 |
|---|---|
| 資料庫廠商 | 自己的雲端 API 金鑰(manage 權限、無到期日)+叢集主機 |
| B2B 新創 | 生產環境 Azure Postgres 密碼 |
| 軟體外包商 | Square 生產存取 token |
| 開源專案(超過 1,000 顆 star) | OpenAI 格式 API 金鑰 |
| 開源專案 | npm token |
| IT 服務商(醫療紀錄 app) | 雲端 Postgres 的 owner 密碼 |
| 支付新創 | postgres 角色的 Postgres 密碼 |
63 個組織受影響。白名單另有 43 組公開伺服器 SSH 憑證,含 sshpass 指令裡的 root 密碼。
掃描器漏掉的
| 工具 | 1,122 份中抓到 |
|---|---|
| gitleaks | 564 |
| TruffleHog | 643 |
| 兩者都沒抓到 | 215 |
缺口在指令裡的密碼:PGPASSWORD=、sshpass -p、mysql -p、curl 的 bearer header 都不是金鑰格式,掃描器當成普通單字放行。同樣模式也藏在對話紀錄、記憶體檔案與交接筆記。
不只一個檔案
| 檔案 | 檢查數 | 含真實憑證 |
|---|---|---|
| 共用 settings.json | 76,011 | 298 |
| agent 對話紀錄 | 2,523 | 120(87 個 repo) |
| 交接與部署筆記 | 2,095 | 33 |
| agent 記憶體檔案 | 1,200 | 9 個 repo |
| Copilot 自動核准設定 | 173 | 9 個 repo |
有秘密的交接筆記中,三分之一是 agent 自己寫的。
Hacker News 爭點
Story 50407882:595 分、404 則留言(2026-11-09 11:49 抓取)。
| 面向 | 官方與支持方 | 質疑方 |
|---|---|---|
| 安全模型 | @bcherny:permission rules 過時,auto mode 更安全 | @syllogism:只要確定性邊界,不接受機率式安全 |
| 責任歸屬 | @bcherny:該檔不該進版控,是使用者手動提交 | @doginasuit:1,122 個受害者,完全可預見 |
| 解法層級 | 使用者衛生:gitignore、密碼管理員 | @kstenerud:容器或 VM 隔離,agent 碰不到秘密 |
| auto mode | 減少核准摩擦 | @80fj0348i:過度保守,正常指令也被擋 |
怎麼修
開發者:
git rm --cached取消追蹤該檔- 輪換檔案持有過的每組憑證
- 刪掉白名單裡含秘密的規則
- 指令改用
$VAR引用秘密 - 核准模式而非字面指令
資安團隊:
- 把
.claude等資料夾當.env對待 - pre-commit 與 CI 掃描含歷史
- 掃描器要抓指令裡的密碼
- 憑證配公開主機者先輪換
Anthropic 回應
Boris Cherny(Claude Code 負責人)2026-11-07 在 HN 回應:
- 歷史上沒做秘密清除,正在研究防堵做法
- 擬原型驗證:auto mode 擋下、內建秘密掃描
- 讀者指出 auto mode 同樣會問敏感指令,他回「抓得好」
Claude Code 使用者從 2025 年 8 月起在 GitHub issue 回報同機制,四則都沒得到回應,三則被自動關閉。