#人工智能 开发者请注意:Claude Code 授权机制存在缺陷,你提供的敏感凭据会以明文形式写到配置文件里。当你点击 Claude Code 弹出的不要再次询问授权按钮时,Claude Code 会将命令规则保存到 settings.local.json 配置文件里。如果你同时也提供了敏感凭证,那凭证也会被明文保存到配置文件,后续如果推送到 GitHub 公开仓库则凭证泄露。安全公司已经检测到不少仓库因这个问题泄露敏感凭证,Claude Code 团队则表示目前正在研究清理保存规则中包含凭证的可行方案。查看全文:https://ourl.co/128135
A 社此前在 Claude Code 中添加不要再次询问功能,该功能可以保存部分命令的长期授权规则,而这个规则又可能将命令中的数据库密码、API 密钥和其他敏感信息写入到项目配置文件中。如果这个文件被提交到公开的代码仓库,则这些敏感凭证可能会被泄露。
基于这个问题安全公司 APIIRO 扫描 103617 个公开仓库,这些仓库里包含 104185 份.claude/settings.local.json 配置文件,其中约有 1122 份配置文件至少包含 1 项敏感凭证,合计扫描到敏感凭证为 1379 份。
而在扩大检查范围、检查 Git 历史记录、共享设置文件和保存在仓库中的智能体会话记录后,研究人员发现 1994 个仓库涉及 2539 个不同的凭证,这些凭证中大部分都是有效的,也就是开发者并未注意到凭证已经泄露。
比较典型的凭证类型包括:
- 379 个数据库连接密码
- 122 个 Supabase service-role 密钥
- 43 组可连接公网服务器的 SSH 登录信息
- 42 个 GitHub、GitLab、npm 令牌
- 23 个亚马逊 AWS 云计算服务凭证
Claude Code 执行某些终端命令前会请求用户授权,为减少重复确认用户可以选择授权且不要再次询问,即允许执行当前命令并在以后遇到相应的操作时不再请求用户手动授权。
选择这个选项后 Claude Code 会将授权规则保存到项目目录中的 json 配置文件里,在部分情况下保存的规则会包含完整命令。如果命令直接写入了数据库密码、API 凭证或其他敏感字符串,这些内容也会以明文形式保留在配置文件里。
例如开发者让 Claude Code 连接数据库或调用接口时,命令可能包含认证信息。用户确认长期授权后,注意力往往放在命令执行结果上,而密码已经作为授权规则的一部分保存在项目目录里。接下来如果这个配置文件被提交并推送到公开仓库,任何访问仓库的人都可能读取其中的凭证。
Claude Code 产品负责人正在研究怎么清理凭证:
Claude Code 产品负责人鲍里斯·切尔尼回应称,此前 Claude Code 确实没有专门清除这类命令中的敏感信息,目前团队正在研究可以采取的预防措施,包括基础凭证扫描等方案。
不过对于现有用户而言则需要主动检查配置文件,若发现其中可能包含敏感凭证则应该立即修改,同时检查仓库尤其是 Git 历史记录有没有包含配置文件,如果确认凭证可能暴露则应该立即轮换。
网上有大量脚本专门扫描公开仓库并读取里面的各类凭证,因此已经公开到仓库的情况下应当视凭证已经泄露,除了要轮换凭证外,还需要检查凭证是否有异常连接记录。
