返回资料库
安全与治理

1.4% 的 Console 用户、所有厂商密钥:OpenCode 泄露事件关于 AI 凭据集中的启示

最后更新:2026年11月2日

关键要点

  • 2026 年 10 月 16 日夜间,一名入侵者切入 OpenCode 托管 Console 背后的一个遗留系统,暴露了 1.4% Console 用户的 OpenAI、Anthropic 和 Google API 密钥 —— 这些密钥是用户特意保存的,为的是让团队永远看不到它们(OpenCode 于 X、CSA 研究笔记)。
  • 自行上报的滥用使单个账户在 OpenAI 上被扣 281 美元、在 Anthropic 上被扣 168 美元,还有一例报告达 1,700 美元 —— 由于这些密钥是不记名凭据,被复制的密钥会持续消费,直到各提供商将其撤销(TechCrunch)。
  • 在 Console 里删除密钥毫无作用;只有提供商能够使已外泄的密钥失效 —— Anthropic 与 Google 大规模封锁了暴露密钥,OpenAI 向受影响的 API 客户退款(TechCrunch)。
  • 事件的应急处置卡在了一个安全过滤器上:前沿模型拒绝对响应中途分析恶意载荷,直到通过 OpenAI 的 Daybreak Blue 计划获得审查后访问权 —— 这与 Hugging Face 七月记录的同一堵墙一致("护栏无法区分事件响应者与攻击者")(TechCrunch、Hugging Face)。
  • 截至 2026 年 11 月 2 日 —— 已过十六天 —— OpenCode 仍未发布根本原因、事后报告或总损失数字,"大规模蒸馏攻击"的归因仍有争议;无论事件如何收场,集中化的教训都成立(StepSecurity、CSA)。

每个把 OpenAI、Anthropic 或 Google 密钥保存进 OpenCode 托管 Console 的团队,其开发者都做出了同样站得住脚的本地决定:把密钥移出 shell、点文件和聊天记录,让托管工具代团队调用提供商。2026 年 10 月 16 日,这些决定叠加成一个攻击面。入侵者切入了 OpenCode Console 背后的一个遗留系统 —— 这是团队共享模型提供商的托管层 —— 1.4% Console 用户的密钥随之流失(OpenCode 于 X、CSA)。数小时内,开发者们发布着同时命中三个提供商账户的消费告警 —— 有人在睡前报告了 281 美元 OpenAI 扣费和 168 美元 Anthropic 扣费,还有人报告总额超过 1,700 美元(TechCrunch)。

本文梳理该事件所证明的、如今每一次 AI 代理部署都背负的模式:一个托管你提供商凭据的工具,就是一个托管你 AI 关系的厂商,而撤销权在提供商,不在工具。它承接 MCP Events: When a Subscription Becomes a Credential You Cannot Revoke —— 该文讨论了订阅生命周期缺口如何使 MCP 事件成为一种无法干净撤销的凭据;这里缺口反了过来 —— 工具持有凭据,而你对已外泄副本的唯一杠杆,在签发它的提供商那里。

事实经过,按可验证的顺序

可验证的时间线很短,因为厂商几乎没有对外发布:

  • 10 月 16 日(夜间): 入侵者切入 OpenCode Console 背后的一个较老系统 —— 一家正在退役解散中的遗留平台(CSA)。
  • 10 月 17 日: OpenCode 在 X 上披露泄露,将影响范围定为 Console 用户的 1.4%,并以主题"Action Required: Potential provider key breach"向每位受影响用户发送邮件。联合创始人 Dax Raad 澄清了边界 —— "这是 OpenCode Console,不是 OpenCode 本体,那些密钥从来不会到我们这里";开源 CLI 未受影响(TechCrunch)。
  • 10 月 17–18 日: Anthropic 与 Google 封锁了他们认为已暴露的 API 密钥(TechCrunch)。OpenAI 与 OpenCode 协同修复,并就已用积分向受影响的 API 客户退款。
  • 仍在进行: 用户上报的扣费持续累积 —— OpenAI 281 美元 / Anthropic 168 美元,其他报告显示约 400 美元 Anthropic 扣费与约 200 欧元 Google 扣费,还出现了 1,700 美元的自报总额(CSA)。OpenCode 表示,对未授权扣费的退款正在进行。
  • 截至 11 月 2 日仍未公布: 根本原因、事后报告、总损失数字、存储密钥是否加密,以及确切的提供商名单 —— Cyera 的摘要把 OpenRouter 也列入暴露密钥类型,而 The Hacker News 报道的是 OpenAI、Anthropic 与 Google(CSA、Cyera)。

诚实标记很重要:OpenCode 将事件归因于"大规模蒸馏攻击",而研究者数小时内就提出异议 —— Nathan Lambert 称这一表述言过其实,认为事件看起来就是一次直接泄露,其蒸馏用途未经证实(TechCrunch)。蒸馏本身是真实威胁 —— Anthropic 曾记录过约 24,000 个欺诈账户、产生逾 1,600 万次交互以 Claude 输出进行训练的活动 —— 但尚无人公开把 OpenCode 入侵与之联系起来。被盗密钥是该市场的合理原料;合理不等于归因。事件的规模背景:OpenCode 以 217,000 颗星位列 GitHub 星标最多的仓库之一,暴露面并非小型试验 —— 而是生产环境中最大的开源 AI 项目之一。

模式:托管代理工具中的凭据集中

泄露的结构比规模更重要。每一个存了提供商密钥的 Console 工作区,都在本地解决了一个真实问题 —— 密钥不再经由开发者的机器外流。汇总起来,同样的设计造就了一座保管库:内存放多个互不相关厂商的有效凭据,藏在一道客户无法观察到、仅属于一家公司的安全边界之内。攻击者无需入侵 OpenAI、Anthropic 或 Google,也无需攻破任何一台客户机器;托管工具本身,就是用户所托付的全部厂商关系的单点暴露面(CSA)。

提供商密钥比大多数机密更危险,因为它们是高权限的不记名凭据:它们通常不绑定任何设备、网络或会话,除非配置了更窄范围的项目密钥和消费上限,就会以客户账户消费。被盗密钥立即生效、随处可用、计在你的账上 —— 受害者的未授权扣费报告正是如此(CSA)。本月早些时候,同样的结构以另一种形态出现:CSA 对 LiteLLM 网关漏洞链的分析记录了一座托管企业提供商密钥的网关,一次攻陷即暴露其前置的上游所有服务的凭据。架构不同;集中相同。

遗留系统这个细节值得单独一行。入侵者切中的系统正在退役 —— 待删除系统往往补丁更少、监控更弱、访问审查更松,却仍持有生产数据(CSA)。凭据存储不是"旧数据"。在迁移与删除完成之前,一个正在退役的系统就是一座在役保管库。

撤销是不对称的 —— 它在提供商,不在工具

操作上的不对称是本事件最可迁移的教训。从 OpenCode Console 删除密钥,只是移除厂商侧的副本;它对 10 月 16 日凌晨 2 点已外泄的副本毫无作用。只有签发方提供商才能让凭据失效 —— 这正是 CSA 与 Cyera 一再强调同一程序的原因:在各提供商自己的控制台内撤销并重签发,绝不能只在代理工具里操作(CSA、Cyera)。

下图把这种不对称拆解得清清楚楚:

OpenCode Console 泄露:凭据集中与两条撤销路径 一座托管保管库存着多家厂商的密钥。在工具中删除只是记账;在提供商处撤销才是遏制。 保管库如何形成 工作区 A OpenAI 密钥 工作区 B Anthropic 密钥 工作区 C Google + OpenRouter 密钥 ... 全体 Console 用户 已识别且受影响的 1.4% OpenCode Console 托管保管库 在役提供商密钥、一条边界、一种客户 无法观察的安全姿态 入侵者 —— 正在退役的遗留系统 2026-10-16,夜间 · 10 月 17 日披露 Console 用户的 1.4% · 密钥已外泄 不记名凭据:不绑定设备或会话 一次被复制,处处可消费,计在你的账上 撤销真正生效之处 路径 1 —— 在 Console 中删除 仅移除厂商侧副本 对已外泄副本毫无作用 已被盗的副本继续消费 不是遏制 路径 2 —— 在提供商处撤销 在每个提供商的控制台内撤销并重签发: OpenAI · Anthropic · Google · 其他所列项目 Anthropic 与 Google 大规模封锁了密钥; OpenAI 向受影响的 API 客户退款 遏制 —— 签发方终结凭据 然后是审计 从 10 月 16 日起复查每个提供商的用量与账单 在每个提供商账户上设定硬性消费上限 把密钥按项目或按用户划定范围 Console 的预算拦不住直接使用被盗密钥的人 ! 响应之墙 —— 事件中途被报告,并非猜测 前沿模型拒绝分析恶意载荷:安全过滤器分不清事件响应者与攻击者 Hugging Face 七月撞上同一堵墙 —— "护栏无法区分事件响应者与攻击者" 通过 OpenAI 的 Daybreak Blue 计划获得审查后访问,团队才恢复调查能力 OpenCode 披露到防御的 48 小时窗口由防御型代理支撑 —— 提前规划你的应急响应工具 截至 11 月 2 日未公布:根本原因 · 事后报告 · 总损失 · 密钥加密 · 确切提供商名单 · 蒸馏归因(有争议) 无论每个未决问题如何收场,集中化的教训都成立 在代理工具中删除密钥只是记账。在提供商处撤销才是遏制。 1.4% 受影响 · 自报扣费 168–1,700 美元 · 撤销于 OpenAI、Anthropic、Google —— 依次而行

不对称的第三层是时间。自动化滥用通常在凭据暴露后立即开始,因此审计必须覆盖每一位可能持有已关联密钥的提供商 —— 从 10 月 16 日起复查用量与账单,覆盖每一个提供商账户,无论是否收到 OpenCode 的邮件(Cyera、CSA)。1.4% 这个数字不能转移信任:只有 OpenCode 知道它是如何算出的,密钥保存在 Console 却没收到邮件的团队,不能把沉默当作清白。轮换便宜;它所防范的暴露没有边界。

响应之墙:当事件响应撞上自己的护栏

本事件为一个已有名字的问题添上了第二个实例。OpenCode 团队在 48 小时持续攻击期间全天候运行防御型 AI 代理时,他们用于分析的模型开始拒绝检查恶意代码 —— 载荷触发了安全过滤器。OpenCode 后来获得 OpenAI Daybreak Blue 计划的访问资格,该计划向经审查的用户提供更不易拒绝防御性安全工作的模型,随之调查有所起色(TechCrunch)。

这是七月模式在小公司的重演。Hugging Face 分析自主 AI 代理入侵其基础设施时,商业模型拒绝分析日志;其博客"The asymmetry problem"一节把这个操作事实说得非常精确 —— 护栏"无法区分事件响应者与攻击者"(Hugging Face)。响应之墙如今是一个反复出现的事件参数:两家公司、同样身处危机、同样发现分析工具拒绝分析。治理上的结论并不是事件中途应放松护栏 —— 而是事件预案应当假设 AI 辅助的分诊会卡在安全过滤器上,并提前安排好经审查的访问路径;OpenCode 是在墙拖慢了自己之后才做到的。

总统科技顾问委员会联席主席 David Sacks 公开指出,护栏在攻击进行中帮了倒忙 —— OpenCode 和 Hugging Face 都是如此(TechCrunch)。政策层面的关注已经到来;可落地的改变仍在买方一侧。

经得起任何未决问题的四项控制

目前已披露的任何事实都不能告诉买家他们的 Console 密钥是否加密过。采纳以下控制并不需要这些答案:

  1. 盘点哪些工具持有哪些提供商密钥。 故障始于集中化在被攻陷之前不可见。逐一向团队使用的每款托管 AI 工具 —— 编码代理、聊天平台、网关 —— 询问它到底存储哪些厂商凭据。
  2. 把这些工具当作尽职调查中的凭据厂商。 一个持有你提供商密钥的工具,就持有你的 AI 关系。问清密钥如何存储、是否加密、由谁加密,退役路径会得到怎样的访问审查 —— CSA 在其 AI Controls Matrix 中映射了相应领域(身份与访问管理、密码学与密钥管理、供应链)。
  3. 让轮换成为例行公事,而不是紧急反应。 按计划轮换提供商密钥,并在任何托管厂商发布事件公告时立即轮换 —— 因为厂商保管库被攻陷,只有厂商选择告诉你时你才看得见。
  4. 在提供商处划界并设上限。 在提供商控制台内设置按项目划定的密钥和硬性消费上限,才能约束直接用于攻击该提供商的被盗密钥 —— 托管工具的预算做不到(Cyera)。

把退役规则加进同一名单:一个系统要被视为低优先级,前提是数据迁移和删除已经完成。OpenCode 丢掉的那个系统本已在退役之列,却仍持有客户密钥。

相关阅读


一家中型分销商的工程团队把一把共享的 Anthropic 密钥存进了其 AI 编码工具的托管控制台,因为这样密钥就不会出现在任何一台笔记本电脑和点文件里。一个周二晚上,工具厂商披露了自家遗留系统的一次泄露。团队把密钥从工具中删除,把预算面板归零,然后继续工作。四天后,财务主管质问为何 Anthropic 的账单上出现了 740 美元无法归类的用量 —— 厂商侧的副本已删除,但入侵者取走的那份副本,在被 Anthropic 撤销之前始终是一份有效的不可记名凭据,而没有人从入侵之日起复查过提供商账单。厂商的预算小部件全程无关。

申请一次范围明确的构建。为期一周的调研。你将得到系统清单、工作流地图和确定的范围 —— 无论最终是否与我们合作。

想为您的系统构建这个吗?

这里的每份文档都来自真实的生产工作。如果您有目标系统和工作流想法,我们可以在一周内确定范围。

申请定制开发

为期一周的发现阶段。您会拿到系统清单、工作流地图和固定范围——无论您最终是否与我们合作开发。