资讯AI 资讯

OpenCode 被入侵:泄露的是你存在云端控制台里的模型 Key,不是本地那份

如果你在 OpenCode 的网页控制台(Console)里填过 OpenAI、Anthropic 或者 Google 的 API Key,赶紧先去对应平台把这几个 Key 删掉,再回来继续往下看。

开发者Club
OpenCodeAPI Key 泄露安全事件蒸馏攻击OpenAIAnthropicAI 编程工具
阅读 —收藏 —

如果你在 OpenCode 的网页控制台(Console)里填过 OpenAI、Anthropic 或者 Google 的 API Key,赶紧先去对应平台把这几个 Key 删掉,再回来继续往下看。

如果你只在本地终端里用 OpenCode、从没登录过 Console 的话,可以稍微松口气。

这次出问题的是 OpenCode 的云端控制台,不是电脑上常用的那个开源命令行工具。这两者存 Key 的位置是完全不同的:

怎么配置 KeyKey 存在哪里影响范围
在 opencode.ai 的 Console 工作区里添加了第三方模型OpenCode 的服务器上⚠️ 在范围内
在终端里用 /connect 或 opencode auth login 添加本机 ~/.local/share/opencode/auth.json官方没有提到本地 Key
只用 OpenCode 自己的 Zen 等托管模型,没填过第三方 Key没有第三方 Key不涉及

HN 上点赞最多的评论:泄露的是 OpenCode Console,和命令行、桌面版的编程 Agent 是两回事

想确认本地存了哪些 Key,可以在终端里运行:

opencode auth list

正常情况下会列出你在本机登录过的模型服务商,类似这样(具体格式以你安装的版本为准):

Credentials ~/.local/share/opencode/auth.json
●  Anthropic  api
●  OpenAI     api

这里列出来的是本地凭据。最重要的是去检查一下你的邮箱:你有没有在 10 月 17 日收到 OpenCode 的邮件,标题是「Action Required: Potential provider key breach」。官方说已经给所有受影响的用户发了邮件,没收到邮件的人不在受影响名单里。

不过我的建议是:只要你在 Console 里填过 Key,即使没收到邮件也换一次。新建一个 Key 只要几十秒,被别人拿去刷上几百美元的账单就是另一回事了。

从发邮件到官方承认,前后不到 3 个小时

我们根据时间线梳理了一下,整件事的经过是这样的:

  • 10 月 16 日夜里:OpenCode 官方说入侵发生在「昨晚」,安全分析建议用户把账单和用量至少回查到 16 日。
  • 10 月 17 日:部分 Console 用户收到邮件,原文是「We identified unauthorized access to a legacy system that we were in the process of decommissioning」,意思是一个正在下线的旧系统被未授权访问了,存在工作区里的第三方 Key 有被泄露的风险。
  • 10 月 17 日 15:30(UTC):安全研究员 Matt Johansen 在 X 上贴出了邮件截图。
  • 10 月 17 日 18:08(UTC):OpenCode 官方账号确认:「We had a security breach last night related to a large scale distillation attack」,说这次入侵和一次大规模的蒸馏攻击有关。
  • 随后:官方补充说受影响的大约是 1.4% 的 Console 用户,正在和 Anthropic、OpenAI、Google 一起处理,事件还在进行中,暂时不能透露更多细节。
  • 10 月 18 日:联合创始人 Dax Raad 发帖说,攻击者在过去 48 小时里一直不停地攻击他们的系统。

OpenCode 官方在 X 上发布的事故说明(编辑后的版本)

10 月 18 日 Dax Raad 发帖说,攻击者在过去 48 小时里一直不停地攻击他们的系统

随后这条消息在 Hacker News 上引起了广泛的讨论。

攻击者要的不是你的代码,而是你的额度

官方用的词是 distillation attack(蒸馏攻击),这个词值得多说一嘴。

蒸馏是指用强模型的输出去训练一个弱一些的模型,让弱模型学会强模型的回答方式。要做蒸馏,就需要大量调用 Claude、GPT 这类模型来生成训练数据,这笔调用费用是非常高的。Anthropic 本月也提到过,做蒸馏的人会用代理网络控制几十万个虚假账号来调用模型。

偷一批真实用户的 Key,就等于拿到了一批现成的、已经绑定了付款方式的账号。攻击者用你的 Key 跑数据,账单确实是记在你头上的。已经有受影响的用户反映收到了几百美元的异常扣费,也有报道说个别人被扣了上千美元。不过这些都是用户自己说的,截至目前为止,OpenCode 还没有公布过损失金额。

所以这次泄露最直接的伤害不仅仅是隐私,而是钱。这也决定了处理的紧急程度:先止血(删除 Key),再查账,最后才是长期的防护。

还有几个关键问题,官方到现在都没有回答:1.4% 对应多少个账号、攻击者是怎么进入那个旧系统的、访问持续了多久、是不是所有存储的 Key 都被拿走了。在这些信息出来之前,按「最坏情况」来处理是最稳妥的。

4 步处理,按顺序做

P0:马上吊销 Key(5 分钟内)

分别去 OpenAI、Anthropic、Google AI Studio 的控制台,把在 OpenCode Console 里填过的 Key 全部删掉。注意要在服务商那边删,只在 OpenCode Console 里移除是没用的,因为 Key 本身还是有效的。

P0:确认旧 Key 已经失效

吊销之后用 curl 测一下。以 Anthropic 为例:

curl -s https://api.anthropic.com/v1/models \
  -H "x-api-key: $OLD_KEY" \
  -H "anthropic-version: 2023-06-01"

如果 Key 已经失效,会返回 401 和类似下面的错误:

{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"}}

OpenAI 的 Key 换成 https://api.openai.com/v1/models 和 Authorization: Bearer $OLD_KEY 来测,失效时会返回 401 和「Incorrect API key provided」。如果还能正常返回模型列表,说明这个 Key 还活着,要回去再检查一遍。

P1:回查账单和用量

在每家服务商后台看 10 月 16 日以来的用量曲线,重点看有没有你不认识的大量调用,尤其是夜间的高峰。如果确认有被盗刷的费用,尽快联系服务商的客服说明情况,并保留 OpenCode 的通知邮件作为证据。

P2:新 Key 换个用法

生成新 Key 的时候顺便做三件事:

  1. 一个工具用一个 Key,不要所有工具共用同一个,这样出事时只用换一个。
  2. 给每个 Key 设置花费上限,OpenAI 和 Anthropic 的后台都支持按项目或工作区设额度。
  3. Google 的 Key 只开通 Gemini API 这一项权限,不要让它能调用其他服务。

另外别忘了更新所有用到旧 Key 的地方,比如 CI 里的环境变量、其他项目的 .env 文件,否则可能会有系统或服务因为 Key 失效而报错。

开源,不等于你的数据就在你手里

很多人对 OpenCode 的第一印象是「开源的 Claude Code 替代品」。HN 评论区里有人问了一句很直接的话:「既然 OpenCode 是开源的,它为什么还需要保管我的凭据?」

我觉得这句话问到了点子上。开源的是那个命令行工具,但 Console、团队工作区、托管模型这些功能都跑在 OpenCode 自己的服务器上,本质上是一个商业 SaaS 服务。你在 Console 里填 Key 的那一刻,就和把 Key 交给任何一家第三方平台没有区别,你使用的是第三方服务,所以开源协议在这里是保护不了你的。

这也不是 OpenCode 今年第一次出安全问题。今年 1 月它被披露过一个高危漏洞 CVE-2026-22812(CVSS 8.8):旧版本会在本机启动一个不需要鉴权的 HTTP 服务,任何本地进程、甚至通过宽松的跨域设置的网页,都能借它以你的权限执行命令,1.0.216 版本才修复。

NVD 上的 CVE-2026-22812 详情页,GitHub 给出的评分是 8.8 HIGH

HN 上还有人翻出了自己 68 天前的评论,当时就在 GitHub issue 里提过 OpenCode 的数据处理问题。

我的判断是:AI 编程工具更新得非常快,但在凭据管理上,大部分团队还没跟上这个速度。不管你用的是 OpenCode、Cursor 还是别的工具,Key 尽量只放在本地,必须放到云端时一定要设额度上限,这个限制甚至比使用哪个工具更重要。

最后问一句

你现在的 Anthropic 或 OpenAI Key,有没有给它设过花费上限?如果这次被盗的是你,能在多长时间内发现账单不对劲?欢迎在评论区说说你在 CI、.env 和各种 Agent 工具之间是怎么管理 Key 的

资料来源:

评论

登录后即可发表评论

登录账户

加载评论中...