-
auo4 AI 观察 用户
OpenCode遭黑客围攻48小时:API密钥泄露一夜盗刷1700美元,官方定性遭质疑
开源 AI 编程工具 OpenCode 上周末爆出安全事件:其托管控制台 OpenCode Console 遭未授权访问,约 1.4% 的用户在站内存放的第三方模型 API 密钥泄露,攻击者冒用这些密钥高频调用 Anthropic、OpenAI、Google 的付费模型,有开发者一觉醒来发现账户被盗刷超过 1700 美元,还有用户的 Google Cloud 项目因触发反欺诈风控被直接停摆。
事件经过:废弃旧系统成了突破口
OpenCode 是一款开源的 AI 编程智能体,本身模型无关——用户在终端、桌面应用或编辑器里使用它时,需要把自己在 Anthropic、OpenAI、Google 等厂商的 API 密钥绑定到 Console(官方托管的在线工作区)里,由智能体代为调用。
根据官方向受影响用户发送的通知邮件,一名入侵者在 10 月 16 日夜间摸进了公司一套正在下线过程中的遗留系统,这里仍保留着通往生产密钥库的高权限读取通道。邮件给出的最早可能暴露时间为 10 月 17 日 00:30(UTC),并称除密钥本身外,暂未发现其他数据外泄。受影响范围被限定在曾在 Console 工作区绑定外部模型厂商密钥的用户,约占 Console 用户的 1.4%,官方在周六上午逐一发信通知——没有收到邮件的用户不在其列。
损失最直观的体现是账单。多名用户报告账户出现数百美元到 1700 美元不等的未授权消费;Google 风控系统则将部分账户的异常用量标记为"与资源劫持一致的滥用行为",直接暂停了相应项目。
"蒸馏攻击"的定性,社区不买账
OpenCode 联合创始人 Dax Raad 披露,攻击者借助 AI 智能体对系统持续进攻了至少 48 小时,官方将其定性为一次"大规模模型蒸馏攻击"。
所谓蒸馏,本是机器学习里的常规操作:用大模型的输出训练一个更小更便宜的模型,让小模型继承大模型的大部分能力。而当这种调用以极大规模发生在别人付费的账户上时,它就变成了攻击——拿到被盗密钥的攻击者可以把海量提示词灌进前沿模型,把响应全部截走当训练数据,账单则留给密钥的主人。
不过这个说法在技术社区遭到了强烈质疑。有安全专家指出,泄露的密钥碎片化严重、随时可能失效,并不具备支撑工业级蒸馏的条件;事件的本质更接近一次普通的凭证失窃,官方的定性有转移视线之嫌。质疑者同时点出了调查暴露出的管理漏洞:废弃系统为什么仍暴露在公网上?为什么下线系统里还留着读取生产密钥库的高权限通道?
更荒诞的一幕:防御方的 AI 拒绝配合
事件中还有一个颇具时代感的细节。OpenCode 团队在排查攻击者时,发现自己调用的 AI 模型开始拒绝请求——分析攻击行为的内容触发了模型内置的安全护栏,防御工具因为"看起来像它被训练去拒绝的事"而罢工,调查一度受阻。
僵局在周六被打破:OpenCode 获批使用 OpenAI 的网络安全模型 Daybreak 开展防御工作,局势随之稳定。这也算是给安全行业提了个醒——用 AI 对抗 AI 攻击时,连防御方都得先解决"工具愿意配合"的问题。
厂商快速止血,赔偿还在路上
三家模型厂商的响应都比较快:Anthropic 和 Google 第一时间撤销了确认暴露的密钥;OpenAI 表示已与 OpenCode 协作恢复受影响用户的访问,并承诺全额退还盗刷额度。OpenCode 方面称正在与 Google、OpenAI、Anthropic 三家协作处置事件,并提出了赔偿受影响用户的可能性,但尚未公布细则,也没有回应媒体的进一步追问。
给开发者的教训:托管的不是密钥,是无底限扣费授权
这次事件最值得记住的一点,是损害落在了哪里——攻击者的目标不是 OpenCode 自己的数据,而是用户存在那里的厂商账户。一张托管在第三方的模型 API 密钥,本质上是一张附带信用额度的空白支票,谁拿到都能一直刷到被人发现为止。
如果你是 OpenCode Console 用户且绑定过外部厂商,无论是否收到邮件,都应立即轮换密钥,并核对 10 月 17 日以来的厂商账单。从设计层面看,真正能兜住损失的控制手段都在厂商侧而非智能体侧:每个集成单独一把密钥,而不是一把密钥走天下;设置硬性消费上限和预算封顶;把账单异常告警的触发阈值设在"用量尖峰"而不是"月底出账"。这些做法都不能阻止密钥泄露,但每一条都能给泄露的代价封个顶。
对于把 API 密钥托管给任何第三方平台这件事,这次的结论相当朴素:那等于交出一张无底限的扣费授权,交出去之前先想清楚。