
Supabase向けのオープンソースセキュリティ監査: 読み取り専用のMCPサーバー、CLIエージェント、Claude Skill。RLSの設定ミス、露出したキー、危険な関数を検出し、修正用SQLを含むスコア付きレポートを返します。ホスト版: Locksoup。
データベースバックエンドのセキュリティ監査。 「audit my database」と尋ねるだけで、スコア付きレポートと正確な修正コードが得られます。
Claude Skill(Supabase、MongoDB)、任意のAIクライアント向けの読み取り専用MCPサーバー、または独自のモデルを使用するCLIエージェント(両方ともSupabase)として動作します。
→ 自分で実行したくない場合は? Locksoup がホスト版です:スケジュールされた再チェックとアラートを備えたSupabaseセキュリティ監査。
2026-10-01 (v1.0.1)
2026-09-30 (docs)
evals/mcp_client.py、評価システム m。v1.0.0 (2026-09-30): MCPサーバーリリース
auditプロンプト、カタログリソース。エンドツーエンドでベンチマーク済み: サーバーをstdio経由で駆動するモデルがテストF1 0.865、クリティカル再現率1.0を記録。BYPASSRLSを持つ読み取り専用ロール、全20クエリ。anon/authenticatedが取り消されていれば、公開されているとは報告されません。026。uvx/pipxコマンドでgit+https://github.com/Farenhytee/[email protected]。Claude Codeプラグインは自動的に固定されます。--deepはツールを使用するエージェントを実行し、ベンチでは同じスコアを約5倍のコストで記録しました。v0.2.1 (2026-09-30)
v0.2.0 (2026-09-29)
--fix: 選択した検出結果の修正SQLを出力します。実行されることはありません。2026-09-29
uvx --from git+… sentinel-mcp)とエージェント(pipx install "database-sentinel[agent] @ git+…")のワンコマンド。sentinel-mcp --role-sqlが読み取り専用ロールのセットアップSQLを出力します。2026-09-28
auditプロンプト、パターンカタログをリソースとして。独自のLLMが分析を行うため、無料です。sentinel-audit)。任意のOpenAI互換モデル(OpenRouter、OpenAI、ローカルOllama)で動作するLangGraphパイプライン。Claude Codeは監査スキルとMCPサーバーを一度にインストールします(uvが必要):
claude plugin marketplace add Farenhytee/database-sentinel
claude plugin install database-sentinel@database-sentinel
Supabaseユーザー: 読み取り専用ログインを作成し(ステップ1)、Claude Codeで/plugin configure database-sentinel@database-sentinelを実行します。その後、Audit my databaseと尋ねてください。
その他のMCPクライアント、および完全なセットアップ: MCPガイド
スキルのみ(Claude Codeが自動的に認識します):
git clone https://github.com/Farenhytee/database-sentinel.git ~/.claude/skills/database-sentinel
CLIエージェント(Supabase、独自のモデルを持ち込み):
pipx install "database-sentinel[agent] @ git+https://github.com/Farenhytee/database-sentinel"
export SENTINEL_BASE_URL=http://localhost:11434/v1 SENTINEL_MODEL=<model> # Ollama, or any OpenAI-compatible API + SENTINEL_API_KEY
sentinel-audit --dsn "postgresql://sentinel_auditor:<password>@<host>:5432/postgres" \
--rest-url https://<ref>.supabase.co --anon-key <anon key> --repo ./my-app
デフォルトの監査は1つのプロンプトとanon-probe検証です。--deepは代わりにツールを使用するエージェントを実行します: ベンチでは同じ精度で、約5倍のコスト。--fixは選択した検出結果の修正SQLを出力します。実行されることはありません。
| バックエンド | パターン | 例 |
|---|---|---|
| Supabase | 27 (カタログ) | RLS無効、フロントエンドのservice-roleキー、USING (true)、RLSをバイパスするビュー、公開されたSECURITY DEFINER関数、ポリシー内のuser_metadata、mass assignment、公開バケット |
| MongoDB | 20 (カタログ) | MongoBleed (CVE-2025-14847)、認証無効、0.0.0.0/0 Atlas許可リスト、サーバーサイドJS、特権アプリユーザー |
完全な表は付録Aにあります。
| バックエンド | スキル | MCPサーバー / エージェント |
|---|---|---|
| Supabase | ✅ | ✅ |
| MongoDB | ✅ | 予定 |
| Firebase, Postgres, MySQL, クロスバックエンド | 予定 | 予定 |
MIT。例外: database_sentinel/agent/、database_sentinel/mcp_server/、database_sentinel/kb/はAGPL-3.0です(それぞれのLICENSEを参照)。
Supabase
| 重大度 | パターン | 内容 |
|---|---|---|
| 🔴 CRITICAL | RLS_DISABLED | 行レベルセキュリティのないテーブルは完全に公開される |
| 🔴 CRITICAL | SERVICE_ROLE_EXPOSED | フロントエンドコード内のservice_roleキーがすべてのセキュリティをバイパスする |
| 🔴 CRITICAL | POLICIES_BUT_NO_RLS | ポリシーは書かれているがRLSが有効化されていない |
| 🟠 HIGH | USING_TRUE | 書き込みまたはプライベートデータに対するUSING (true) |
| 🟠 HIGH | VIEW_NO_SECURITY_INVOKER | ビューがRLSをバイパスし、所有者として実行される |
| 🟠 HIGH | SECURITY_DEFINER_EXPOSED | RLSをバイパスする関数がAPI経由で呼び出し可能 |
| 🟠 HIGH | USER_METADATA_IN_POLICY | ポリシーがユーザー編集可能なメタデータを信頼している |
| 🟠 HIGH | MASS_ASSIGNMENT | ユーザーが自分の行の特権/請求カラムを更新できる |
| 🟠 HIGH | GHOST_AUTH | 未確認のサインアップが認証済みセッションを取得する |
| 🟠 HIGH | JWT_SECRET_EXPOSED | 署名シークレットの漏洩により攻撃者が任意のトークンを偽造できる |
| 🟡 MEDIUM | + 17 その他 | anti-patterns.md |
MongoDB