CSRF: 検証と対応
CSRFに関するテスト手法、証拠、監視、アラート、修復、およびインシデント対応手順を提供します。このリファレンスは採用境界、失敗動作、観測可能な証拠を固定しつつ、環境固有の制限は設定可能なままにします。
パッケージの状態: 人間によるレビュー準備が整ったリファレンスコンテキストです。契約とテストシナリオは完成していますが、採用実装がこれらを通過したという主張はしていません。
決定事項
CSRFについては、保護された境界での脅威モデルとサーバー強制の制御を採用します。このブロックは、代表的なポジティブ、境界、拒否、失敗、回復ケースから構築されたリリースおよびリグレッション契約として扱います。このパッケージはリファレンス契約であり、採用チームは自環境の証拠から数値制限、プロバイダー、管轄、運用責任者を選択しなければなりません。
範囲
- このテストブロックで説明されるCSRFのアクター、入力、出力、状態、ポリシーまたはスキーマバージョン、および外部に見える結果。
- プライマリおよび代替インターフェース、バックグラウンド作業、キャッシュ、統合、サポートパス、および同じ境界を検証できる証拠。
- リファレンスを安全に適用するために必要な採用固有の設定、展開、回復、および検証責任。
このブロックの外
- すべての採用者に対して普遍的なベンダー、フレームワーク、管轄、数値閾値、保持期間、またはサービスレベル目標を選択すること。
- パッケージ化されたシナリオが下流の実装で実行されたこと、またはこのリファレンスが法的、セキュリティ、アクセシビリティ認証を付与することを主張すること。
契約
- 制御を選択する前に、資産、アクター、信頼境界、攻撃者の能力、悪用ケース、仮定、および残存リスクを明示すること。
- 身元、ポリシー、整合性、新鮮さ、またはリソーススコープが確立できない場合は、保護された操作でフェイルクローズとすること。
- クライアント提供の身元だけを信用せず、アクター、認証情報、テナント、リソース、およびインフラ容量ごとに作業と試行を制限すること。
- 秘密情報や機密ペイロードをログに含めず、制御バージョン、相関、決定、および安全な理由を証拠として保持すること。
- 決定を伴うすべての実行に対して、フィクスチャバージョン、環境、設定、観測結果、および証拠の場所を記録すること。
- 製品の障害、依存関係の障害、テストインフラの障害、および結論が出せない証拠をレポートで区別すること。
- セッションに紐づく予測不可能なトークンや適切にスコープされたSameSiteクッキーなど、オリジン認識のアンチフォージェリ設計であらゆる状態変更ブラウザリクエストを保護すること。
- 有効な証拠なしに安全でないメソッドを拒否し、副作用の前に拒否し、GETによる状態変更を避け、リダイレクトや代替コンテンツタイプを再検証し、ログイン、ログアウト、アップロード、API、および埋め込みフローをテストすること。
実装ガイダンス
- リスククラスを網羅する最小の決定論的フィクスチャセットを構築し、プライバシー安全なレビュー後に本番由来のケースを追加すること。
- フレームワークやベンダーの詳細を選択する前に、CSRFの入力、出力、アクター、状態、不変条件、副作用、および証拠をモデル化すること。
- 適用されるCSRF契約またはポリシーバージョンをマテリアル状態と共に保存し、マイグレーション、リプレイ、およびサポートの判断が追跡可能であることを保証すること。
- 制御された展開の背後にあるパスを導入し、期待される結果と観測された結果を比較し、採用証拠が完了するまでテスト済みの回復ルートを保持すること。
失敗処理と安全策
- 制御の劣化は保護された境界を維持し、所有されたインシデント信号を発し、可用性維持のためだけにアクセスを許可しないこと。
- 無効または矛盾したCSRF状態は拒否または隔離され、実装は権限を広げたり効果を重複させたりする値を推測しないこと。
- リトライは制限され耐久的な身元を使用し、使い果たした後は検査可能な終端状態に達し、責任ある所有者がいること。
検証と運用
- クリーンな状態からスイートを2回実行し、順序、リトライ、並列実行が判定を変えないことを確認すること。
- CSRFの成功、拒否、検証失敗、依存関係の失敗、リトライの使い果たし、および回復を契約バージョン別に監視し、機密ペイロードの次元は含めないこと。
- ポリシー、スキーマ、依存関係、マイグレーション、または境界の変更後にペアのポジティブおよびネガティブフィクスチャを再実行し、得られた証拠を保持すること。
採用の前提条件
- 例の名前と値は具体的なフィクスチャであり、普遍的なデフォルトではない。採用者は文書化された証拠と所有権を通じてこれらを置き換えること。
- 採用システムは認証済みの身元、耐久的な操作または記録バージョン、制限されたテレメトリ、および制御された変更パスを提供できること。
このパッケージの実行可能に見える例はフィクスチャおよび受け入れ契約です。
構造とメタデータを検証するためにコレクションバリデータを実行し、ターゲットリポジトリでシナリオを翻訳・実行してから実装証拠を記録してください。