FixVibe

// docs / baas security / umbrella scanner

BaaS 設定ミススキャナ: ユーザーよりも先に公開データパスを見つける

Backend-as-a-Service プロバイダ — Supabase、Firebase、Clerk、Auth0、Appwrite、Convex — はすべて同じ形でセキュリティに失敗します: プラットフォームが妥当なデフォルトを出荷し、開発者 (または AI コーディングツール) がショートカットに手を伸ばし、未認証攻撃者と顧客データの間に公開パスが開きます。BaaS 設定ミススキャナは、攻撃者と同じように外部からそのパスを探る唯一のツールです。本記事では、5 つの再発する設定ミスクラスをマッピングし、FixVibe アンブレラ BaaS スキャンの仕組みを説明し、4 つの主要プロバイダを比較し、BaaS 対応スキャナを汎用 DAST ツールと対比します。

なぜ BaaS 設定ミスは再発する形を持つのか

すべての BaaS プラットフォームは同じアーキテクチャに従います: マネージドバックエンドと、ブラウザからそれと通信する薄いクライアント SDK。ブラウザ向けクライアントは、バックエンドに自身を識別させるために 何らかの 資格情報 — anon キー、公開可能キー、Firebase プロジェクト ID — を必要とします。その資格情報は意図的に公開されており、アーキテクチャの安全性はプラットフォームレベルのアクセス制御 (RLS、ルール、許可リスト) が役目を果たすことに依存しています。

AI コーディングツールはこのアーキテクチャの上に構築しますが、プラットフォーム制御層を内面化しません。クライアント SDK を正しく配線し、プラットフォームのデフォルト寛容ルール (チュートリアル親和性のために存在する) を受け入れ、出荷します。再発する形は: 公開資格情報 + 寛容なデフォルトルール + 欠落したオーバーライド = データ露出。以下の 5 つの設定ミスクラスはすべてこの形のバリアントです。

5 つの再発する設定ミスクラス

これらはすべての BaaS プロバイダで現れます。完全なスキャンは使用中のすべてのプロバイダに対して 5 つすべてをカバーします:

クラス 1: ブラウザバンドル内の誤ったキー

ブラウザが公開 / anon 同等物の代わりにシークレット / 管理キー (Supabase service_role、Firebase Admin SDK プライベートキー、Clerk sk_*、Auth0 クライアントシークレット) を出荷します。ブラウザは制約のない管理クライアントになります。FixVibe のバンドルシークレットチェックがカバーします。

クラス 2: アクセス制御層が無効化または寛容

RLS がオフ、Firebase ルールが if true、Auth0 コールバックリストがワイルドカード。ブラウザ内の資格情報は正しいものですが — それを制約するはずのプラットフォームレベルの境界が役目を果たしていません。

クラス 3: 機密リソースの匿名読み取り

匿名読み取り可能な Firestore コレクション、匿名で列挙可能な Supabase ストレージバケット、匿名アクセス可能な Auth0 管理 API。スキャンは問います: 「資格情報なしで、私は何を読めるか?」

クラス 4: 本番環境のテストモード遺物

本番デプロイ内のテストキー (pk_test_*、sb_test_*)、ライブドメインから到達可能な dev モード Firebase アプリ、本番より弱い設定のテストテナント Auth0 アプリ。スキャンはランタイムキーを期待される本番プレフィックスと比較します。

クラス 5: Webhook 署名検証が欠落

Clerk webhooks, Stripe webhooks, Supabase webhooks all sign their payloads. A handler that doesn't verify the signature is a database-write primitive for any attacker who guesses the URL.

FixVibe アンブレラ BaaS スキャンの仕組み

FixVibe の BaaS フェーズは 3 つのステージで実行され、それぞれが別個の検出を生成します:

  1. Stage 1 — find the providers. FixVibe loads the deployed app and identifies which BaaS providers it talks to — Supabase, Firebase, Clerk, Auth0 and others — from the configuration the browser receives.
  2. Stage 2 — provider checks. For each provider found, FixVibe runs that provider's checks: open Supabase tables, open Firebase rules, Clerk and Auth0 key exposure, and service-tier credentials in the bundle. Each provider is checked independently — a Supabase finding doesn't block the Firebase scan.
  3. ステージ 3 — プロバイダ間相関。 スキャナは検出を相互参照します。漏洩した Supabase サービスロールキーと欠落した RLS の組み合わせは、どちらか一方の検出よりも深刻です — レポートはこれを表面化します。同じアプリ内の複数の ID プロバイダ (Clerk + Auth0 + カスタム認証) はレビュー用にフラグされる構造的検出です。

すべてのプローブはパッシブです: リソースごとに最大 1 回の匿名読み取り、レスポンス形状は記録されますが行内容はページングまたは保存されません。書き込みおよび変更プローブは検証済みドメイン所有権の背後でゲートされ、未検証のターゲットに対しては決して実行されません。

プロバイダごとにスキャナが何を見つけるか

各 BaaS プロバイダには異なる表面と異なるスキャン戦略があります。カバーされる内容:

  • Supabase: テーブルでの RLS 欠落、匿名で列挙可能なストレージバケット、バンドル内の漏洩した service_role JWT または sb_secret_* キー、匿名 OpenAPI 一覧経由で露出したスキーマ。Supabase RLS スキャナとストレージチェックリストを参照。
  • Firebase: Firestore、Realtime Database、Cloud Storage 上の if true ルール、匿名で列挙可能な Storage バケット、欠落した App Check 強制。Firebase ルールスキャナとIf-true ルール解説を参照。
  • Clerk: バンドルされた sk_* シークレットキー、本番の pk_test_*、欠落した Webhook 署名検証、ワイルドカード許可オリジン。Clerk チェックリストを参照。
  • Auth0: バンドルされたクライアントシークレット、有効化された Implicit グラント、ワイルドカードコールバック / ログアウト URL、SPA での欠落 PKCE。Auth0 チェックリストを参照。

BaaS スキャナと汎用 DAST / SAST ツールの比較

BaaS 対応スキャナは他のツールがやらない特定の作業をします。比較:

観点FixVibe (BaaS 対応 DAST)汎用 DAST (Burp / ZAP)SAST / SCA (スニック / セムグレップ)
BaaS カバレッジSupabase、Firebase、Clerk、Auth0、Appwrite のネイティブチェック汎用 Web クロール、プロバイダ固有プローブなしリポジトリのみの静的解析、本番検証なし
セットアップ時間URL → run → results usually in under a minute数時間: スパイダー、認証、スコープを構成1 日: リポジトリ CI に統合
何を証明するかHTTP レベルの証拠を伴う本番ランタイム露出Web アプリ脆弱性 (XSS、SQLi)、BaaS は手動構成経由デプロイされるかもしれない、されないかもしれないコードパターン
JavaScript バンドル検査Every shipped chunk, with provider-aware key detection限定的 — 文字列ベース grep のみあり、ただしリポジトリ側のみ、デプロイ側なし
継続的スキャン月次 / デプロイ時に API + MCP 経由手動、スケジュールは自分で構成コミットごと (コードには良いがランタイムには盲目)
ソロ / 小チームの価格Free plan; paid plans for active and repo scansBurp Suite Professional is paid (Community Edition is free); ZAP is free and open sourceSnyk and Semgrep both offer free tiers; paid tiers add scale

Where a BaaS scan fits

A BaaS-aware scan checks what your live app exposes. Pair it with FixVibe's GitHub repo scans or another code scanner for source and dependency issues, and with a manual penetration test before a major launch or compliance audit.

よくある質問

アンブレラスキャンはアプリが 2 つの BaaS プロバイダ (例: Supabase + Clerk) を使用している場合に動作しますか?

はい — プロバイダフィンガープリントとプロバイダごとのプローブは独立しています。スキャナは両方を検出し、両方のチェックスイートを実行し、プロバイダ間相関を報告します (例: RLS 欠落と並んで email をクレームとして送る Clerk 由来の Supabase JWT テンプレート)。

これはアプリに対して Burp Suite Pro を実行することとどう違いますか?

Burp は汎用 DAST ワークベンチです。Burp は箱から出してすぐには PostgREST、Firestore、Auth0 コールバックパスを理解しません — スコープを手動で構成し、拡張機能を書き、レスポンスを解釈する必要があります。FixVibe は組み込み BaaS プローブと BaaS 形状の証拠フォーマッティングを伴います。Burp は汎用 Web アプリカバレッジ (XSS、SQLi、ビジネスロジック) で勝ち、FixVibe は BaaS 固有検出で勝ちます。

App Check (Firebase) や attestation (Apple / Google) はどうですか?

App Check は機会主義的な外部スキャンがすべてのプローブで 403 を返すようにします — 悪意のあるボットには正しい結果です。アテステーションされていないクライアントからの FixVibe スキャンは同じように振る舞います。App Check を有効にしていて FixVibe が依然として検出を報告する場合、それはルールがアテステーションされたクライアントにも開いていることを意味し、それが真のリスクです。App Check + 正しいルールが多層防御のパターンです。

スキャナは修正を検証できますか?

Yes — re-run after applying the fix. Findings keep the same identity across runs, so a finding that was open in run 1 and absent in run 2 is proof the fix landed.

次のステップ

本番 URL に対して無料の FixVibe スキャンを実行してください — BaaS フェーズチェックは無料プランを含むすべてのプランで提供されます。プロバイダ固有の深堀りについては、このセクションの個別記事が各プロバイダを詳細にカバーしています: Supabase RLS、Supabase サービスキー露出、Supabase ストレージ、Firebase ルール、Firebase if-true、Clerk、Auth0。

// baas サーフェスをスキャン

他の誰かよりも先に、開いているテーブルを見つけてください。

本番 URL を入力してください。FixVibe はあなたのアプリが通信する BaaS プロバイダを列挙し、公開エンドポイントを識別し、未認証クライアントが読み書きできる内容を報告します。無料、インストール不要、カード登録不要。

  • 無料プラン — 月 3 回のスキャン、サインアップにカード不要。
  • パッシブな BaaS フィンガープリント — ドメイン所有確認不要。
  • Supabase、Firebase、Clerk、Auth0、Appwrite ほか。
  • Coding-agent prompts where code/config applies, plus provider-console steps for hosted BaaS fixes.
BaaS 設定ミススキャナ: ユーザーよりも先に公開データパスを見つける · FixVibe