48小时“烧光”56万!三人创业团队濒临破产,仅因Gemini API密钥被盗:“AI账单远超我们的银行余额”

48小时“烧光”56万!三人创业团队濒临破产,仅因Gemini API密钥被盗:“AI账单远超我们的银行余额”

整理 | 苏宓

出品 | ZEEKLOG(ID:ZEEKLOGnews)

「仅过了 48 小时,一笔 8.2 万美元的天价费用凭空出现,较这家小型初创公司的正常月费暴涨近 46000%。」

这不是假设的虚幻故事,而是一家墨西哥初创公司正在经历的真实危机。

近日,一位名为 RatonVaquero 的开发者在 Reddit 发帖求助称,由于他的 Gemini API 密钥被盗用,原本每月仅约 180 美元(约 1242 元)的费用,在短短 48 小时内暴涨到 82,314.44 美元(约 56.8 万元)。对于这家只有三名开发者的小型创业团队来说,这笔突如其来的账单,几乎等同于灭顶之灾。

“我现在整个人都处在震惊和恐慌之中。”RatonVaquero 在帖子开头这样写道。

初创公司遭遇“天价账单”

根据 RatonVaquero 在 Reddit 上的描述,他的 Google Cloud API 密钥在 2 月 11 日至 12 日之间被泄露了,具体是怎么泄露的,他也不知道,也没有在软件中发现明显的错误。

随后,有未知攻击者利用该密钥疯狂调用 Gemini 3 Pro 的图像和文本接口,最终在短短两天内累计产生了 82,314.44 美元的费用。

对这家只有三个人的小公司来说,这个数字极其夸张——他们平时每月支出只有 180 美元。也就是说,这次异常调用带来的费用,直接飙升到了正常水平的约 455 倍。

发现异常后,团队立即展开紧急处理。他们删除了被盗的 API 密钥,禁用了 Gemini 相关接口,同时更换了所有访问凭证,全面启用双重验证,并收紧 IAM 权限配置。

与此同时,他们也向 Google Cloud 提交了支持工单,希望能获得官方协助。

但目前得到的回复并不乐观。

Google 方面在沟通中提到了“Shared Responsibility Model(共享责任模式)”。根据这一原则,云平台负责基础设施安全,而账户和密钥的管理则由用户自行负责。因此,即便是密钥被盗导致的调用费用,也可能需要用户承担。

“如果谷歌要求我们支付哪怕三分之一的费用,公司都会直接破产。”RatonVaquero 无奈地表示,“我们现在只是勉强维持运营,还寄希望于某个产品能够成功。我们只是墨西哥的三个开发者组成的小团队。”

截至目前,Google 尚未明确说明是否会强制要求该公司支付全部费用,也没有表态是否会承担部分损失。

开发者的疑问:“为什么没有基本的异常保护机制?”

这起事件也让 RatonVaquero 对 Google Cloud 的安全机制产生了疑问。

在他看来,从每月 180 美元到 48 小时 8.2 万美元的支出暴涨,显然不属于正常波动,而是非常明显的异常行为。

然而在使用过程中,Gemini 并没有触发任何自动保护机制,例如在使用量突然达到历史水平数倍时自动停止服务、在费用出现极端增长时要求额外确认,或在异常情况下暂时冻结账户等待审核。

对于一家小公司来说,这样的风险几乎是致命的。“这笔账单远远超过我们银行账户里的钱。” RatonVaquero 写道。

数千个 API 密钥可能被滥用

更值得注意的是,这起事件可能只是更大问题的一部分。

据外媒 The Register 报道,美国网络安全公司 Truffle Security 的研究人员在对数百万个网站进行扫描后发现,至少 2863 个 Google API 密钥原本只用于标识计费项目,如今却可以直接用于 Gemini API 身份验证。

这意味着,一旦攻击者获取这些密钥,就可能直接调用大模型接口,不仅能访问相关账户中的上传文件和缓存数据,还能不断消耗 API 配额,把所有计算费用转嫁到密钥拥有者身上。

对此,Truffle Security 研究员 Joe Leon 不久前也发了一篇长文进行了深度解析为什么会有这种情况发生。

Truffle Security 指出,问题的根源,是 Google Cloud 使用同一种 API Key 格式(以 AIza... 开头)来处理两种本质上完全不同的用途:公开身份识别和敏感认证。

多年来,Google 一直明确告诉开发者,API Key 可以安全地嵌入客户端代码中。Firebase 官方的安全清单中也明确指出,API Key 并非机密信息。

注意:这些 API Key 与用于驱动 GCP 的服务账户 JSON Key 是完全不同的。

Google Maps JavaScript 文档也指导开发者,将 API Key 直接粘贴到 HTML 中。

这在当时是合理的。API Key 的设计初衷是作为项目的标识符,用于计费,并可以通过 HTTP Referer 白名单等方式进行限制(虽然这些限制可以被绕过)。它们并非设计为认证凭证。

然而,随着 Gemini 的出现,情况发生了变化。

当你在 Google Cloud 项目中启用 Gemini API 时,该项目中现有的 API Key(包括那些已经嵌入在你网站公共 JavaScript 中的 Key)会在不发出任何警告、确认对话框或邮件通知的情况下悄然获得访问敏感 Gemini 端点的权限。

这带来了两个问题:

  1. 权限溯源扩张(Retroactive Privilege Expansion)。你三年前创建了一个 Maps Key,并严格按照 Google 的指引嵌入到网站源代码中。上个月,你团队的某个开发者为内部原型启用了 Gemini API。现在,你的公共 Maps Key变成了 Gemini 的认证凭证。任何抓取到它的人都可以访问你的上传文件、缓存内容,并让你的 AI 账单飙升。没有人通知你这一变化。
  2. 默认配置不安全(Insecure Defaults)。当你在 Google Cloud 创建一个新的 API Key 时,默认状态是“无限制”,意味着它立即对项目中所有已启用的 API(包括 Gemini)有效。UI 会显示“未经授权使用”的警告,但架构上的默认配置本身是完全开放的。

结果:成千上万原本用于计费的无害 API Key,如今成为了公开网络上的 Gemini 凭证。

在这种情况下,攻击者可以访问你的网站,查看页面源代码,然后从 Maps 嵌入中复制你的 AIza... Key。接着他们运行:

curl "https://generativelanguage.googleapis.com/v1beta/files?key=$API_KEY"

结果不是 403 Forbidden,而是直接返回 200 OK。从这里开始,攻击者可以:

  • 访问私有数据:/files/ 和 /cachedContents/ 端点可能包含上传的数据集、文档和缓存的上下文。项目所有者通过 Gemini API 存储的任何内容都可以被访问。
  • 造成账单费用激增:Gemini API 的使用并非免费。根据模型和上下文窗口大小,攻击者如果不断调用 API,单个受害账号每天可能产生数千美元的费用。
  • 耗尽配额:这可能会彻底中断你合法的 Gemini 服务。

攻击者甚至不需要接触你的基础设施,他们只需从公共网页抓取一个 Key 就能完成攻击。

而当前墨西哥开发者 RatonVaquero 正在经历上述的一种情况。


漏洞披露后修复进展缓慢

实际上,Truffle Security 这家安全公司早在 2025 年 11 月就已经向 Google 的漏洞披露项目提交过相关报告,但当时 Google 将其认定为“预期行为”,并未引起重视。

直到同年 12 月 1 日,研究人员提交了一个来自 Google 自身基础设施的案例——一个在 2023 年部署于公开网站上的 API 密钥,如今仍然可以直接调用 Gemini API——Google 才重新评估这一问题。

随后,Google 将该报告从“客户问题”重新归类为“系统漏洞”,并提高了问题严重等级,开始推进修复工作,同时向 Truffle Security 索要那 2863 个暴露密钥的完整清单。

然而截至 2026 年 2 月 2 日,Google 向研究人员反馈称,仍在研究和努力修复问题。

随着 90 天漏洞披露窗口期的结束,Truffle Security 团队将这一问题公开出来。研究员 Joe Leon 表示,目前尚未看到任何“具体结果”。

社区讨论:问题究竟出在哪里?

如今 RatonVaquero 的遭遇也在开发者社区引发了讨论。

有网友怀疑,这起事件是否与最近流行的“氛围编码”有关,认为自动生成代码的工具可能会在无意中泄露密钥。但 RatonVaquero 很快回应称,他们并没有使用这类方式开发。

也有开发者给出了更现实的建议,“说实话,坚持联系 Google 可能是唯一的办法,不要放弃,希望总是存在的。”

对此,你怎么看这一问题?

参考:

https://old.reddit.com/r/googlecloud/comments/1reqtvi/82000_in_48_hours_from_stolen_gemini_api_key_my/

https://trufflesecurity.com/blog/google-api-keys-werent-secrets-but-then-gemini-changed-the-rules

https://www.theregister.com/2026/03/03/gemini_api_key_82314_dollar_charge

推荐阅读:

Agent取代App、机器人“盲区”、RAG成本失控……2026 奇点智能技术大会首批议题发布

万人大厂一夜裁员4000+人!她拼命用AI提效,却在凌晨12:30等来解雇通知

岗位一朝被Meta砍掉,工程师转头训练小狗敲键盘,竟靠Claude把乱码做成了游戏,还开源了!

未来没有前后端,只有 AI Agent 工程师。

这场十倍速的变革已至,你的下一步在哪?

4 月 17-18 日,由 ZEEKLOG 与奇点智能研究院联合主办「2026 奇点智能技术大会」将在上海隆重召开,大会聚焦 Agent 系统、世界模型、AI 原生研发等 12 大前沿专题,为你绘制通往未来的认知地图。

成为时代的见证者,更要成为时代的先行者。

奇点智能技术大会上海站,我们不见不散!

Read more

Flutter 三方库 gviz 的鸿蒙化适配指南 - 实现复杂的 Graphviz 拓扑图布局计算、支持 DOT 语言解析与自动化图谱生成

Flutter 三方库 gviz 的鸿蒙化适配指南 - 实现复杂的 Graphviz 拓扑图布局计算、支持 DOT 语言解析与自动化图谱生成

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 gviz 的鸿蒙化适配指南 - 实现复杂的 Graphviz 拓扑图布局计算、支持 DOT 语言解析与自动化图谱生成 前言 在进行 Flutter for OpenHarmony 的企业级应用开发中,特别是在处理网络拓扑、数据库 ER 图或编译器架构分析时,自动绘制复杂的图形结构是一项巨大挑战。gviz 是一个基于 Graphviz 设计思路的 Dart 库,它能将 DOT 描述语言转化为结构化的图谱对象模型。本文将指导大家如何在鸿蒙端利用该库高效构建动态拓扑。 一、原理解析 / 概念介绍 1.1 基础原理 gviz 充当了 DOT 源码与渲染引擎之间的桥梁。它解析外部输入的 DOT 文本,

By Ne0inhk
KWDB 3.1.0 在 Ubuntu 22.04 部署实战:TLS 配置、踩坑复盘与轻量压测

KWDB 3.1.0 在 Ubuntu 22.04 部署实战:TLS 配置、踩坑复盘与轻量压测

KWDB 作为一款易用性不断优化的数据库产品,其 3.1.0 版本在运维脚本、配置管理等方面的升级为部署带来了便利,但新手在单机部署过程中仍易因环境适配、依赖缺失、配置不当等问题踩坑。为帮助开发者快速落地 KWDB 单机环境,本文以 Ubuntu 22.04 为基础环境,从实战角度出发,完整拆解 KWDB 3.1.0 单机部署的全流程:不仅明确版本选型依据和部署目标,还细化了环境核查、安装包获取、依赖配置、部署脚本执行等关键操作,针对性解决部署中的高频问题,并通过服务验证、性能基线测试完成最小化验收,最终实现 “安装即能用、问题有解法、效果可验证” 的部署目标,为 KWDB 入门者提供清晰、可复现的实操指引。 文章目录 * 1. 版本与部署路线怎么选 * 2. 目标:这篇文章读完,能带走哪些“

By Ne0inhk

龙虾尝鲜记(2)——装ubuntu(续)

装 ubuntu 还折腾了好几下,现在终于把系统能稳妥了。回头再来记一下,给看到想弄龙虾的同学提个醒,对应工作先做到前面,免得遇到问题解决不了,还没入门就出门了。         一、系统版本的确定         这个问题我个人以为要结合自己的实际情况:如果是在虚拟机上装,建议选择 2404 LTS,相对稳定;如果是在实体机上装,要根据自己的硬件来避坑,据某 AI 说对 N 卡的支持不是很好,有特定的版本要求。还有就是是否强烈需要蓝牙、指纹、隐藏网络、摄像头等方面的功能。         因为装(实体机) 2404 2404 就是因为驱动(MX250)有些问题,折腾了好几下实在懒得折腾就问了下 AI,它给推荐了 Pop_OS 2404, 结果掉进更大的坑里:蓝牙键盘连上了打不出字来、指纹不能用(到现在也不能用,因为指纹不太关痛痒,没修复好就暂时作罢)、无法连接到隐藏网络……         指纹不能用问题不大,

By Ne0inhk
【Linux系统编程】(三十四)初识进程信号:Linux 软中断的核心奥秘

【Linux系统编程】(三十四)初识进程信号:Linux 软中断的核心奥秘

目录 前言 一、从生活场景理解信号:原来信号这么简单 1.1 快递的故事:完美映射信号处理流程 1.2 生活场景到 Linux 信号的核心结论 二、技术视角:Linux 进程信号的初体验 2.1 第一个实验:Ctrl+C的本质 —— 向前台进程发送 2 号信号SIGINT 代码实现:sig_hello.c 编译运行 2.2 第二个实验:修改信号处理方式 —— 让Ctrl+C不再终止进程 2.2.1 signal函数介绍 2.2.2 代码实现:sig_catch.c 2.2.

By Ne0inhk