TL;DR:
创业未半而中道“欠款”!墨西哥三人小团队因Gemini API密钥泄露,48小时被刷爆57万人民币,谷歌反手掏出一句“责任共担”拒绝免单。这不仅是开发者的配置疏忽,更是谷歌把“公钥”偷偷升级成“金库钥匙”引发的结构性惨案。
“我现在处于震惊和恐慌之中。”
这不是什么恐怖小说的开头,而是一个真实发在 Reddit 上的求助帖。发帖人是墨西哥一家只有三名成员的初创公司联创。他们平时的谷歌云(GCP)账单每月大约只有 180 美元,属于那种“精确到每一分钱”的省钱流创业。
但就在 2 月 11 日到 12 日这短短 48 小时里,命运给他们开了个价值 **82,314.44 美元(约合人民币 57 万)**的玩笑。1 几乎所有的费用都来自 Gemini 3 Pro 的图像和文本调用。从 180 到 8.2 万,这 457 倍的跨度,中间隔着一家公司的生死线。
一夜回到解放前:57万账单是怎么炼成的?
当这位开发者发现账单暴涨时,第一反应是标准的“运维自救三部曲”:删密钥、改权限、加双重认证。动作不可谓不快,但由于云服务计费存在一定的延迟,等账单真正“结算”出来时,他们发现自己已经站在了破产边缘。
面对这笔巨款,谷歌客服淡定地祭出了大招:“共享责任模式”。翻译成白话就是:平台负责房子结实,你负责管好钥匙;现在你把钥匙丢了,小偷进屋搬空了金库,这钱还得你付。1 2
调侃式点评: 谷歌这一手“共享锅任”玩得贼溜,意思是我提供刀,你把自己捅了,这止血贴得你自己买。
但问题的核心在于:这把“钥匙”是怎么丢的?开发者百思不得其解,他们并没有把密钥写在公共 GitHub 仓库里。
技术大揭秘:这玩意儿到底怎么工作的?
安全研究机构 Truffle Security 揭开了这个隐藏在谷歌 API 架构里的“深坑”。3 原来,这并不是简单的“丢钥匙”,而是谷歌在没通知主人的情况下,偷偷把“门禁卡”升级成了“提款卡”。
长期以来,谷歌的 API 密钥(那种以 AIza... 开头的字符串)被分为两类用途:
- 公开标识: 用于 Google Maps 或 Firebase,谷歌甚至在官方文档里手把手教你:“直接把这串代码粘进 HTML 源码里就行!”2 这在当时是安全的,因为这些密钥只能用来加载地图,别人偷走了也顶多是帮你付点地图费。
- 敏感认证: 比如调用昂贵的 Gemini 模型。
骚操作来了: 如果你在同一个 Google Cloud 项目中启用了 Gemini API,你三年前为了显示地图而放在网页源码里的那个“公钥”,会在后台静默升级,自动获得调用 Gemini 的权限。2
这就好比你三年前给了邻居一张家门钥匙让他帮忙浇花,结果三年后你在家里装了个自动柜员机,而那把旧钥匙居然能直接把柜员机打开。更绝的是,整个过程没有任何弹窗提醒,也没有邮件通知。3
Truffle Security 扫描发现,网上竟然有 2863 个 存在此类权限提升漏洞的密钥,其中甚至包括谷歌自家的网站。3 2
幸存者偏差:如果你也用Gemini,该如何保命?
面对巨额账单,Reddit 网友们吵翻了天。
有人心疼开发者:“如果是我,我现在已经飞到谷歌总部跪求退款了。” 也有人站平台:“没有设置硬性消费上限(Budget caps),这锅开发者得背一半。”1
但一位老牌云服务专家指出了一个很扎心的问题:云计费通常不是实时的。等你收到“消费过快”的邮件时,可能已经是几个小时甚至一天后了。在 AI 时代,这种计费延迟就是小公司的“碎骨机”。
为了不让你的创业梦想变成“给谷歌打工”,请务必检查以下几点:
- 物理隔离: 把 Gemini API 放在一个独立的 GCP 项目里,千万别和 Google Maps 这种需要前端展示的服务混用。
- 权限设限: 别偷懒用“不受限制”的密钥,在 GCP 后台手动勾选该密钥只能访问哪些服务。
- 强制熔断: 设置硬性消费限额,虽然可能有延迟,但总比没有强。
目前,谷歌已经开始修复这个逻辑漏洞,但对于那家墨西哥小公司来说,这 57 万的账单依然是一座翻不过去的大山。3 毕竟,对于大厂来说,这只是一个漏洞报告;而对于开发者,这可能是一次终结。
引用
-
Gemini 账户 48 小时被盗刷 57 万,三人创业团队站在破产边缘 · InfoQ · 冬梅 (2026/3/10) · 检索日期 2026/3/10 ↩︎ ↩︎ ↩︎
-
仅因Gemini API密钥被盗:“AI账单远超我们的银行余额” · 36氪 (2026/3/10) · 检索日期 2026/3/10 ↩︎ ↩︎ ↩︎ ↩︎
-
Google API Keys Weren't Secrets, But Then Gemini Changed The Rules · Truffle Security · Joe Leon (2026/2/25) · 检索日期 2026/3/10 ↩︎ ↩︎ ↩︎ ↩︎