
SEBASTIEN BOZON/AFP via Getty Images
成千上万的开发者在不知情的情况下,将他们最敏感的凭证共享给了整个互联网,而罪魁祸首是 Anthropic 旗下热门 AI 编码工具 Claude Code 中隐藏的一个行为。
安全研究人员已将问题追溯至 Claude Code 的一项特定功能,目前已暴露的数据规模相当庞大。
Claude Code 意外在 GitHub 上泄露秘密
Apiiro 的安全研究人员在公开的 GitHub 仓库中发现了数千个泄露的敏感凭证,这些泄露直接指向由 Anthropic 的 Claude Code 创建的配置文件。问题的核心文件是 .claude/settings.local.json,这是一个本地设置文件,Claude Code 用它来存储开发者已批准的工具可运行 shell 命令列表,从而无需每次运行时都请求权限。
Apiiro 发现在公开的 GitHub 仓库中存在超过 104,000 份此设置文件的副本。其中,1,122 份包含真实且有效的秘密信息。通过检查 Git 历史记录和其他相关文件,研究人员确定了分布在近 2,000 个仓库中的 2,539 个不同凭证。受影响的凭证包括数据库密码、云服务 API 令牌、私有 SSH 凭证以及云基础设施访问密钥。部分泄露的仓库归属于公司,包括软件开发人员和服务提供商。
此次泄露的规模不容小觑。即使是那些已被 GitHub 自身搜索功能和第三方秘密扫描服务抓取并索引的文件,也仅代表了可访问的表面数据。嵌入在 Git 历史记录中的凭证,即使在从主分支删除文件后仍然保留,任何知道如何查找的人都可以检索到它们。
Claude 泄露密码、API 密钥等更多信息
泄露背后的具体机制归结于 Claude Code 如何处理其“是的,不再询问”功能。当开发者使用该选项批准一个 shell 命令时,Claude Code 会将该命令的完整文本写入 .claude/settings.local.json 文件,以便下次运行相同命令时无需再次请求批准。如果该 shell 命令在其语法中包含密码、API 令牌或其他任何凭证,该凭证将以明文形式直接写入设置文件中。
Claude Code 旨在防止此文件被上传到公共仓库。当初始化新项目时,该工具会将设置文件添加到用户的全局 Git 忽略列表中,这向 Git 发出信号,表明不应跟踪或提交该文件。问题在于这种保护并非无懈可击。如果开发者将项目克隆到另一台机器上,或者在 Claude Code 已经创建设置文件后将现有文件夹转换为 Git 仓库,忽略规则可能不会随之生效。
在某些情况下,Apiiro 发现 Claude Code 本身已将对设置文件的更改提交到了仓库中。
结果导致成千上万认为其凭证安全保存在本地的开发者,无意中将其发布到了全球网络上。许多开发者可能根本不知道发生了这种情况。
Anthropic 解释造成此问题的原因
Anthropic 的 Claude Code 负责人 Boris Cherny 确认,公司已知晓此问题,并正在评估变更方案以防止其再次发生。Cherny 告诉 Apiiro,团队正在考虑两个主要选项:添加内置的秘密扫描功能,以便在凭证写入设置文件之前将其捕获;以及重新设计工具处理命令权限的方式,以避免将敏感命令字符串存储在可能被提交的文件中。
与此同时,Cherny 建议开发者使用第三方安全扫描器,并验证其本地设置文件是否未被意外添加到任何仓库中。
挑战在于,现有的自动化工具并未捕捉到所有问题。Apiiro 发现,两款广泛使用的秘密扫描工具 Gitleaks 和 TruffleHog 未能标记研究人员确认包含有效秘密信息的 1,122 个文件中的 215 个。这些工具在处理嵌入较长 shell 命令字符串中的密码时尤其吃力,因为如果不解释更广泛的命令上下文,这些凭证很难被立即识别为秘密信息。
截至报道日期,Anthropic 尚未发布解决该行为的正式补丁或新版 Claude Code。该公司表示,随着审查工作的推进,将分享更多细节。
常见问题解答
什么是 Claude Code?
Claude Code 是 Anthropic 推出的基于 AI 的智能体编码工具,旨在帮助开发者在其开发环境中直接编写、调试、重构和管理代码。它以命令行界面的形式提供,并可与 VS Code 和 JetBrains IDEs 等编辑器集成。与标准的 AI 代码补全工具不同,Claude Code 旨在自主采取行动,运行 shell 命令、编辑文件、搜索代码库以及管理多步开发任务,而无需开发者手动执行每个步骤。
当开发者批准工具运行某个 shell 命令时,他们可以选择仅批准一次或永久批准,而永久批准正是创建此问题核心设置文件的原因。Claude Code 可通过 Claude Pro、Max、Team 和 API 订阅层级访问。
什么是 GitHub?
GitHub 是一个基于网络的版本控制和协作软件开发平台,隶属于微软。它使用 Git(一种开源版本控制系统),允许开发者随时间跟踪代码更改、与他人协作共享代码库,并维护项目中每一次更改的完整历史记录。GitHub 上的公共仓库对互联网上的任何人可见,这使得意外上传包含秘密信息的文件变得尤为严重。
当包含密码或 API 密钥的文件被提交到公共 GitHub 仓库时,任何访问该仓库、搜索 GitHub 或运行旨在扫描公开仓库以发现暴露凭证的自动化工具的人都可以获取该凭证。GitHub 确实运营着自己的秘密扫描服务,并在检测到常见凭证模式时向开发者发出警报,但该系统并未捕捉到 Apiiro 识别出的所有文件。
这是一个新的安全问题吗?
导致此次泄露的具体行为——将包含嵌入凭证的已批准 shell 命令写入本地设置文件——并不是一个新引入的错误,而是“是的,不再询问”功能从一开始设计的工作方式所带来的后果。直到 Apiiro 的研究在 2026 年 11 月揭露此事之前,这一问题并未广为人知。
然而,值得注意的是,这并非 Claude Code 近期唯一的安全事件。2026 年 10 月的单独报告记录了一个被篡改的用于 Cursor 编辑器的 Claude Code 扩展程序,它在开发者的系统中植入了 SSH 后门,以及 claude.ai 上的虚假 Claude 下载页面被用来窃取密码和加密货币。设置文件泄露是与这些事件截然不同且无关的问题,但其发生的时间点加剧了人们对 AI 编码工具更广泛的安全审查。
Anthropic 是否已开发出针对此安全问题的修复方案?
截至 2026 年 11 月 9 日的报道,Anthropic 尚未发布修复方案。Boris Cherny 确认,公司正在评估两种潜在方法:实施内置秘密扫描以在凭证写入设置文件之前检测并剔除它们,以及重新设计命令权限的存储方式,以完全避免持久化敏感字符串。
对于目前使用 Claude Code 的开发者,建议立即采取的步骤是检查 .claude/settings.local.json 文件是否已提交到任何公共仓库,从这些仓库及其 Git 历史记录中删除该文件,并立即轮换任何可能包含在已批准 shell 命令中的密码、API 密钥或令牌。仅从仓库的主分支删除该文件是不够的,因为凭证可能在仓库的 Git 历史记录以及在删除文件之前创建的任何分叉中仍然可见。
- 收藏
- 点赞