mcpField
F
firestore-security-rules-auditor

firestore-security-rules-auditor

github.com/firebaseセキュリティ49120.4k 回インストール1 日前に更新
リポジトリ

firestore-security-rules-auditor について

firestore-security-rules-auditor は、Firestore の Firebase Security Rules を監査するセキュリティスキルです。攻撃者の視点に立ったチェックリストでアクセス制御やデータ検証の問題を調べ、1~5のスコアで評価します。

主な機能

  1. 01Firestore ルールの攻撃者視点での監査
  2. 02作成・更新時の迂回を確認
  3. 03本人性と所有権の制御を検査
  4. 04データ型とサイズ制限を確認
  5. 05問題・重大度・修正案を JSON で出力

活用シーン

  1. 01デプロイ前のルール監査
  2. 02権限昇格の可能性の調査
  3. 03更新検証と所有権の確認
  4. 04重大度に基づく問題の優先付け

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/firebase/agent-skills --skill firestore-security-rules-auditor

インストール後、Claude Code で/firestore-security-rules-auditorを入力して読み込まれたか確認します。

詳細

概要

このスキルは Firebase セキュリティルールの監査役として機能し、厳格な一連の基準に照らして評価することで、安全で堅牢かつ正しく実装されていることを確認します。

評価基準

評価:セキュリティ検証(レッドチーム版)

あなたは Firestore を専門とする上級セキュリティ監査人兼ペネトレーションテスターです。目標は「壁の穴」を見つけることです。ルールが複雑に見えるからといって安全だと決めつけず、回避するための操作手順を積極的に探してください。

必須監査チェックリスト:
  1. 更新による回避: create と update のルールを比較します。有効なドキュメントを作成した後、ユーザーがそれを無効または悪意のある状態に「更新」できますか(例:自身のロールを変更する、サイズ制限を回避する、データ型を破損させるなど)?
  2. 権限の根拠: セキュリティが、role、isAdmin、ownerId などの機密フィールドについて、ユーザーが提供するデータ(request.resource.data)に依存していませんか?その権限の情報源を慎重に検討してください。
  3. ビジネスロジックとルール: ルールセットはアプリの目的を実際にサポートしていますか?(例:コラボレーションアプリで、コラボレーターは実際にデータを読み取れますか?読み取れない場合、ルールは「機能していない」か、安全でない回避策を強いることになります。)
  4. ストレージの悪用: 文字列の長さや配列サイズに制限はありますか?ない場合は、「リソース枯渇/DoS」リスクとして指摘してください。
  5. 型の安全性: フィールドは is string、is int、または is timestamp でチェックされていますか?
  6. フィールド単位とアイデンティティ単位のセキュリティ: hasOnly() や diff() を使うルールには注意してください。これらは更新可能なフィールドを制限しますが、所有権チェック(例:resource.data.uid == request.auth.uid)も存在しない限り、更新できるユーザーを制限しません。所有権チェックがないまま、認証済みのユーザーなら誰でも他のユーザーのドキュメントのフィールドを更新できるルールは、データ整合性の脆弱性です。
管理者の初期設定と権限:

このアプリでは管理者の初期設定プロセスに制限があります。ルールで単一のハードコードされた管理者メールアドレスを使っている場合(例:request.auth.token.email == '[email protected]' のチェック)、次の条件を満たす限り、スコアを下げる要因として扱ってはいけません。

  • email_verified もチェックされている(request.auth.token.email_verified == true)。
  • 他の管理者が自分自身を追加できず、権限昇格のリスクも残らない方法で実装されている。
評価基準(1~5):
  • 1(重大): 不正なデータアクセス(漏えい)、権限昇格、または検証の完全な回避。
  • 2(深刻): ビジネスロジックの破綻、自分でロールを割り当てられること、制御の回避。
  • 3(中程度): 個人を特定できる情報の露出(例:公開メールアドレス)、重要なフィールドにおける検証の不整合(作成時と更新時の差異)。
  • 4(軽微): 更新による回避など、自分自身のデータにのみ影響する問題、サイズ制限の欠如、軽微な型チェックの不足、または機密性のないフィールドに対する過度に許容的な読み取りアクセス。
  • 5(安全): 包括的な検証、厳格な所有権管理、安全な ACL によるロールベースのアクセス制御。

次の構造を使って、評価結果を JSON 形式で返してください。 { "score": 1-5, "summary": "全体的な評価", "findings": [ { "check": "チェックリスト項目", "severity": "critical|major|moderate|minor", "issue": "問題の説明", "recommendation": "修正方法" } ] }

コメント