您的位置首页 >要闻 > 人工智能 >

官方正在修复Claude Code 被爆把密码写进项目文件,GitHub 上发现 2539 个真实凭据

安全厂商 Apiiro 对外披露,Anthropic 旗下 AI 编程 Agent Claude Code 存在凭据泄露漏洞:当用户选择 “Yes, and don’t ask again(是的,不再询问)” 永久放行命令时,整条命令原文(内嵌密码、API Key、数据库令牌等敏感信息)会存入项目目录下的 .claude/settings.local.json;一旦开发者把这个配置文件提交推送到公开 GitHub 仓库,敏感凭据直接明文暴露,扫描一共在 1994 个公开仓库里找到 2539 条有效凭据,Anthropic 官方已经确认问题,正在推送补丁修复该存储逻辑。

一、漏洞基础信息清单

  • 受影响产品:Anthropic Claude Code(CLI 编程 Agent)
  • 触发入口:命令审批弹窗选项「Yes, and don’t ask again」
  • 泄露文件:.claude/settings.local.json
  • 发现方:安全企业 Apiiro
  • 统计结果:1122 份公开文件样本包含密钥,合并 Git 历史、分支、Fork 后,检出 2539 个凭据
  • 漏洞性质:不是外部黑客入侵,属于功能设计缺陷,自动持久化保存带密钥的完整命令
  • 官方状态:已确认,紧急迭代新版本,修改持久化规则

二、两种审批模式对比表

审批选项存储行为安全风险适用建议
Yes(仅本次允许)本次会话临时放行,不会写入 settings.local.json极低日常优先选择,用完即失效
Yes, and don’t ask again(不再询问)完整命令原样持久保存到项目 json,包含密码、token极高,一旦提交 Git 就泄露尽量不要使用该选项

三、漏洞产生完整流程

  1. 在 Claude Code 执行任务,Agent 发起 shell 命令权限申请,命令中包含明文密码、数据库口令、API 密钥;
  2. 用户点击「Yes, and don’t ask again」永久放行这条命令;
  3. Claude Code 把整条原始命令写入项目目录 .claude/settings.local.json 的 allow 数组;
  4. 开发者未把 .claude/ 加入 .gitignore,执行 commit、push 上传 GitHub;
  5. 仓库公开后,任何人都能下载这个 json,直接读取明文凭据;
  6. 即使后续删除文件,Git 历史记录、Fork 副本里依然保留密钥。

四、立刻执行的应急处置步骤

  1. 检索仓库:在所有使用 Claude Code 的项目,查找是否存在 .claude/settings.local.json;
  2. 凭据轮换:只要该文件里出现过密码、API Key、数据库账号,优先全部重置、吊销,删除文件不能消除已经泄露的风险;
  3. 添加忽略:在项目 .gitignore 增加一行 .claude/settings.local.json,阻止后续提交;
  4. 清理 Git 历史:如果已经推送到公开仓库,用 BFG Repo-Cleaner 等工具清理历史记录,同时通知 Fork 仓库持有者;
  5. 临时规避:在官方修复版本发布前,放弃使用「不再询问」选项,每次仅选择单次 Yes;
  6. 更新版本:等待 Anthropic 发布修复包,升级 Claude Code CLI。

五、适用场景与风险边界

✅ 风险最高场景

  1. 数据库连接命令、psql、mysql、redis-cli 命令携带明文密码
  2. curl 请求附带 Authorization、token 参数
  3. 云厂商 CLI 命令传入 AccessKey、SecretKey
  4. 脚本、容器启动参数直接注入密钥

⚠️ 边界说明

  1. 这个文件是项目本地配置,只有提交到 Git 才会外泄,本地使用、不上传仓库不会泄露;
  2. 不是所有 settings.local.json 都带密钥,只有勾选 “不再询问” 的命令才会写入;
  3. 修复方案方向:不再原样存储完整命令,改用模式匹配,剥离明文密钥;
  4. 该漏洞不影响网页版 Claude 对话,只针对本地 CLI Claude Code。

六、自查检查清单

  1. 全局搜索本机所有项目目录,查找 settings.local.json;
  2. 检查 git 提交记录,确认是否存在 .claude 目录提交记录;
  3. 梳理近两周 Claude Code 执行过的带密钥命令,批量轮换密钥;
  4. 团队统一模板,新项目默认在 gitignore 屏蔽 .claude/ 配置文件。

【相关 FAQ】

问题 1:Claude Code 爆出凭据泄露漏洞,触发 2539 个凭据泄露的原因是什么?

回答 1:Claude Code 的 “Yes, and don’t ask again” 永久放行功能,会把整条包含密码、密钥的命令原样保存在 .claude/settings.local.json,开发者误提交到 GitHub 公开仓库,导致凭据明文泄露,累计检出 2539 个凭据。

问题 2:Claude Code 密码写入项目文件漏洞,删掉 settings.local.json 就安全了吗?

回答 2:直接删除文件不够,Git 历史、别人 fork 的副本里还保留这份文件,并且密钥已经对外暴露,必须先吊销、轮换对应的密码和 API 密钥,再清理 Git 历史。

问题 3:Claude Code 该漏洞,在官方修复之前怎么临时规避?

回答 3:临时方案是不要点「Yes, and don’t ask again」,每次授权只选择单次 Yes;同时在项目 gitignore 加入 .claude/settings.local.json,防止该配置文件被提交上传。

【参考资料】

[2026-11-07](Claude Code's “Don't Ask Again” File Exposes Passwords and Keys)The Hacker News

[2026-11-09](Claude Code Leaked 2,539 Secrets Onto GitHub)DEV Community

[2026-11-09](Anthropic Claude Code 泄露开发者密钥事件报道)iTnews

[2026-11-10](Claude Code 密钥泄露事件)IT 之家

【免责声明】

本文基于 Apiiro 安全报告、The Hacker News 等公开资讯整理;漏洞修复进度、新版本发布时间以 Anthropic 官方仓库公告为准;一旦遭遇该漏洞,密钥吊销、仓库清理存在操作风险,高权限生产密钥建议尽快执行轮换,本文不构成企业安全审计方案。