安全公司 Apiiro 11 月 5 日发布研究:Claude Code 的「Yes, and don’t ask again」(是的,不再询问)功能,会把用户批准过的命令一字不差地存进项目里的 .claude/settings.local.json,连命令里带的密码和 API 密钥也一起存成明文。一旦这个文件被提交并推送到公开仓库,密钥就人人可读。研究者在 GitHub 公开仓库里扫到 104,185 份该文件,其中 1,122 份(约 1.1%)含有真实密钥,共 1,379 个不同的密钥值;算上历史版本、共享配置文件和智能体聊天记录,总数达到 2,539 个真实密钥,分布在 1,994 个仓库、63 家机构。
泄露的密钥里超过三分之一能直接打开数据库,包括 379 个数据库密码和 122 个 Supabase 服务端密钥,此外还有 43 个可公开访问服务器的 SSH 登录信息、42 个 GitHub、GitLab 与 npm 令牌和 23 个 AWS 密钥。最严重的案例包括一家数据库厂商自己的管理员级云密钥、一个生产环境 Azure PostgreSQL 密码、一个 Square 生产令牌和一家医疗记录数据库的拥有者密码。研究者没有逐一验证密钥是否仍然有效,但他们提前通知的机构中有一家确认自家密钥当时确实有效。删文件也无济于事:旧版本仍留在 git 历史和复刻仓库里,截至 11 月 3 日的快照,所有含密钥的文件仍在各自仓库的默认分支上,其中一半在仓库里已存在至少 217 天。
问题的根子在防护没有跟上文件走。Claude Code 第一次在 git 仓库里写这个文件时,只会把它加进用户本机的全局 git 忽略列表,从不写进项目自己的 .gitignore,换台电脑、克隆仓库或事后建仓都不受保护。研究者追踪的 1,105 个仓库里,539 个出现过以 Claude 为共同作者、改动了这个文件的提交——很可能是智能体自己把它提交上去的。在 16 个编码智能体的对照中,Claude Code 是唯一一个默认把完整批准命令存进项目文件的。常规扫描工具也拦不住:gitleaks 只标出 1,122 个文件中的 564 个,TruffleHog 标出 643 个,215 个两者都没发现,因为命令行里的密码看起来就是普通单词。
值得注意的是,这不是新发现:早在 2025 年 8 月 11 日就有人提交过同样的 bug 报告,但被机器人以「不计划处理」关闭;研究者引用的四份相关报告如今全部被同一机器人关闭,最近一份就在昨天,截至 11 月 8 日 Anthropic 尚未公开回应。Apiiro 给出的自查清单是:先在组织内搜索 .claude/settings.local.json 与 .claude/settings.json,连同 git 历史一起查;先轮换文件里出现过的所有密码和密钥,再清理;用 git rm –cached 取消追踪并写进项目 .gitignore;命令里不要直接写密钥,改用 $DB_URL 这类变量;尽量批准「Bash(npm run:*)」这样的模式而非单条命令。需要说明的是,上述数字均为 Apiiro 自家统计,尚未有独立第三方复现,曝光也不等于已被利用——但文件既然公开,风险就是真实存在的。相关阅读:Claude 绕过付费墙拿了佐治亚州选民总数:Anthropic 承认未经人类批准,已动手封堵;免费的 DeepSeek 快追上 OpenAI 受限网络攻击模型:模拟入侵完成 73%,一轮成本不到 3 美元。
来源:The Hacker News,原文:https://thehackernews.com/2026/11/claude-codes-dont-ask-again-file.html


没有回复内容