8333 文字
42 分
【tl;dv事件】Firestoreのルールを1つ書き忘れて18万件の会議が丸見えになった話──公開設定と事後対応の教訓
この記事について

Claude(Anthropic)との共同編集により作成されました。

要約
  • 技術的な穴は1行のルール漏れでしかなかった。Firestore の meetings コレクションにだけテナント分離ルールが無く、無料アカウントで発行される Firebase トークンで全社の会議レコードを列挙できた。他のコレクション(users / transcripts / recordings 等)は正しく 403 を返していた
  • 漏れたのはメタデータだが、そこに会議参加用の conference ID が入っていた。実質的に進行中の他社会議に入れる鍵が配られていた
  • 最大の失敗は技術ではなく事後対応。2026-01-28 の報告から約6か月、CTO は一度も返信しなかった
  • 同社がバイブコーディングで作った社内ワールドカップ予想アプリの API も認証ゼロで、自社従業員19名の氏名・社用メールを返していた
  • Firebase / Supabase 系は公開設定がすべて。API キーは公開前提の設計で、実質的な防壁は Security Rules / RLS しかない

AI議事録サービス tl;dv(Too Long; Didn’t View)で、Cloud Firestore のテナント分離漏れにより全社の会議メタデータ 181,874 件が任意の無料ユーザーから閲覧可能になっていた、という事件が2026年8月に公表された。

この事件が刺さるのは、穴の作り方があまりにも普通だからだ。9つのコレクションにはきちんとルールが書いてあって、1つだけ忘れていた。それだけ。BaaS を使って個人開発している人なら、誰でも同じ位置に立っている。

一次情報(発見者の公開レポート/tl;dv 公式声明)をもとに時系列で整理する。あわせて、同社がバイブコーディングで作った社内ワールドカップ予想アプリの情報漏れ、Firebase の公開設定という鬼門、そして事後対応(脆弱性報告への応答・法的義務)の作法をまとめる。


tl;dv とは何か#

  • Google Meet / Zoom / Microsoft Teams にボットを同席させて録画・文字起こし・AI要約を行う AI 議事録プラットフォーム。ユーザー数 200万超を公称1
  • 保存されるのは商談、採用面接、人事評価、社内戦略会議など機微性の高い会話そのもの。
  • 公式のセキュリティページには SOC 2 / GDPR / EU AI Act 準拠、EU ホスティング、AES-256 暗号化などのバッジが並び、「セキュリティ上の問題は security@ へ。セキュリティチームは24時間以内に応答します」と明記されていた1

何が起きていたのか(技術的詳細)#

攻撃の流れ#

  1. tl;dv に無料アカウントでサインアップする。
  2. 通常のログインで得た JWT を gw.tldv.io/v1/users/firebase/token に投げると、Firebase トークンが返る1
  3. そのトークンで Firestore(projects/lmi-store/databases/(default))にクライアントから直接クエリできる。
  4. meetings コレクションにはテナント(組織)境界のルールが無く、全アカウント・全社の会議レコードが列挙できた1

1レコードに含まれていた情報#

フィールド中身危険度
作成者メールアドレス会議を録画した人の個人/社用アドレス中(名寄せ・フィッシングの材料)
conference IDGoogle Meet / Teams の参加可能なルームID
providerMeet / Teams / Zoom の別
statusrecording 等の録画状態高(下記)
timestamps開始・終了時刻

status: recording のレコードはいま生きている会議を意味する。常時およそ 1,000件がその状態でコレクション内に存在しており、コレクションをリアルタイムに監視して録画開始を検知 → conference ID を取得 → 招待されていない会議に入室、という一連の流れが成立した1。発見者は「ボットを組めば1,000件の生会議に同時入室できた」と指摘している1

根本原因は「他はできていたのに、ここだけ忘れた」#

発見者の検証では、users / chats / transcripts / clips / recordings / videos / notes / teams / organizationsすべて 403 を返していた。つまり Security Rules の書き方を知らなかったわけではなく、meetings だけがルールから漏れていた1

これは Firebase 公式が「安全でないルール」として名指しする典型パターンのうち、「認証済みユーザーなら誰でもアクセス可」(auth != null だけのチェック)に相当する6。Google は「Firebase はクライアントにデータへの直接アクセスを許すため、Security Rules だけが悪意あるユーザーを止める唯一の防壁である」と明記している5


露出の規模#

指標数値
会議レコード181,874件1
ユニークユーザー84,312人1
メールドメイン35,003ドメイン1
政府機関(.gov23か国(ブラジル、コロンビア、ペルー、ウクライナ、エルサルバドル、フィリピン、チリ、インドネシア、メキシコ、米国、カタール、マレーシア、ウズベキスタン、スリランカ、ハイチ、南アフリカ、ジャマイカ、ホンジュラス、アルゼンチン、タイ、日本、イスラエル、ベリーズ)1
大学Berkeley、東京大学、De La Salle、コロンビア国立大学 ほか多数1
企業三井倉庫(4拠点で484会議)三井不動産、HubSpot、Confluent、Mekari、AnyMind Group ほか1
ピーク月2025年7月、43,209会議1
追加調査:公開設定の会議27,334件の会議IDを走査し、1,000件超が公開設定招待者メール715件/228ドメインが露出1

日本関連(政府ドメイン、東京大学、三井倉庫、三井不動産、AnyMind)が明確に含まれている点は、国内利用者にとって他人事ではない。

実際に行われた PoC#

発見者は Firestore から取得した conference ID を使って、実際に2つの生会議へ入室している1

  • マレーシア教育省の Google Meet。参加者157名の前でプレゼン中。tl;dv のボットも参加者リストに並んでいた。
  • 米国の大手大学の学生21名のスタートアップ開発会議。画面共有でプロトタイプを見せながら「.edu メールのクライアントサイド検証を追加しよう」と話し、Supabase を画面上でセットアップしていた(発見者は「頼むから RLS を設定してくれ」と内心思った、と記している)。

この「画面の向こうで Supabase の RLS を設定し忘れそうな学生」と「Firestore のルールを1コレクションだけ忘れた tl;dv」は同じ失敗の大小違いであり、本件を象徴するエピソードになっている。


時系列#

日付出来事
2026年1月下旬発見者 BobDaHacker が Firestore のテナント分離バイパスを発見1
2026-01-28LinkedIn で共同創業者 Raphael Allstadt 氏へ連絡。数分で返信「CTOに報告してくれ、すぐ見る」。指示どおり CTO 宛にメール送付。報奨について尋ねると「CTO から折り返す」1
2026-01-29発見者「CTO からまだ連絡がない、まだ直っていない」1
2026-01-30Raphael 氏「チームがすぐに見直しているはずだ ❤️」1
2026-02-14発見者「メールは来ていないし脆弱性はまだ動く」→「彼から折り返す ☺️」1
2026-02-19Raphael 氏「対応中。時間がかかる。今後は CTO に直接連絡を」1
2026-03-06発見者「まだ直っていない」→ 既読(17:42)、返信なし1
2026-07-22発見者「まだ直っていない…」→ 返信なし1
2026-08-04発見者がフルディスクロージャー記事を公開。同日 Dark Reading が報道。公開時点で露出は継続中1,3,4
2026-08-05tl;dv の CTO Allan Bettarel 氏名義で公式声明を公開2

公式声明(2026-08-05)の主張#

tl;dv 側は次のように説明している2

  1. 「今年前半に、外部ペネトレーションテスト業者 Abicom の定期診断セキュリティ研究者からの責任ある開示の双方から、会議メタデータへのアクセスに関する脆弱性が判明。修正を投入し、Abicom が正式に修正完了を検証した」
  2. 「最近になって、同じ技術スタックの別の悪用経路が新たに判明。単一の脆弱性が6か月放置されたという主張には反論する——診断業者は2つの別個のベクターであると正式に証言している」
  3. 「2つ目のベクターは発覚から24時間以内に修正完了
  4. 両インシデントの共通項が Firebase であるため、Firebase をテックスタックから即時撤去する
  5. 「アクセスされ得たのはメタデータに限定(会議ID、conference ID、参加者メールとドメイン)。パスワード・録画・文字起こし・AIノート・課金情報は一切アクセスできない
  6. 「公開された文字起こし等が見えたのは、ユーザーが明示的に公開共有を ON にした会議に限られる(公開共有はデフォルト OFF のオプトイン)」
  7. 「生会議への入室はごく少数の事例であり、主催者が手動で入室許可したことで成立した。この経路も修正済み」
  8. 研究者への continuous update を怠ったのは自分の責任。開示対応プロセスを改善する」

発見者の主張と公式声明の食い違い#

論点発見者1tl;dv 公式2
未修正期間報告から約6か月放置、7月時点でも動作最初の脆弱性は数か月前に修正・検証済み。今回は別ベクターで24時間以内に修正
CTO の応答一度も返信なし連絡を怠ったのは事実、責任は自分にある」と謝罪
生会議への入室conference ID から入室できた(1,000件同時も可能と指摘)ごく少数、かつ主催者の手動承認を経ている
公開コンテンツ27,334件走査中 1,000件超が公開状態、招待者メール715件露出ユーザーがオプトインで公開した会議のみ、通常の検索・閲覧では到達不可

双方の主張が一致しているのは、Firebase まわりに穴があったこと研究者への応答を欠いたことの2点だけだ。それ以外(6か月なのか別ベクターなのか、実害の程度)は当事者間で見解が割れていて、第三者が公開情報から確定できる状態にはない。

なお、tl;dv は結果として Firebase 自体をスタックから撤去する判断をした2。これは「ルールを直す」ではなく「クライアント直アクセス型の BaaS をやめる」という、後述の教訓に直結するアーキテクチャ判断である。


ワールドカップ予想アプリ — バイブコーディングの縮図#

発見者がサブドメイン走査中に見つけたのが https://worldcup.tldv.io ——FIFA ワールドカップ2026の社内予想ゲームである1

事実関係#

  • Base44 でバイブコーディングされた社内向けアプリ。アプリ名は “World Cup Pick’em”、社内チーム名は “Too Long; Didn’t Score”1
  • GET /api/entities/Player がセッションクッキーなしで全プレイヤーレコードを返した(=認証ゼロ)1
  • 露出内容:43プレイヤー中 19名が @tldv.io の従業員、氏名・社用メールつき。開示先だった Raphael Allstadt 氏は2位(298点)で、個人の Gmail アドレスも API レスポンスに含まれていた1
  • Prediction / Fixture エンティティも同様に開放されていた1
  • グローバルリーダーボードの5位は “Super Duper CEO”1
  • 公式声明の追伸:「当社チームも今年、非エンジニアの同僚が遊びでバイブコーディングした小さなワールドカップ予想アプリをサブドメインで運用していた。顧客データや本番システムとは一切接続がなく、その後アクセスを厳格化した2

なぜこれが最悪なのか#

  1. サブドメインは隠れ蓑にならない*.tldv.io は証明書透明性ログ(CT ログ)とサブドメイン走査で即座に列挙される。URL を知らなければ辿り着けない、というのはアクセス制御ではない
  2. 顧客データでなくても軽くはない。出たのは従業員名簿(氏名+社用メール+一部個人メール)であり、標的型フィッシング・ソーシャルエンジニアリングの一次資料そのもの。しかもその会社は他社の会議を全部録画している
  3. Base44 のようなプラットフォームはエンティティから REST API を自動生成する。作った本人が API を書いた自覚すらないまま /api/entities/<Entity> が公開される。バイブコーディングでは自分が何を公開したかを作者が把握していないことが常態化する。
  4. 同じプラットフォームは2025年7月に認証バイパスの重大脆弱性も出している(後述)9。プラットフォーム側の穴とユーザー側の設定漏れが二重に乗る構造。
  5. 本業の脆弱性と同じ日に露見した。社内のお遊びアプリは、インシデント時に組織のセキュリティ文化を測る証拠として使われる。技術的深刻度は低くても、レピュテーション上の破壊力は本編に匹敵する

発見者の言葉:「何百万人もの会議を録画している会社が、社内のお遊びアプリをバイブコーディングして自社の従業員ディレクトリを漏らした。皮肉はアルデンテだ」1


公開設定という鬼門 — Firebase / Supabase / ノーコード系#

なぜ Firebase が鬼門なのか(構造的理由)#

理由内容
クライアントが DB を直接叩く通常の3層構成と違い、サーバー側の認可コードが存在しない。Google 自身が「Security Rules だけが唯一の防壁」と明記5
API キーが公開前提apiKey は「どのプロジェクトか」を示す識別子にすぎず、秘密ではない。キーを隠しても何も守れない8
テストモードの誘惑DB 作成時に「テストモード(誰でも読み書き可)」を選べる。公式も「誰でもデータを読み書きできる」と明記し、後で見直せと警告している7
auth != null の罠ログインすれば OK、は認証であって認可ではない。無料登録できるサービスでは実質的に全世界公開に等しい。Google が「安全でないルール」として名指し6
サービスごとにルールが別建てFirestore / Realtime Database / Cloud Storage でルールが独立。Firestore を固めても Storage が空いている(=Tea App 型の事故13)ことが起きる
コレクション単位の書き漏れ本件がまさにこれ。9つ固めて1つ忘れた1
ルールはフィルタではないクエリで絞っているから安全、は誤り。クライアントのクエリは攻撃者が書き換えられる

過去の大規模事例(Firebase 設定不備)#

時期事例規模
2024-03GitGuardian 調査:Firebase 設定不備由来のシークレット1,980万件の秘密情報12
2024-03〜04mrbruh / xyzeva / logykk による一斉走査(発端は AI 採用システム Chattr の侵害)916サイト1.25億件のユーザーレコード(氏名8,000万、メール1億、電話3,300万、平文パスワード2,000万、課金情報2,700万)11
2025-07Tea App(女性向け出会い安全アプリ):Firebase Storage バケットが無認証で公開本人確認セルフィー・運転免許証を含む72,000枚の画像、別途 100万件超のDM13
2026-08tl;dv(本件)181,874会議 / 84,312ユーザー / 35,003ドメイン1

「公開設定」は Firebase だけの話ではない#

  • Supabase の RLS:Lovable のショーケース 1,645アプリを走査したところ 170アプリ(10.3%)に重大な RLS 不備(CVE-2025-48757)が見つかった15
  • Base44 等のノーコード基盤:2025年7月、Wiz が api/apps/{app_id}/auth/register.../auth/verify-otp が無認証で叩ける IDOR を発見。app_id は URL や manifest.json平文で載っている非秘密値であり、これだけで他人のプライベートアプリに検証済みアカウントを作れた(SSO も迂回)9,10。Wix は開示当日に着手し24時間以内に修正、7/29 に公開9
  • 横断調査:Lovable / v0 / Bolt.new / Replit / Windsurf / Tempo Labs 製の 1,072アプリを走査した Symbiotic Security の調査(2026-06)では、98% が最低1件の欠陥を持ち、16%(431サイト)が Critical だった14

公開前チェックリスト(BaaS / バイブコーディング向け)#

A. データストアの公開設定

  • Firestore / RTDB / Cloud Storage の3つすべてのルールを個別に確認した(1つでも忘れない)
  • allow read, write: if true; および if request.auth != null; だけのルールが1つも残っていない6
  • 全コレクション/全バケットを列挙し、1つずつ「誰が読めるか」を書き出した(tl;dv は9個固めて1個忘れた)
  • テストモードで作った DB を本番前に必ず locked mode 相当へ書き換えた7
  • Supabase なら全テーブルで RLS が ENABLE、かつポリシーが auth.uid() ベースでテナントを絞っている
  • ルールのユニットテスト(Firebase Emulator の rules test)を CI に入れた
  • 未ログイン/別テナントの実アカウントの2つで、実際に curl して 403 を確認した

B. API・エンドポイント

  • 自動生成される REST/GraphQL エンドポイント(/api/entities/* 等)を全部列挙した
  • 認証だけでなく認可(テナント境界・オブジェクト所有者チェック)がある(IDOR / BOLA 対策)
  • Swagger / OpenAPI などのAPI ドキュメントを公開していない(Base44 事件では公開 Swagger が入口になった9
  • 識別子を秘密扱いしていないapp_id、conference ID、UUID は「知られない前提」で守らない)
  • Firebase App Check 等のアプリ証明を有効化した(Rules と併用してこそ意味がある)8

C. 「公開」の意味を UI で明示する

  • 「公開共有」トグルのデフォルトは OFF、ON にした時に何が誰に見えるかを明文で表示している
  • リンクを知っている人だけ、という設定はリンクが漏れたら全世界であることをユーザーに伝えている(tl;dv 自身も声明でこの UX 問題を業界共通課題として認めている2
  • 公開リソースの一覧と棚卸し導線を管理者に提供している

D. サブドメイン・お遊びアプリ

  • 社内向け・実験用も含め、自社ドメイン配下の全サブドメインを棚卸しした(CT ログで外部から丸見え)
  • お遊びアプリでも実在の従業員情報・社用メールを入れない(ダミーで足りる)
  • 本番ドメインではなく分離したドメイン/IP 制限/Basic 認証の裏に置いた
  • 「もう使っていない」ものは消す(放置=将来の記事の1セクション)

事後対応(インシデントレスポンス)の作法#

本件で最も批判されたのは技術的な穴そのものではなく、6か月応答しなかったことである1。同時期の Base44 事件では Wix が当日着手・翌日修正・13日目に悪用痕跡なしを確認・29日に公開という模範的な対応をしており9、対比が鮮明になった。

「報告を受け取れる状態」を先に作る#

施策内容
連絡先の明示security@ の公開に加え、/.well-known/security.txt を設置(RFC 9116)。tl;dv は連絡先を書いていたがそこに人がいなかった
VDP(脆弱性開示ポリシー)受付方法・応答期限・公開方針を明文化。ISO/IEC 29147 や、国内なら情報セキュリティ早期警戒パートナーシップガイドラインに沿うのが定石19,20
窓口の実運用「24時間以内に応答」と書くなら当番と SLA を実装する。書いた約束を守れないことは、書かないことより悪い
報奨の方針を先に決める本件では発見者が報奨を尋ね「CTO から折り返す」で放置された1払う/払わないは自由だが、方針を即答できる状態にしておく
国内の届出先自社で判断できない場合は IPA の届出窓口(IPA→JPCERT/CC 経由の調整)が使える18,19

報告を受けてからの初動(推奨タイムライン)#

時間軸やること
〜24時間受領を人間の言葉で返信(自動返信だけにしない)。担当者名と次回連絡日を伝える。再現確認に着手
〜48〜72時間影響範囲の切り分け。止血(ルール修正・エンドポイント閉鎖)を恒久対策より優先。アクセスログを保全
〜3〜5日個人データ漏えいに該当するなら個人情報保護委員会へ速報(後述)16,17
〜30日原因・影響範囲・再発防止策をまとめて確報。研究者へ修正完了の連絡と公開時期の調整
公開時事実・時系列・影響・対策を自社から先に出す。研究者の記事が先に出る状況を作らない

日本の法令上の義務(個人情報保護法)#

個人データの漏えい等で「個人の権利利益を害するおそれが大きい」類型に当たる場合、個人情報保護委員会への報告本人への通知が義務となる16,17

報告義務が生じる4類型17

  1. 要配慮個人情報が含まれる
  2. 不正利用により財産的被害が生じるおそれ
  3. 不正の目的をもって行われたおそれ(=外部攻撃・不正アクセスはここに該当しやすい)
  4. 1,000人を超える漏えい等、またはそのおそれ

2段階報告16,17

  • 速報:速やかに(概ね3〜5日以内
  • 確報:発覚日から30日以内不正の目的をもって行われたおそれがある場合は60日以内)。調査結果・影響範囲・再発防止策を含める

本件に引き付けると、「会議作成者のメールアドレス」は個人データであり、35,003ドメイン・84,312ユーザー規模は類型4を明確に超える。日本法人がこの規模の露出を認識したら、3〜5日以内の速報が必要になる水準である(tl;dv はドイツ/EU 拠点のため GDPR の72時間以内の監督機関通知が対応する義務)。

やってはいけない事後対応#

  1. 既読スルー。返信しないことは「対応していない」より強い悪印象を残す(既読17:42・返信なし、が記事に載る)1
  2. 「CTO から折り返す」と言って折り返さない。窓口を人に投げて放置するのが最悪パターン1
  3. コンプライアンスバッジで守られていると思う。SOC 2 も GDPR も1コレクションのルール漏れを検出しない1
  4. メタデータだから軽微、で押し切る。conference ID のようにメタデータが認可トークン同然のケースがある
  5. 発見者の記事が出てから初めて動く。8/4 記事 → 8/5 声明、という順序は「外圧で動いた」と読まれる1,2
  6. 反論だけの声明。tl;dv の声明は「2つの別ベクターだ」という反論に紙幅を割いたが、読者の記憶に残ったのはCTO 自身の謝罪部分だった2

良い事後対応の型(Base44 / Wix の例)#

Wiz が 2025-07-09 に Base44 の認証バイパスを報告してからの流れ9

日付出来事
2025-07-09Wiz が発見・報告。Wix が当日に受領確認し対応着手
2025-07-10修正を Wiz が検証
2025-07-13Wix が解決を確認、悪用の痕跡なしと報告
2025-07-29公開

24時間で塞ぐ→数日で悪用有無を確認→3週間で公開、という、責任ある開示の教科書的な進行になっている。技術的な穴の深刻度(SSO 迂回・全プライベートアプリ)は tl;dv より重かったが、対応の速さゆえに事件としての傷は浅かった


教訓まとめ#

技術面#

  1. BaaS は認可をクライアント側の設定ファイルに外出しするアーキテクチャだと理解する。Security Rules / RLS はアプリの認可ロジックそのものであり、コードと同じレビュー・テスト・CI の対象にする。
  2. 9個できていて1個忘れる、が現実の失敗モード。個別に頑張るのではなく、全リソースを列挙して網羅性を機械的に担保する(allow の全 match をテストで踏む)。
  3. 認証 ≠ 認可。無料登録できるサービスにおける auth != null は、実質的に全世界公開
  4. 識別子は防壁ではない。conference ID、app_id、サブドメイン名、共有リンク——知られなければ安全、は設計ではない。
  5. メタデータの危険度を、フィールド単位で評価する。本文は守った、で安心せず、そのメタデータで何ができるか(=入室できるか)を問う。
  6. 公開設定はデフォルト OFF、ON 時は影響を明示。ユーザーの「公開」理解と実装の「公開」が食い違うのは業界共通の UX 課題2
  7. バイブコーディング成果物は、自分が何を公開したか分からない前提で扱う。自動生成されたエンドポイント・エンティティを必ず外部から列挙して確認する。

プロセス・組織面#

  1. 脆弱性報告の受付は窓口ではなく当番。連絡先の記載は義務の半分でしかなく、応答する人がいて初めて機能する。
  2. 書いた SLA は守る。24時間以内に応答と掲げて6か月無視した、という一文が記事の主題になった1
  3. 止血を最優先する。恒久対策の設計を待つ間も、ルール1行で止められる出血は即座に止める
  4. 法令の時計は発覚から動く。速報3〜5日 / 確報30日(不正目的は60日)16,17、GDPR は72時間。調査完了を待つ義務ではない
  5. 社内のお遊びアプリも資産台帳に載せる。サブドメインの棚卸しは、外部からの偵察と同じ手段(CT ログ・DNS 列挙)で自ら行う。
  6. セキュリティは、他社の会話を預かる事業ほどビジネスそのもの。録画サービスにとって信頼は機能ではなく前提であり、事後対応の質がプロダクトの一部になる。
  7. 最終手段としてのアーキテクチャ変更。tl;dv は Firebase 撤去を選んだ2。設定を頑張り続けるより、設定ミスが致命傷にならない構造にする方が、組織の練度が足りない場合には正しいことがある。

バイブコーディングでサービスを出す人向け・最小限の運用セット#

領域最低限やること
公開前全データストアのルール/RLS を列挙して 403 を実証。自動生成 API を全列挙。ダミーではなく実際に curl
秘密情報サービスロールキー・Admin SDK 資格情報をフロントに置かない(公開 API キーとは別物8
公開設定共有トグルはデフォルト OFF。公開中リソースの一覧画面を用意
監視認証成功後の異常な列挙クエリ(大量 read)を検知。BaaS の使用量アラートは簡易的な侵害検知になる
窓口security@security.txt + 実際に見る人。返信テンプレを事前に用意
法務個人データを扱うなら、速報3〜5日/確報30日の報告フローを事故る前に書いておく16,17
台帳サブドメイン・実験アプリ・退役サービスの一覧を保守。使わないものは消す
定期月次でルール/RLS の差分レビュー。四半期で外部からのサブドメイン走査

この記事で確定させていないこと#

本件は当事者の主張が正面から対立している進行中の事案なので、どこまでが裏の取れた事実かを明示しておく。発見者の公開レポートと tl;dv 公式声明の双方を全文突き合わせ、Firebase / Firestore の挙動は Google 公式ドキュメント、日本の法令要件は個人情報保護委員会の公式ページで裏取りしている。

両当事者の一次情報で裏が取れているもの

  • Firestore meetings コレクションにテナント分離が無かったこと(公式も Firebase 起因の脆弱性と認めている)
  • 報告日 2026-01-28、公開日 2026-08-04 という日付
  • CTO が返信しなかったこと(CTO 本人が声明で認めている)
  • ワールドカップ予想アプリが Base44 製で、/api/entities/Player が無認証だったこと(公式も追伸で存在と「非エンジニアによるバイブコーディング」「その後アクセスを厳格化」を認めている)
  • Firebase の設計上の性質(Security Rules が唯一の防壁/API キーは公開前提/テストモードは誰でも読み書き可)
  • Base44 の脆弱性対応タイムライン、個人情報保護法の報告義務

発見者の実測値であり、独立検証はされていないもの

  • 181,874会議 / 84,312ユーザー / 35,003ドメインという規模(tl;dv 公式は件数に言及していない)
  • 常時約1,000件が status: recording だったという観測
  • 露出企業・機関の一覧(三井倉庫・三井不動産・東京大学・各国政府等)。これらは各組織が被害を公表したものではなく、実害の有無は不明

当事者の主張が食い違っていて、第三者が確定できないもの

  • 6か月未修正だったのか、別ベクターだったのか。tl;dv が根拠とする Abicom の署名入り証明書は「顧客・見込み客からの要請に応じて提供」とされており公開されていないため、公式側の反論も公開検証は不可能
  • 生会議にどれだけ容易に入れたのか(発見者は2件の入室 PoC を明記、公式は「ごく少数」「主催者の手動承認が必要」と条件を付す)
  • 露出はメタデータ限定なのかどうか。公式の「オプトインで公開した会議だけ」という説明と、発見者の「公開設定の会議1,000件超に到達した」という報告は両立しうる

なお、メタデータのみという表現は技術的には正しくても、conference ID が実質的な入室鍵である以上、リスク評価としては誤解を招きやすい。この記事ではその点を明示した。

また、バイブコーディング関連の統計はセキュリティ製品ベンダー発のものが多く、母集団の定義が不透明なものが混在する。Lovable の 170/1,645 という数値は二次情報経由で一次レポート未確認、Symbiotic Security の 98% はスキャナ提供ベンダー自身の調査(かつ「脆弱性の存在検知であり悪用はしていない」と明記)である点は割り引いて読んでほしい。Dark Reading 発の「ボット偽装で80%の成功率で入室」という記述は一次情報で裏取りできなかったため、この記事には含めていない。

法令要件は日本の個人情報保護法に基づく。tl;dv 自体はドイツ/EU 拠点であり、適用されるのは主として GDPR(72時間以内の監督機関通知)なので、日本の数値をそのまま同社の義務として読まないでほしい。


おわりに#

この事件で一番怖いのは、穴の作り方が特殊ではないところだ。Security Rules の書き方を知らなかったわけではない。9つ書けていて、1つ忘れた。それだけで18万件が出た。

バイブコーディングで誰でも作れるようになった以上、作る側はセキュリティもセットで引き受けるしかない。動いた瞬間の万能感のまま公開して、他人のデータを漏らすサービスを増やすなら、それは価値を生む前に害を出している。

ただ、tl;dv は CTO がいて SOC 2 も取っていて、9つのコレクションには正しくルールを書けていた会社だ。だからこの話の教訓は「勉強しろ」だけでは足りない。知識は抜けるが、手順は抜けを拾う。学んだかどうかに依存しない確認手順を1本、公開前の儀式として持っておくほうが効く。

個人開発で Firebase や Supabase を触っていると、「とりあえずテストモードで動かして、後で締める」を必ず一度は通る。その「後で」が来ないまま公開されたものが、CT ログとサブドメイン走査で普通に見つかる。全コレクション・全バケットを列挙して、未ログインと別テナントの2アカウントで実際に curl して 403 を確認する——この1本をやっておけば、少なくとも tl;dv と同じ穴は塞げる。

そしてもうひとつ。穴そのものより、報告が来たときに人がいるかどうかのほうが、あとから効いてくる


参考文献#

  1. tl;dv (Too Lazy; Didn’t Validate): 181,874 Meetings Left Wide Open|BobDaHacker(2026-08-04) https://bobdahacker.com/blog/tldv-hack
  2. Our thoughts on the darkreading.com article|tl;dv 公式(Allan Bettarel, CTO、2026-08-05) https://tldv.io/blog/our-thoughts-on-the-darkreading-com-article/
  3. AI Notetaker Lets Hackers Spy on Government, Corporate Video Calls|Dark Reading(2026-08-04) https://www.darkreading.com/application-security/ai-notetaker-spy-government-corporate-video-calls
  4. Inside the tl;dv Flaw That Exposed Live Government and Corporate Meetings|Netizen Blog(2026-08-04) https://blog.netizen.net/2026/08/04/inside-the-tldv-flaw-that-exposed-live-government-and-corporate-meetings/
  5. Basic Security Rules|Firebase 公式ドキュメント https://firebase.google.com/docs/rules/basics
  6. Fix insecure rules(安全でないルールの修正)|Firestore 公式ドキュメント https://firebase.google.com/docs/firestore/security/insecure-rules
  7. Get started with Cloud Firestore(テストモード/本番モードの選択)|Firebase 公式ドキュメント https://firebase.google.com/docs/firestore/quickstart
  8. Learn about using and managing API keys for Firebase|Firebase 公式ドキュメント https://firebase.google.com/docs/projects/api-keys
  9. Critical Vulnerability in AI Vibe Coding platform Base44|Wiz Blog(2025-07-29) https://www.wiz.io/blog/critical-vulnerability-base44
  10. Wiz Uncovers Critical Access Bypass Flaw in AI-Powered Vibe Coding Platform Base44|The Hacker News https://thehackernews.com/2025/07/wiz-uncovers-critical-access-bypass.html
  11. Misconfigured Firebase Instances Expose 125 Million User Records|SecurityWeek(2024) https://www.securityweek.com/misconfigured-firebase-instances-expose-125-million-user-records/
  12. Misconfigurations in Google Firebase lead to over 19.8 million leaked secrets|GitGuardian(2024-03) https://blog.gitguardian.com/misconfigurations-in-google-firebase-lead-to-over-19-8-million-leaked-secrets/
  13. Tea App Data Breach: What Happened and What Users Should Do|Security.org(2025-07) https://www.security.org/identity-theft/breach/tea-app/
  14. We Scanned 1,072 Vibe Coded Apps, 98% Had Security Flaws|Symbiotic Security(2026-06-02) https://www.symbioticsec.ai/blog/we-scanned-1-072-vibe-coded-apps-98-had-security-flaws
  15. Lovable security crisis: 48 days of exposed projects|The Next Web https://thenextweb.com/news/lovable-vibe-coding-security-crisis-exposed
  16. 漏えい等の対応とお役立ち資料|個人情報保護委員会 https://www.ppc.go.jp/personalinfo/legal/leakAction/
  17. 漏えい等報告・本人への通知の義務化について|個人情報保護委員会 https://www.ppc.go.jp/news/kaiseihou_feature/roueitouhoukoku_gimuka/
  18. サイバーセキュリティ 相談・届出窓口一覧|IPA https://www.ipa.go.jp/security/support/soudan.html
  19. 国内における脆弱性関連情報を取り扱う全ての皆様へ(情報セキュリティ早期警戒パートナーシップ)|経済産業省 https://www.meti.go.jp/policy/netsecurity/vul_request.html
  20. 脆弱性開示ポリシーと報奨金制度|PwC Japanグループ https://www.pwc.com/jp/ja/knowledge/column/awareness-cyber-security/vulnerability-disclosure-vdp-bbp.html
【tl;dv事件】Firestoreのルールを1つ書き忘れて18万件の会議が丸見えになった話──公開設定と事後対応の教訓
https://yurudeep.com/posts/aicoding/2026/20260812/
作者
ひらノルム
公開日
2026-08-12
ライセンス
CC BY-NC-SA 4.0