北京时间 10 月 18 日凌晨,开源 AI 编程工具 OpenCode 在 X 上官宣了发生在前一天夜里的一起安全事件:云端 Console 的退役旧系统遭到未授权访问,用户保存在工作区里的第三方模型 API 密钥可能已经泄露,涉及 OpenAI、Anthropic、Google 等主要供应商,官方称事件与一次大规模“蒸馏攻击”有关,影响约 1.4% 的 Console 用户。 如果你的供应商密钥存进过 OpenCode 的 Console 工作区,现在要做的不是改 OpenCode 的密码,而是直接去模型供应商后台吊销这把 key。IT之家Hacker News
谁在影响名单里,谁不在
这起事件很容易被和那个命令行工具混在一起,但两者要分开看。被攻破的是 OpenCode 的可选托管服务 Console——一个类似 OpenRouter 的托管推理网关,用户可以把自家平台的密钥存进去统一管理和转发;命令行里那个编码 agent 是另一回事,用那个的人不受影响。 OpenCode 官方文档也写明:本地客户端通过 /connect 命令添加的供应商密钥,保存在本机的 auth.json 文件里,不经过云端。 OpenCode 当天上午已通过邮件通知全部受影响用户,并给了一个简单判据:没收到邮件,就不是受影响用户。 团队用户要补一句:个人邮箱没收到通知,未必能回答整个团队共享工作区有没有存过密钥的问题,应由管理员核对配置范围。知乎OpenCode官方文档微博
攻击在先,通报在后
按已披露的时间线,美东时间 10 月 16 日夜至 17 日攻击发生时,一批用户先收到的是 OpenAI、Anthropic、Google 发来的异常用量或费用提醒,随后才是 OpenCode 的正式确认。 给受影响用户的邮件要求相关用户到供应商后台撤销并更换密钥,同时检查异常用量。 公告发出几小时后,Anthropic 方面跟进:Claude Code 团队的 Lydia Hallie 表示已撤销一批他们认为受影响的 Claude API 密钥,并建议在 OpenCode 里存过密钥的用户稳妥起见重新建一个。微博知乎知乎
损失金额,目前只有用户自报的数字
截至 10 月 19 日,没有官方确认的损失总额,能看到的是个别用户公开晒出的账单。科技分析师 Max Weinbach 晒出后台,OpenAI 余额剩 -2.15 美元、用量页上跑了 3500 万个 token,OpenAI 和 Anthropic 的余额都被刷光,谷歌还因为项目疑似被盗用先对他限了流。 另一批帖子显示,有用户称 OpenAI 被用了约 281 美元、Anthropic 约 168 美元,同帖还有人自称损失约 1700 美元;这些金额均未见独立核实,相加当总损失并不严谨。 OpenCode 明确表示事件仍在处理,暂时无法披露更多技术细节。哔哩哔哩微博
“蒸馏攻击”:定性是官方的,证据还没公开
官方叙事里的链条是:攻击者用偷来的密钥去大量调用这些 AI 模型,把模型的输出扒下来训练自己的模型,费用记在密钥主人头上。 但到目前为止,OpenCode 没有公开对应的调用样本或调查细节,这条“蒸馏”定性仍停留在公司单方面说法。Hacker News 的高热度讨论中就有观点直言:“mass distillation campaign”这一说法没有公开证据,期待一份正式的事后复盘。 中文社区里更直接的质疑是:这明明是一起 API 密钥泄露事件,攻击类型却被归到“蒸馏”名下,用词本身可能带偏问题焦点。 对用户来说,叫什么名字不影响行动:密钥被盗、被异常调用、账单异常,这三件事已经足以驱动止损。微博Hacker News知乎
如果你用过这类工具,四步止损
查存放位置:逐把清点自己的供应商密钥,哪些存过 Console 工作区或团队共享账号。仅本地保存、且未收到邮件,按官方口径暂时安全。
到供应商侧吊销轮换:改密码、卸载客户端都不能代替把旧 key 作废;Anthropic 已经代用户撤销了一批被判定受影响的密钥,跑了一半的长任务可能被腰斩,换 key 前先核对任务断点。
核对用量和账单:重点看事发时段的 token 消耗峰值;同时注意,平台侧设置的额度只管经过网关的请求,泄露的密钥副本直连供应商调用时,拦不住也记不到平台的账上。知乎
改变用 key 的习惯:一个服务一把密钥、按用途隔离、建时记额度、能限额不给无限。一把“万能钥匙”平时省事,出事时你只能全撤,等于自己停掉全部业务。
接下来盯什么
OpenCode 状态页目前显示各服务已恢复正常,Console 可用。 但三件还没公布的事决定这起事件如何收场:完整根因分析(攻击者如何进入旧系统)、确切的受影响账户数、损失与补偿安排。另一个提醒则适用于所有托管服务:这次被攻破的是一套“正在退役”的旧系统,而它被入侵时仍持有用户的有效凭据——只要还存着 key,退役中的系统就仍在安全责任范围内。OpenCode状态页