1.4% 用户密钥被偷,OpenCode 说是蒸馏
老魏|AI 编程工具安全观察 | 1.4% Console 用户 · 最高 $1700 · 3 家大厂 API key | 2026-10-17 OpenCode 官方公告 · CyPro + Cyera + TokenFeed + AI Parabellum 交叉验证
上周末,Reddit 上一个叫 Preston Zeller 的开发者发了张截图:Anthropic 后台账单 $1,700。他没写代码,没跑 agent,就是睡觉——然后一觉醒来账单就烧完了。
同一天,Colin Parsons 的 OpenAI 账单多了 $281,Anthropic 又多了 $168。再往下翻,有人 Google Cloud 项目被直接暂停,理由是「调用量异常」。
OpenCode 官方 10-17 上午回了一条推:「昨晚我们遭遇了一起与大规模蒸馏攻击相关的安全漏洞,影响了 1.4% 的 OpenCode Console 用户。」
1.4% 听起来不多。但如果你的 API key 也塞在 OpenCode Console 里,你今晚就得去看一眼账单。
PART 01 · WAKE UP · 一夜 $1700
先说清楚,不是所有用 OpenCode 的人都被偷了。
本地 CLI 和 Desktop 端不受影响。这两个形态的 key 存在你自己的 SQLite 数据库里,压根没上传过服务器。OpenCode 联合创始人 Dax Raad 在 X 上反复强调这一句,还补了一句挺冷的话:本地存的 key「never come to us」(到我们这里的概率为零)。
被偷的是另一拨人——OpenCode Console 的用户。Console 是 OpenCode 提供的云端工作区服务,团队可以把 OpenAI、Anthropic、Google 的 API key 存进去,团队成员直接用 Console 调模型,不用自己配 key。方便是方便,但你的 key 从此在别人的服务器上了。
10-16 夜里,一个正在下线中的旧系统被入侵。攻击者拿到了这些 key,然后干了一件很有意思的事——不是转卖,是刷量。
「不是转卖」这个点,Dax Raad 自己最震惊。「这波 AI 自动化黑客攻击,真是打开了一个全新的世界。」他个人的账号也被打了。
用你的 key 跑大量查询,输出全是别人的,账单是你的。
PART 02 · TIMELINE · 1.4% 到底是谁
我把时间线捋了一遍,四个关键锚点:
| 时间 | 发生了什么 |
|---|---|
| 10-16 深夜 | 一个正在 decommission 的旧系统被入侵 |
| 10-17 上午 | OpenCode 通过邮件通知所有受影响用户 |
| 10-17 中午 | 官方在 X 上公开承认,用了「大规模蒸馏攻击」这个说法 |
| 10-17 起 48 小时 | 攻击者不间断尝试入侵,Dax Raad 称团队"守到天亮" |
1.4% 不是全公司。CyPro 的原文:受影响的是「Console 客户中,绑定过外部厂商、并把 key 存在工作区里」的那批人。OpenCode 邮件里说得很清楚:没收到邮件的你没被影响。
但问题是——你知道自己没收到邮件吗?如果你团队里有 3 个开发者用了 Console,其中 1 个收到了邮件但没告诉另外 2 个,那其他 2 个人的 key 是不是也在受影响名单里?

顺手记一个数字:24 小时窗口,从 10-16 夜到 10-17 早邮件通知。在这 24 小时里,被盗的 key 每多跑一分钟,就是多烧一分钟你的钱。
PART 03 · THE LABEL · 「蒸馏攻击」是解释还是甩锅
这里有个挺有意思的争议。
OpenCode 官方用的词是 large-scale distillation attack(大规模蒸馏攻击)。翻译成人话:攻击者拿了你的 key,跑到 OpenAI / Anthropic / Google 那儿跑大量查询,把顶级模型的输出当训练数据,训自己的模型。
听起来挺完整,但独立报道一查,问题就来了。
Cyera 的博文原话:「OpenCode 没有公开解释密钥泄露和蒸馏之间的因果关系。目前不清楚是攻击者一开始就想偷 key 去做蒸馏,还是先攻破系统才发现 key。」
IT Security News 更进一步:「这是凭证被盗(credential theft)。蒸馏只是攻击者可能的一种用法。」
一句话总结:「蒸馏」是攻击者可能干了什么,不是这次事件的核心事实。核心事实就是——密钥被偷了。给事件贴「蒸馏」的标签,某种程度上是把「谁在偷 key」这个更难回答的问题,用「key 被偷去干什么」这个问题绕开了。
有意思的是 Anthropic 在 2026-02 就公开披露过一波类似的蒸馏:24,000 个假账号,190M 次调用,据说是几家中国 AI 实验室干的。但那次是攻击者自己注册假账号,走正常风控;这次是拿真实开发者的 key,走的是「合法付费客户」的通道——风控根本看不到异常。

所以「蒸馏」这个说法,不是完全错,但是个事后标签,不是事件描述。区别挺重要:如果这是单纯的凭证被盗,你的防御动作是「轮换 key」;如果这是有组织的蒸馏攻击,你需要理解攻击者的长期目标——不是转卖,是训练。
PART 04 · TRIAGE · 3 家大厂的三种处理方式
3 家模型厂商的反应,其实分了三种路子:
Anthropic 和 Google:直接封 key。官方认定这批 key 可能已经泄露,就直接把它标记为禁用。你原来那个 key 从此不能用了,去控制台下一个新的就行。
OpenAI:跟 OpenCode 合作退款。攻击期间的消耗,OpenAI 说会跟 OpenCode 一起处理,把不合理的费用退回去。
OpenCode 自己:宣布「退款进行中」。具体退多少、什么时候退、怎么退,官方没给细节。
三家反应的分化,其实挺能说明问题——Anthropic/Google 是防御姿态,宁可误封也不让泄露 key 继续用;OpenAI 是补救姿态,先承认问题存在,走商务谈判退款。两条路都能站得住,但结果不一样:封 key 的用户立刻断掉攻击链,代价是业务中断;退款的用户能继续用,但攻击期间已经烧掉的钱不一定全退。

顺便说一句,OpenCode 官方通报里没说这次事件的攻击者是谁。CyPro 的原话:「没有任何威胁行为者被公开指认或归因。」
至于「1.4% 换算下来是多少个用户」,OpenCode 也没给。只给百分比。
PART 05 · IRONIC · 用 AI 打 AI 被反噬
这篇事件最讽刺的地方在防守端。
Dax Raad 说,攻击者连续 48 小时不间断尝试入侵 OpenCode 的系统。团队为了扛住这波,用 AI 防御 agent 7×24 小时轮班分析恶意代码。
然后 AI 拒绝继续工作了。
因为 AI 分析到某些恶意 payload 时,触发了安全过滤——「这段代码看起来有问题,我不能帮你分析。」Dax Raad 的原话是「a bit frustrating」(有点烦),我觉得这是精确的谦辞。
攻击者没有这层限制。
后来 OpenCode 申请了 OpenAI 的 Daybreak Blue 项目——这个项目的定位是给经过审核的安全团队用,模型「不太会在防御场景下拒绝」。Raad 说拿到之后调查效率明显提升。
同一件事在 Hugging Face 那边也发生过——2026-07 他们分析一起 AI agent 入侵事件时,被同样的安全过滤拦下。David Sacks(白宫 PCAST 联席主席)公开评论过两次都说过一句话:这些 guardrails「backfired」(反噬了)。
一句话:攻击者没有良心,防御者要用良心。而"良心"恰好是安全过滤要保护的东西。
PART 06 · CHEAT SHEET · 你自己该做什么
我知道你已经在想:「我在不在那 1.4% 里?」——先给答案:
- 如果你用的是本地 CLI 或 Desktop 版,key 存在你自己机器上,这次事件不直接涉及。轮换一下也无妨,属于便宜的保险。
- 如果你用的是 OpenCode Console,并且链接过外部厂商的 key——不管你有没有收到 OpenCode 邮件,都先按受影响处理,因为邮件名单是否覆盖完整,官方没披露。
CASE 01|自查 + 长期防护
需求:普通开发者,不确定自己在不在受影响名单里,想搞清楚然后不再被同一波坑。
方案:
- 先看邮件:登录 Console 用哪个邮箱,检查有没有 OpenCode 10-17 或之后的通知邮件
- 直接去 3 家厂商控制台吊销:不要去 OpenCode 里面删 key(删了也没用,攻击者早就抄走了),直接去 platform.openai.com / console.anthropic.com / Google AI Studio 后台撤销旧 key、生成新 key
- 查 10-16 后的账单:3 家厂商后台的 usage 页,看有没有你不认识的调用、异常时段、不熟悉的模型(比如你从来不用 OpenAI o 系列,突然出现大量 o1 调用,就是问题)
- 全工具盘 key:这次中招的不只是 OpenCode,任何你在第三方工具里存过 API key 的地方(Cursor / Windsurf / Cline / 各种 IDE 插件 / 自己写的 MCP server),都建议顺手盘一遍
- 长期:给每个工具单独配 key + 硬限额:别再用一把万能 key 打天下;每家厂商后台都支持「按项目/工具」的 key scope 和 spend limit,用起来。这次的教训就是——Console 里的预算只覆盖走 OpenCode gateway 的调用,key 被抄走直接在厂商 API 上跑,Console 的预算拦不住
输出:
- 是否受影响的确定性判断(不是靠邮件,是靠主动核对)
- 3 家厂商的 key 全部换新,攻击链彻底切断
- 全工具 key 清单 + 长期防护(一 key 一工具 + 硬限额)

顺便提一句:这次事件发生同一天(10-16/17),OpenCode 还把 GLM-5.3-Flash 免费给用户用了。免费是好事,但免费的服务,往往意味着密钥管理的边界也没那么硬。
SUMMARY · 一句话结论
免费/便利的代价,藏在聚合器里。
OpenCode 让你「一个账号接 3 家」,代价是「一个漏洞 = 3 家账单同时爆」。官方给的「蒸馏攻击」标签,是个事后描述,不是事件事实——核心事实就是:你的 API key 被偷了,账单被刷了,钱是你的。
一句话推荐:把 key 从任何"云端工作区"里挪出来,或者至少给每个工具单独配 key + 硬限额。这次的 $1700 账单,本来可以用 $20 硬限额挡掉。
适合:任何在第三方工具里存过 OpenAI / Anthropic / Google API key 的开发者
参考:OpenCode 官方 X 通报(2026-10-17)· CyPro《OpenCode Breach May Have Exposed API Keys》· Cyera《OpenCode Breach: What Happened》· IT Security News《OpenCode Breach Exposes User API Keys》· OBiGuard《OpenCode Breach: AI Provider API Keys Exposed》· TokenFeed《Hackers Stole API Keys From OpenCode》· AI Parabellum《OpenCode Breach Charges and Refunds》· Anthropic 2026-02 蒸馏披露 · 新浪财经《OpenCode 爆雷》
