Уязвимость была зарегистрирована 28 января 2026 года. К моменту публикации прошло уже полгода — база Firestore до сих пор открыта. CTO компании так и не ответил на обращения; вероятно, письма оказались слишком длинными для чтения.

Что такое tl;dv

tl;dv (Too Long; Didn't View — «слишком долго, чтобы смотреть») — платформа для записи AI-совещаний. Бот подключается к звонку в Google Meet, Zoom или Teams, записывает разговор, транскрибирует его и генерирует резюме с помощью AI. У платформы более 2 миллионов пользователей, инвесторы за спиной и целая армия LinkedIn-инфлюенсеров из сферы продаж, рекомендующих сервис.

На серверах tl;dv хранятся звонки по продажам, собеседования, performance-ревью, внутренние стратегические сессии — тот самый контент, где кто-то произносит «этот звонок записывается», все нервно смеются, а затем следующие 45 минут делятся коммерческими секретами.

Уязвимость

При регистрации в tl;dv платформа выдаёт пользователю JWT-токен, который обменивается на Firebase-токен через gw.tldv.io/v1/users/firebase/token. Этот токен открывает доступ к базе Firestore по пути projects/lmi-store/databases/(default).

Коллекция meetings не имела изоляции по клиентам (tenant isolation). Любой авторизованный пользователь tl;dv мог запросить данные обо всех совещаниях всех аккаунтов на платформе. Каждая запись содержала email создателя встречи, ID конференции (пригодный для подключения к комнате Google Meet или Teams), провайдера, статус записи и временные метки.

Для встреч со статусом recording этот ID конференции ведёт на живой, активный звонок. Можно наблюдать за коллекцией в реальном времени, увидеть момент начала записи, забрать ID и без приглашения зайти в чужой звонок. В любой момент времени в коллекции находится порядка 1000 совещаний со статусом recording — тысяча активных звонков с открытыми идентификаторами конференций. Атакующий с ботом мог подключиться ко всем сразу.

Звонок, который записывается

Проверка на практике: два подключения

Проверка прошла по факту.

Получив ID конференции из Firestore, исследователь подключился к активному Google Meet Министерства образования Малайзии. Женщина выступала перед более чем 157 участниками. Бот tl;dv уже присутствовал в списке участников. Исследователь оказался в том же звонке — никто его не приглашал, доступ дала база Firestore.

Звонок 1

Второе подключение — к звонку, где студенты крупного американского университета разрабатывали стартап-приложение. В звонке было 21 человек, они демонстрировали весь проект на экране, обсуждали прототипы и — без иронии — говорили о необходимости добавить клиентскую валидацию для email-адресов с доменом .edu. Параллельно на экране настраивали Supabase, и единственной мыслью было: «пожалуйста, настройте RLS-политики», потому что большинство этого не делает — и в итоге получается история вроде tl;dv.

Хотелось вмешаться и подсказать: «серверная валидация тоже не помешает». Но это была демонстрация уязвимости, а не консультация.

Звонок 2

Масштаб проблемы

Запрос к коллекции meetings в Firestore показал 181 874 записи совещаний, принадлежащих 84 312 уникальным пользователям из 35 003 email-доменов.

Среди них — государственные совещания из 23 стран: Бразилии, Колумбии, Перу, Украины, Сальвадора, Филиппин, Чили, Индонезии, Мексики, США, Катара, Малайзии, Узбекистана, Шри-Ланки, Гаити, ЮАР, Ямайки, Гондураса, Аргентины, Таиланда, Японии, Израиля и Белиза. Все домены — .gov. Госслужащие записывали звонки на платформе, которая позволяет любому пользователю бесплатного тарифа перебрать всю базу целиком.

Университетские встречи из Беркли, Токийского университета, De La Salle, Национального университета Колумбии — десятки доменов .edu и .ac.

Корпоративные совещания — из всех остальных 35 000 доменов. Mitsui-Soko (484 совещания из четырёх региональных офисов), Mitsui Fudosan, HubSpot, Confluent, Mekari, AnyMind Group. Метаданные совещаний любой компании, когда-либо использовавшей tl;dv, оказались в одной незащищённой коллекции.

Пиковым месяцем стал июль 2025 года — 43 209 совещаний. Самый загруженный временной слот: среда, 14:00 UTC, 7804 совещания — час стендапов посреди рабочей недели.

И это ещё не всё

Отдельно проверялось, сколько реального контента доступно за пределами метаданных: по умолчанию встречи приватны (видео и транскрипт закрыты), поэтому из 27 334 собранных ID совещаний была проверена публичность каждого. Публичными оказались более 1000. Из них извлечено 715 email-адресов участников из 228 доменов.

Среди находок — бразильское государственное совещание по охране природы (PACTO Mata Atlântica) с участниками из WWF, The Nature Conservancy, Conservation International, WRI и правительства штата Сан-Паулу. Встречи Министерства цифровой трансформации Украины. Звонок отдела продаж HubSpot. Сессии с участием Национального университета Колумбии и чилийской Cámara Verde.

Инфраструктура из пасты

Микросервисы tl;dv названы в честь видов пасты. Сканирование поддоменов выявило cappellini, carbonara, fusilli, pasta, penne, puttanesca-v0 и ravioli — всё под доменом tldv.io. Целый итальянский ресторан из Express-серверов.

Too Long; Didn't Score

При изучении поддоменов обнаружился https://worldcup.tldv.io — внутренняя игра-предсказание для сотрудников tl;dv на тему чемпионата мира по футболу 2026 года, собранная на Base44 в стиле «vibecoding». Игра называется «World Cup Pick'em», а внутренняя команда разработчиков — «Too Long; Didn't Score». Забавно.

API сущности Player не требует авторизации вовсе. Запрос GET /api/entities/Player возвращает все записи игроков без сессионной куки: 43 игрока, из них 19 сотрудников @tldv.io с полными именами и корпоративными email.

Рафаэль Аллштадт, контакт по вопросам раскрытия уязвимостей, дававший невнятные заверения и затем пропавший, занял 2-е место с 298 очками. Его личный Gmail также попал в ответ API. Игрок №5 в общем рейтинге — «Super Duper CEO». Догадаться, кто это, не составит труда.

Сущности Prediction и Fixture также полностью открыты. Компания, записывающая совещания миллионов людей, собрала на скорую руку внутреннее развлекательное приложение, которое утекает собственный справочник сотрудников. Ирония получилась al dente.

Vibecoded-приложение про чемпионат мира

Хроника раскрытия

28 января исследователь написал Рафаэлю Аллштадту в LinkedIn, сообщив об обнаружении крупной уязвимости, приводящей к утечке пользовательских данных. Ответ пришёл в течение нескольких минут: «Спасибо! Можете сообщить об этом нашему CTO, мы сразу же разберёмся?» Письмо было отправлено. В ответ — «Спасибо!». На вопрос о вознаграждении: «Мой CTO с вами свяжется».

CTO не связался.

29 января: «Ваш CTO ещё не выходил на связь, и уязвимость не устранена». 30 января, Рафаэль: «Уверен, команда очень скоро всё рассмотрит ❤️». 14 февраля: «Письма так и не было, уязвимость всё ещё работает». Рафаэль: «Он свяжется ☺️». В ответ было предложено просто исправить уязвимость и не оставлять клиентов под угрозой. 19 февраля: «Мы в процессе. Нужно немного времени, но будьте уверены — мы доведём дело до конца. Для дальнейшей связи рекомендую обращаться к нашему CTO».

Тот самый CTO, который так и не ответил.

6 марта: «Всё ещё не исправлено». Сообщение прочитано Рафаэлем в 17:42. Ответа не последовало.

22 июля: «Всё ещё не исправлено...» Ответа не последовало.

Страница безопасности компании выглядит как витрина наград: соответствие SOC2, GDPR, EU AI Act. Хостинг в ЕС. Шифрование AES-256. Видео с обещаниями основателя. Шесть значков соответствия в ряд. И в самом низу — одна строчка: «Если вы обнаружили проблему с приватностью или безопасностью, о которой нам следует знать, пожалуйста, всегда сообщайте нам по адресу security@tldv.io. Наша команда безопасности ответит в течение 24 часов». Письмо CTO было отправлено напрямую. Прошло полгода. Ответа нет. У базы Firestore, судя по всему, аптайм выше, чем у почтового ящика компании.

Дата Событие
Конец января 2026 Обнаружено отсутствие изоляции клиентов в Firestore
28 января 2026 Обращение к Рафаэлю Аллштадту (LinkedIn) и письмо CTO + Рафаэлю
29 января 2026 Рафаэль даёт невнятные заверения
Февраль – март 2026 Множественные напоминания. CTO не отвечает.
Июль 2026 Уязвимость всё ещё не устранена. Ответа так и нет. Buon appetito.

Обращение к tl;dv

Платформа записывает самые чувствительные разговоры людей: собеседования, переговоры о продажах, государственные брифинги. Пользователи доверили сервису контент, на запись которого дали явное согласие.

Изоляция клиентов в Firestore должна быть исправлена — для этого существуют правила безопасности Firestore. Для всех остальных коллекций (users, chats, transcripts, clips, recordings, videos, notes, teams, organizations) всё настроено корректно и возвращает 403. Забыли только про meetings.

Приложение про чемпионат мира нужно либо защитить авторизацией, либо отключить — до справочника сотрудников там всего один GET-запрос.

Стоит также отвечать исследователям безопасности — особенно когда речь о том, что любое совещание на платформе доступно для запроса любому пользователю с бесплатным аккаунтом.

So long and thanks for all the pasta :3