内容提要
Claude Code的“不再询问”授权功能会将含数据库密码、API密钥等敏感信息的命令规则明文写入settings.local.json。安全公司扫描超10万个公开仓库,发现1994个仓库泄露2539个凭证,多数仍有效。团队正研究凭证扫描等预防措施,用户应立即检查配置文件及Git历史,发现泄露后轮换凭证。
延伸解读
授权便利背后的明文存储风险
Claude Code 的“不再询问”功能会将完整命令规则保存到 settings.local.json,若命令中包含数据库密码或 API 密钥,这些敏感信息也会以明文形式留在项目目录中。开发者往往只关注命令执行结果,而忽略了配置文件本身可能成为泄露源。这种设计在提升效率的同时,将凭证暴露面从终端扩展到了文件系统,一旦文件被提交到公开仓库,风险便不可控。
公开仓库扫描揭示的泄露规模
安全公司 APIIRO 扫描超过 10 万个公开仓库,在约 1122 份配置文件中发现至少 1 项敏感凭证,合计 1379 份;扩大检查 Git 历史与共享设置后,涉及 1994 个仓库、2539 个凭证,且大部分仍然有效。这说明许多开发者并未意识到凭证已随配置文件泄露,而公开仓库中的自动化扫描脚本会持续利用这类暴露。
泄露后应视为已失守并立即轮换
文章指出,凭证一旦进入公开仓库,就应视为已经泄露,因为网上有大量脚本专门扫描公开仓库并读取凭证。用户应立即检查 settings.local.json 及 Git 历史记录,确认是否包含敏感信息;若发现泄露,除轮换凭证外,还需检查凭证是否有异常连接记录。Claude Code 团队虽在研究凭证扫描等预防措施,但现有用户不能等待修复,主动排查和轮换是当前必要的应对。
Q&A
Claude Code 的“不再询问”授权功能有什么安全隐患?
该功能会将命令规则以明文形式保存到项目目录的 settings.local.json 配置文件中。如果命令中包含数据库密码、API 密钥等敏感信息,这些凭证也会被明文写入配置文件,一旦配置文件被推送到公开仓库,就会导致凭证泄露。
APIIRO 扫描发现了多少凭证泄露?
APIIRO 扫描了 103617 个公开仓库,发现 1122 份配置文件包含至少 1 项敏感凭证,合计 1379 份凭证。扩大检查范围后,发现 1994 个仓库涉及 2539 个不同的凭证,其中大部分仍然有效。
哪些类型的敏感凭证容易被泄露?
典型凭证包括:379 个数据库连接密码、122 个 Supabase service-role 密钥、43 组 SSH 登录信息、42 个 GitHub/GitLab/npm 令牌、23 个 AWS 云计算服务凭证。
Claude Code 团队如何回应这个缺陷?
产品负责人鲍里斯·切尔尼回应称,此前没有专门清除这类命令中的敏感信息,目前团队正在研究预防措施,包括基础凭证扫描等方案。
用户应该采取哪些紧急措施来保护凭证?
立即检查 settings.local.json 配置文件是否包含敏感凭证;检查 Git 历史记录中是否提交过该文件;如果确认凭证可能暴露,应立即轮换凭证,并检查凭证是否有异常连接记录。
为什么即使删除了配置文件,凭证仍可能泄露?
因为 Git 历史记录会保留文件的所有历史版本,即使删除了当前文件,之前的提交记录中仍可能包含敏感凭证。因此需要检查 Git 历史记录,并视凭证已泄露进行处理。