Claude Code 在 1,122 个公开 GitHub 文件中泄露密码和密钥

开发者在 Claude Code 中批准执行的命令里输入的密码和 API 密钥,如今出现在公开的 GitHub 仓库中,任何人都可以读取。这是安全公司 Apiiro 的研究结论,该研究于 2026 年 11 月 5 日发布,并被 The Hacker News 报道。

问题出在 “Yes, and don't ask again”(“是,且不再询问”)模式上。使用该选项批准命令后,Anthropic 的编程助手会把许可规则保存到项目文件 .claude/settings.local.json 中——而当规则针对的是一条具体命令时,整条命令会被逐字保存,包括其中输入的任何密码或令牌,且均为明文。

Apiiro 发现了什么

研究人员扫描了公开 GitHub,在 103,617 个仓库中发现了该文件的 104,185 个副本。其中 1,122 个副本(约 1.1%)至少含有一个密钥,仅本地文件的当前版本就合计有 1,379 个不同密钥。再加上 Git 历史记录、共享文件 .claude/settings.json 和已保存的智能体对话记录,总数达到 1,994 个仓库中的 2,539 个密钥,涉及 63 个组织。

  • 379 个数据库密码——超过三分之一的密钥可直接访问数据库;
  • 43 个公开服务器的 SSH 登录凭证;
  • 42 个 GitHub、GitLab 和 npm 令牌;
  • 23 个 AWS 密钥;
  • 据研究人员称,最严重的案例包括某数据库厂商的管理级云密钥,以及一个医疗记录数据库的所有者密码。

从项目中删除该文件并不能消除泄露:旧版本仍保留在 Git 历史和分支(fork)中。研究人员还在 509 个仓库的旧版本中发现了另外 734 个密钥,74 个仓库的 211 个分支携带着相同的密钥。在发布当周的星期一,所有含有密钥的文件仍位于各自仓库的主分支上——其中一半已存在至少 217 天。

扫描工具为何漏掉了这么多

研究人员用密钥扫描工具 gitleaks 和 TruffleHog 检测了这 1,122 个含密钥的副本:gitleaks 标记了 564 个,TruffleHog 标记了 643 个,而 215 个两者均未标记。大多数漏检是直接输入在命令中的密码,它们不符合已知的密钥格式,看起来只是命令行中的普通单词。

问题的核心是一个设计细节:Claude Code 在创建该文件时会将其加入用户的全局 Git 排除列表,但从不将其加入项目自身的 .gitignore——因此保护措施不会随代码一起传播。在追踪的 1,105 个仓库中,有 539 个仓库里一次将 Claude 列为共同作者的提交修改过该文件,这表明智能体本身经常提交该文件。

现在该怎么做

研究人员的建议是:先轮换凭证,再做清理:

  1. 在您的 GitHub 组织中搜索 .claude/settings.local.json 和 .claude/settings.json,并检查每个仓库的 Git 历史,即使文件已被删除;
  2. 先轮换:在清理之前,更换这些文件曾经包含的所有密码、令牌和密钥;
  3. 用 git rm --cached .claude/settings.local.json 将本地文件移出版本控制,并将其加入仓库自身的 .gitignore;
  4. 打开您自己电脑上的该文件,删除其中任何包含密钥的规则,即使它从未被推送到 GitHub;
  5. 切勿把密钥放进命令中:应通过密钥管理器以变量方式引用,例如 $DB_URL,使保存的规则只保留变量名而非密钥本身;
  6. 批准模式(如 Bash(npm run:*)),而不是单条命令。

一个早已被提出、却无人回应的警告

Claude Code 用户此前已报告过这一行为:2025 年 8 月 11 日提交的一份缺陷报告称,包含 API 密钥和令牌的已批准命令会被逐字存储在 settings.local.json 中。一个自动化机器人在 60 天无活动后,于 1 月 3 日以“不计划处理”为由关闭了该报告。据研究人员称,研究中引用的四份相关报告均被同一机器人关闭——最新的一份就在发布前一天——且均未收到 Anthropic 的回复。

有必要明确说明研究结论的边界:Apiiro 并未测试所发现的凭证是否仍然有效——研究中的“真实密钥”是指符合已知格式或经核实的上下文、并得到 AI 审核员认可的值。一家收到通知的公司确认,其密钥在发现时处于有效状态。在研究人员对比文档的 16 个编程智能体中,Claude Code 是唯一被确认默认将完整批准命令保存在项目文件中的产品。

Geekiki 此前已报道过另一起涉及 Claude Code 的安全事件:Claude 用小说和养蜂绕过了 Anthropic 的安全监控。

来源

图片来源:The Hacker News。

透明度说明:本文在人工智能的协助下制作,交叉核对了包括 Apiiro 原始研究和 The Hacker News 报道在内的公开网络信息来源。事实已根据所引用的来源核实;请查阅原始来源以确认细节。

Muse