点了一次别再问,2500个密码被AI助手传上网

点了一次别再问,2500个密码被AI助手传上网

人工智能网络安全大模型程序员

数据源:HN + web research

顺手点掉一次弹窗,2539个内部密码挂上公网

2026 年 11 月 5 日,安全团队 Apiiro 发布了最新报告。团队在全球公开代码平台上抓取到 104,185 份本该留在本地的配置文件。逐份检查后,其中 1,122 份躺着真实凭证,去重统计共 2,539 个真密钥,波及全球 63 家机构。

许多不写代码的普通人,在日常使用电脑时也常遇到类似的提示框。当你点击某个操作时,系统会弹出警告询问是否允许。提示框旁边通常跟着一个小勾选框:「记住选择,别再问了」。为了省去频繁点击的麻烦,多数人都会顺手勾选。

在 AI 编程助手 Claude Code 的界面里,这个按钮叫作「Yes, and don’t ask again」。工程师原本只想让眼前的助手少弹窗。但这一下顺手点击,直接把通往核心数据的钥匙丢到了公开网络上。

Apiiro 团队从公开代码中筛出了 1,379 个高价值凭证。其中包含 379 个数据库登录密码,以及 122 个云端数据库管理密钥。测试确认,其中一个关键密钥依然有效。任何人拿到,都能直接接管后台数据。

Apiiro 团队披露的代码平台扫描结果与凭证泄漏数据 图:覆盖超十万份公开配置,包含大批高危数据库密码与服务密钥。来源:Apiiro 博客

机器把一次放行误认成永久通行证

密码究竟是怎样写进公开文件的?源头藏在人机理解的偏差里。

工程师在日常工作中,经常指挥 AI 助手运行脚本或连接数据库。为了让连接顺利建立,输入的指令中往往夹带了密码参数。此时 AI 助手会停下来向人类求助,询问是否允许执行该指令。

当人类选择「同意且别再问」时,内心的潜台词只是「这次先跑通,赶紧干活」。人类把这次点击视作临时的单次放行,从未打算永久放弃审查。

AI 助手却执行了一套死板的自动化逻辑。它把人类的一次回车,理解成了对未来所有类似行为的永久许可。为了记住这个规则,Claude Code 会把整条获批命令原样存盘,写进项目目录。

在 Apiiro 对比测试的 16 款主流编程助手里,Claude Code 是唯一一款默认存盘整条命令的工具。不论底层驱动模型是 Sonnet 还是 Opus,这种机械行为毫无分别。原本只在内存中停留几秒的临时密码,就这样被 AI 变成了刻在磁盘上的固定规则。

名字叫本地,公网同步时却没人拦

如果密码账本只留在个人电脑里,风险尚且可控。真正的麻烦在于,这个装满钥匙的文件顺理成章地溜出了大门。

在系统设计中,存放授权规则的文件被命名为 settings.local.json。名字里的「local」代表本地。许多工程师看到这个单词,便想当然地认定它只在本地生效,绝不会传到网上去。

在软件工程中,文件能否留在本地,取决于系统内的排除规则清单。开发者的主观想象无法阻挡文件上传。团队通常使用名为 .gitignore 的排除清单,指示同步工具过滤掉敏感文件。

常规的排除模板里并不包含这款 AI 助手的专属文件。工程师完成阶段性开发后,习惯性地把整个项目打包上传。没有任何一道防护机制出面阻拦。那个记满密码的本地文件,直接被同步到了公开代码平台。

在追溯到的 1,105 个泄密项目中,有 539 个文件的提交记录由 Claude 亲自署名。更有 74 个项目被其他用户复制分发,衍生出了 211 份带着相同密码的副本。所谓的本地私房钱,最终在缺乏设防的同步流程中传遍全网。

Apiiro 报告中关于敏感配置文件暴露时长与规模的数据分析 图:受影响项目平均暴露超两百天,部分仓库裸奔逾一年。来源:Apiiro 博客

传统安全扫描查不出命令行明文

面对大规模的密码泄露,企业重金部署的安全扫描系统为何集体失灵?答案在于安全防护机制的盲区。

工业界常用的安全检查工具,主要依靠固定特征匹配。它们擅长捕捉标准格式的云端密钥、固定长度的令牌串,或者格式工整的证书。

这次泄露的密码大多嵌套在具体的执行指令当中。比如 PGPASSWORD= 或者 mysql -p 这类参数,形式上与普通代码文本十分相似。在 1,122 个风险文件里,知名检测工具 TruffleHog 只认出了 643 个。整整五分之一的敏感凭证逃过了主流防护软件的层层排查。

文件体积的大小,直接反映了安全隐患的严重程度。数据统计显示,大小超过 8KB 的配置文件里,平均每十个就藏着一个有效密码。而在 500 字节以下的文件中,泄漏概率不到五百分之一。

文件体积越大,记录的授权历史就越冗长,混在命令里的密码就越密集。这些平日里用于免打扰的规则,日积月累之下,演变成了一座随时可能起火的数据库。

官方归咎于人工失误,社区质疑权限失控

事件曝光之后,技术社区与工具开发者之间展开了激烈争论。

Claude Code 团队成员 bcherny 迅速在社区发声。他表示该文件定位原本就是本地配置。代码设计上也包含了自动添加排除规则的逻辑。官方认为,公网上的十万份文件,多数源于用户手工创建,或是提前提交。

社区开发者对此提出了截然不同的看法。许多技术人员指出,官方给出的安全威胁模型从一开始就含糊不清。普通用户在频繁的人机交互中,很难搞清一次点击究竟交出了多大范围的控制权。

社区抽样分析了公开文件中的权限规则。统计显示,超过 5% 的配置允许执行任意命令。更有 43% 的规则对 Python 运行环境全开。在如此宽泛的框架下,把问题归咎于人类失误,忽视了默认机制的缺陷。

双方的争论揭示了智能工具的共通困境。开发者追求省心无感的交互体验,安全防线则需要严苛的边界控制。当便利与安全发生冲突,默认设置往往倒向了前者。

长期授权不该留在无人防守之处

AI 正在重塑人类编写软件的方式。然而,它并未改变信息安全的基本常识。

这次事件的核心,在于把人类对单次操作的临时容忍,固化成了系统对未知风险的长期放行。工程师为了省去麻烦,顺手点下一句「别再问了」。AI 助手则把这句话视作永久有效的通行证,并且大意地写在了一张人人可见的纸条上。

安全专家给出了明确的应对方案。企业必须将各类 AI 助手的配置目录,提高到与核心密码文件同等的保密级别。日常代码提交需要严格过滤。历史版本库更要全量排查,重点清理命令行里的登录凭证。

自动化工具旨在减轻人类负担。然而,辨别风险的责任始终在人。长期通行证若被随手丢在走廊,大门被推开只是时间问题。

Apiiro 针对企业防御 AI 编程凭证外泄提出的整改方案 图:将 AI 目录视同高危凭证处理,排查命令行明文密码。来源:Apiiro 博客

参考链接:

  • Apiiro 官方技术博客:编程 Agent 如何通过 GitHub 泄露机密
  • Hacker News 社区关于 Claude Code 凭据泄露的讨论