aichance developer tools
Leak Regression Lab / v0.1.1 / MIT

DBは守れた。
添付ファイルは?

Supabaseの「自分だけ見える」を、2ユーザーと匿名で確かめる。DBの行とファイルを同じ契約で検査し、設定を変えたあとも再実行できます。

Node 22+ · 依存パッケージなし · モデル呼び出しなし
通常のテストユーザーを使用。service-roleキー不要。

A public bucket can bypass file isolation
A持ち主
B別ユーザー / 匿名
DBの非公開ノート6 / 6 PASS
公開設定にした添付ファイル6 EXPOSURES

当方の合成データ環境で、実際のHTTP応答を確認。Supabaseの新たな脆弱性を報告するものではありません。

正しく使える持ち主の読み取りも必須境界をまたぐ別ユーザー・匿名・公開URL変えたら再検査JSON / HTML / 差分
01 / Recorded HTTP observations

設定を変えると、何が起こる?

実際に取得した検査結果を切り替えられます。これはv0.1.0の記録済み実測リプレイです。閲覧中のアプリを検査したり、認証情報を送信したりしません。

RECORDED · SYNTHETIC TEST DATA読み込み中
記録済みの実測を読み込んでいます
—

結果を取得できない場合、合格は表示しません。

—PASS
—FAIL
—INCONCLUSIVE
選んだ構造・設定の14検査。PASSは意図した内容の取得、または意図した拒否。
テスト対象アクセスする人経路HTTP結果
Auth → PostgREST → Storage。2つの通常ユーザーで実測。

全12実測のJSON · 条件・限界・再現方法 · v0.1.1の既存JWT入力の実測 · このデモの操作は外部利用実績に数えません。

02 / Your authorized test environment

自分のアプリで、同じ検査を。

既存のテスト環境と2ユーザーがある方向けです。Googleログイン・匿名サインインで得たSupabaseのテスト用JWTも指定でき、パスワード認証の追加は不要です。ログイン画面そのものは検査しません。

  1. 小さなソースZIPを展開Node 22以上。インストール・外部依存は不要です。
  2. テストデータを指定各ユーザーの行・非公開ファイルを1つずつ。設定例のID、期待する内容、ファイルのSHA-256を置き換えます。
  3. 認証情報は自分のPCだけに公開クライアントキーと2人のテストユーザーを指定。パスワード方式か、既存のSupabaseセッションJWTを選べます。値は .env.test で手元に保持します。
  4. 実行 → 変更 → もう一度実行新しい出力先で実行し、同じテスト契約の前後を比較します。
AFTER CONFIGURATION / Node 22+
node cli.mjs check --env .env.test \
  --config test-config.json \
  --out ./leak-check-before --live

# 設定変更後、別の出力先で再実行
node cli.mjs check --env .env.test \
  --config test-config.json \
  --out ./leak-check-after --live

node cli.mjs compare \
  --before ./leak-check-before/report.json \
  --after ./leak-check-after/report.json

0 = 指定範囲はPASS / 2 = 露出を確認 / 3 = 判定できない観測あり
初回の入力・設定エラーは1。出力フォルダは毎回新しくします。

認証・書き込み・削除を含むアプリ全体の安全性を保証するツールではありません。テスト対象と意図を指定した読み取り検査です。設定例・手順・検査の範囲を読む ↗

今回、実際に確認したこと

ローカルSupabase 1環境で、所有権2構造 × 設定6状態。公開ZIPを展開し直したコードで、実際の認証・DB・Storageに168の検査結果を記録しました(HTTP応答160件、持ち主が読めず未実行となった検査8件)。CLI 2.24.3 / Node 22.23.4。第三者の本番アプリや最新ホステッド環境の検証とは区別しています。

検査しないこと

書き込み・削除、署名付きURL、画像変換、キャッシュ残存、Realtime、RPC、業務ロール、ブラウザのセッション。1MiB超の応答も対象外です。意図的な公開データを非公開契約に含めないでください。

「自分のアプリで試せた」を教えてください。

利用版、所有権の構造、PASS / FAIL / INCONCLUSIVE、準備でつまずいた点だけで十分です。Xから来た場合はその旨も。認証情報・生データ・非公開パスは送らないでください。

試用結果を伝える ↗