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

C++中线程同步与互斥的4种方式介绍、对比、场景举例

C++中线程同步与互斥的4种方式介绍、对比、场景举例

在C++中,当两个或更多的线程需要访问共享数据时,就会出现线程安全问题。这是因为,如果没有适当的同步机制,一个线程可能在另一个线程还没有完成对数据的修改就开始访问数据,这将导致数据的不一致性和程序的不可预测性。为了解决这个问题,C++提供了多种线程同步和互斥的机制。 1. 互斥量(Mutex) 互斥量是一种同步机制,用于防止多个线程同时访问共享资源。在C++中,可以使用std::mutex类来创建互斥量。 #include<thread>#include<mutex> std::mutex mtx;// 全局互斥量int shared_data =0;// 共享数据voidthread_func(){for(int i =0; i <10000;++i){ mtx.lock();// 获取互斥量的所有权++shared_data;

By Ne0inhk
从 0 到 1:用 Trae 插件 Builder 模式开发端午包粽子小游戏

从 0 到 1:用 Trae 插件 Builder 模式开发端午包粽子小游戏

前言 Trae插件获取:https://www.trae.com.cn/plugin 在编程的世界里,效率就是生命。我们开发者常常为了一个项目的搭建,重复着创建文件夹、初始化项目配置、编写样板代码等一系列繁琐的操作,耗费了大量的时间和精力。而如今,Trae 插件的 Builder 模式横空出世,为我们的编程之旅带来了一束全新的光亮。它就像是一个智能化的Ai工程师,能够理解我们的需求,快速搭建起项目的框架,极大地减少了重复性工作,让我们得以将更多的精力投入到核心逻辑的开发中。由于马上就要端午节了,那么接下来我将利用Trae插件的builder模式,带大家从0到1开发一个端午包粽子小游戏。 Trae插件builder模式介绍 什么是Trae 插件的Builder 模式呢?通俗点来说,就好比你想盖一座房子,正常情况下,你得先画图纸、挖地基、砌墙、装窗户等等,一步步来,这中间要操心好多琐碎又重复的活儿。而 Builder 模式就像是有个智能的建筑工人,你跟它说 “我要盖一座两层楼的别墅,要有个大大的客厅、三间卧室、一个花园”

By Ne0inhk
介绍基于 C++ 的运动恢复结构(SfM)的三维重建

介绍基于 C++ 的运动恢复结构(SfM)的三维重建

介绍基于 C++ 的运动恢复结构(SfM)的三维重建 今天主题是运动恢复结构(sfm),让我们通过一系列智能手机拍摄的图像,来探索“运动恢复结构”(Structure from Motion)技术,从而还原一个小场景的三维布局。请选择附近的物体,并拍摄若干张照片,确保相邻照片之间有一定的重叠区域。为了获得更精确的结果,请使用棋盘格对相机进行标定——从不同角度拍摄几张棋盘格图像。这一标定步骤将为整个流程提供关键信息(相机内参)。 引言 运动恢复结构(Structure from Motion,简称 SfM)是一种计算机视觉与摄影测量技术,它能够从一组二维图像中重建场景的三维结构,并同时确定各图像对应的相机位姿。通过识别图像间的共同特征并求解相应的数学方程,SfM 将多张图像转化为一个连贯的三维表示,广泛应用于三维建模、增强现实以及历史景观重建等领域。 基于深度学习的图像匹配与三维重建算法MASt3R和MASt3R-SfM详解 特征提取 特征提取是指从图像中识别并提取具有显著性和可重复性的模式或关键点。这些特征点可在多张图像之间进行匹配,从而建立图像间的对应关系,为后续

By Ne0inhk
【C++】多态

【C++】多态

目录   1. 多态的概念 2. 动态多态的定义及实现 2.1 动态多态的构成条件 2.1.1 虚函数 2.1.2 实现动态多态的两个必须的重要条件: 2.1.3 虚函数的重写/覆盖 2.1.4 动态多态场景的一个选择题 2.1.5 虚函数重写的一些其他问题 • 协变(了解) • 析构函数的重写 2.1.6 override 和 final关键字 2.1.7 重载/重写/隐藏的对比 3. 纯虚函数和抽象类 4. 动态多态的原理 4.1

By Ne0inhk