tl;dv(Too Lazy; Didn't Validate):181,874 场会议门户大开
我于 2026 年 1 月 28 日报告了此事。如今已是 2026 年 7 月。六个月过去了。Firestore 数据库依然完全敞开。CTO 从未回复。我猜是我的邮件太长,他们根本没看。
什么是 tl;dv?
tl;dv(Too Long; Didn't View)是一个 AI 会议录制平台。它会将一个机器人放入你的 Google Meet、Zoom 或 Teams 通话中,录制一切内容,进行转写,并用 AI 生成摘要。拥有超过 200 万用户。有投资者支持。受到 LinkedIn 销售圈意见领袖群体半数人的推崇。
他们存储你的销售电话、求职面试、绩效评估、内部战略会议。就是那种有人说“本次通话正在录音”后,大家尴尬一笑,然后接着分享 45 分钟商业机密的内容。
漏洞
当你注册 tl;dv 时,平台会用 JWT 对你进行身份验证,并通过 gw.tldv.io/v1/users/firebase/token 将其换取一个 Firebase token。该 token 让你能够查询他们位于 projects/lmi-store/databases/(default) 的 Firestore 数据库。
meetings 集合没有任何租户隔离。任何通过身份验证的 tl;dv 用户都可以查询平台上所有账户的每一场会议。每条会议记录都会向你提供创建者的电子邮件地址、会议 ID(这是一个可加入的 Google Meet 或 Teams 房间)、提供商、录制状态以及时间戳。
对于处于录制状态的会议,那个会议 ID 就是一个实时的、正在进行的通话。你可以实时监控这个集合,看到一场会议开始录制,抓取 ID,然后不请自来地闯入某人的通话。在任何时刻,该集合中大约有 1,000 场状态为 recording 的会议。一千个暴露了会议 ID 的实时通话。一个拥有机器人的攻击者可以同时加入所有这些通话。

我加入了 2 场会议
我这么做了。
我从 Firestore 抓取了一个会议 ID,加入了一场属于马来西亚教育部的实时 Google Meet。一位女士正在向超过 157 名参与者做演示。tl;dv 机器人已经在参与者列表里。我也在同一场通话中。没有人邀请我。是 Firestore 数据库邀请的。

我还参加了一个电话会议,会上有来自美国一所顶尖大学的学生正在构建一个创业应用。会议里有 21 个人。他们全程共享屏幕展示整个项目,讨论原型设计,而且,我没开玩笑,他们还在讨论如何为 .edu 邮箱地址添加客户端验证。他们还在屏幕上实时配置 Supabase,我当时满脑子想的都是“请设置 RLS 策略”,因为大多数人都不会设置,然后你就会落得像 tl;dv 那样的下场。
我特别想说点什么。“嘿,你们可能也需要服务端验证。”但这只是一个概念验证,不是咨询。

规模
我查询了 Firestore 的 meetings 集合,发现有 181,874 条会议记录,属于 84,312 个独立用户,覆盖 35,003 个邮箱域名。
来自 23 个国家的政府会议:巴西、哥伦比亚、秘鲁、乌克兰、萨尔瓦多、菲律宾、智利、印度尼西亚、墨西哥、美国、卡塔尔、马来西亚、乌兹别克斯坦、斯里兰卡、海地、南非、牙买加、洪都拉斯、阿根廷、泰国、日本、以色列和伯利兹。全部是 .gov 域名。政府雇员在一个允许任何免费用户枚举全部数据的平台上录制通话。
来自伯克利、东京大学、德拉萨大学、哥伦比亚国立大学的大学会议。数十个 .edu 和 .ac 域名。
来自其余全部 35,000 个域名的企业会议。三井仓库(四个地区办事处共 484 场会议)、三井不动产、HubSpot、Confluent、Mekari、AnyMind Group。每一个用过 tl;dv 的公司,其会议元数据都存放在同一个未受保护的集合中。
峰值月份是 2025 年 7 月,共 43,209 场会议。最繁忙的时间段:UTC 时间周三下午 2 点,7,804 场会议。周三的站会时段。
但还有更多
我想知道实际有多少内容是可以访问的。默认情况下会议是私密的(意味着你无法观看视频或查看文字记录),所以我抓取了 27,334 个会议 ID,检查哪些是公开的。超过 1,000 个是公开的。715 个受邀者邮箱地址在 228 个域名中被暴露。
亮点:一场巴西政府保护会议(PACTO Mata Atlântica),与会方包括 WWF、大自然保护协会、保护国际基金会、WRI 以及圣保罗州政府。还有乌克兰数字化转型部的会议。一场 HubSpot 销售电话。以及涉及哥伦比亚国立大学和智利 Cámara Verde 的会议。
意面基础设施
tl;dv 用意大利面名称来命名他们的微服务。子域名扫描发现了 cappellini、carbonara、fusilli、pasta、penne、puttanesca-v0 和 ravioli,全部位于 tldv.io 之下。一整家意大利餐厅份量的 Express 服务器。
太长不看;没得分
在探索他们的子域名时,我发现了 https://worldcup.tldv.io。这是一个为 tl;dv 员工打造的、基于 Base44 的 2026 年 FIFA 世界杯 vibe coding 预测游戏。它叫“World Cup Pick'em”,他们的内部团队名为“Too Long; Didn't Score”。挺可爱的。
Player 实体 API 完全没有身份验证。GET /api/entities/Player 无需会话 cookie 即可返回所有玩家记录。43 名玩家。其中 19 人是 @tldv.io 员工,包含全名和公司邮箱。
Raphael Allstadt,我的披露联系人,他给了我模糊的保证然后就没下文了,以 298 分排名第二。他的个人 Gmail 也在 API 响应中。全球排行榜上的第 5 名玩家是“Super Duper CEO”。这个是谁,你们自己猜吧。
Prediction 和 Fixture 实体同样完全开放。一家记录数百万人会议的公司,用 vibe coding 做了一个内部娱乐应用,结果泄露了自己的员工名录。这讽刺意味简直恰到好处(al dente)。

披露
1 月 28 日,我在 LinkedIn 上给 Raphael Allstadt 发消息,告诉他我发现了一个会泄露用户数据的重大漏洞。他在几分钟内回复:“谢谢!你能向我们的 CTO 报告吗?我们会立即处理!”我发了邮件。他说“谢谢!”我问是否有奖励。“我们的 CTO 会联系你的,”他说。
CTO 再也没有联系过我。
1月29日:“顺便说一句,你们的CTO还没联系我,而且问题也没修复。”1月30日,Raphael:“我相信团队很快就会审核的❤️”2月14日:“没收到邮件,漏洞依然有效。”Raphael:“他会回复的☺️”我告诉他也许应该修复漏洞,而不是让客户暴露在风险中。2月19日:“我们正在处理。这需要一些时间,但请放心我们一定会跟进。关于后续沟通,我建议您联系我们的CTO。”
那位从未回复的CTO。就是那位CTO。
3月6日:“仍然没有修复。”Raphael在下午5:42已读。没有回复。
7月22日:“仍然没有修复……”没有回复。
他们的安全页面就像一座奖杯陈列柜。SOC2合规。GDPR合规。欧盟AI法案合规。托管在欧盟。AES-256加密。一段创始人承诺视频。六个合规徽章一字排开。页面底部埋着一行小字:“如果您发现了需要我们处理的隐私或安全问题,请随时通过[email protected]联系我们。我们的安全团队将在24小时内回复。”我直接给CTO发了邮件。六个月。没有回复。他们的Firestore数据库的可用性都比他们的收件箱高。
| 日期 | 事件 |
|---|---|
| 2026年1月下旬 | 发现Firestore租户隔离绕过漏洞 |
| 2026年1月28日 | 通过LinkedIn联系Raphael Allstadt,并给CTO和Raphael发送邮件 |
| 2026年1月29日 | Raphael给出含糊的安抚性回复 |
| 2026年2月至3月 | 多次跟进。CTO始终未回复。 |
| 2026年7月 | 仍未修复。仍无回复。祝用餐愉快。 |
致tl;dv
你们的平台记录着人们最敏感的对话。求职面试。销售谈判。政府简报。你们的用户信任你们,把明确同意录制的内容托付给了你们。
请修复Firestore租户隔离。Firestore安全规则就是为此而存在的。你们在其他所有集合上都已经正确实现了这一点(users、chats、transcripts、clips、recordings、videos、notes、teams、organizations全部返回403)。你们只是忘了meetings。
给世界杯应用加上身份验证,或者把它下线。你们的员工目录只需一次GET请求就能拿到。
请回应安全研究人员。尤其是当他们告诉你们,你们平台上的每一场会议,任何拥有免费账户的人都能查询到的时候。
再见,感谢所有的意大利面 :3