FixVibe
Covered by FixVibehigh

CORS 構成ミス: 過度に寛容なポリシーのリスク

Cross-Origin Resource Sharing (CORS) は、Same-Origin Policy (SOP) を緩和するために設計されたブラウザーのメカニズムです。最新の Web アプリには必要ですが、不適切な実装 (リクエスターの Origin ヘッダーをエコーし​​たり、「null」オリジンをホワイトリストに登録するなど) を行うと、悪意のあるサイトがユーザーのプライベート データを漏洩する可能性があります。

CWE-942

影響

攻撃者は、脆弱なアプリケーション [S2] のユーザーから機密の認証済みデータを盗む可能性があります。ユーザーが脆弱なアプリにログインしているときに悪意のある Web サイトにアクセスすると、悪意のあるサイトはアプリの API に対してクロスオリジン リクエストを送信し、応答 [S1][S2] を読み取ることができます。これにより、ユーザー プロファイル、CSRF トークン、プライベート メッセージ [S2] などの個人情報が盗難される可能性があります。

根本原因

CORS は、サーバーがリソース [S1] のロードを許可されるオリジン (ドメイン、スキーム、またはポート) を指定できるようにする HTTP ヘッダー ベースのメカニズムです。脆弱性は通常、サーバーの CORS ポリシーが柔軟すぎるか、実装が不十分な場合に発生します。

  • 反映されたオリジン ヘッダー: 一部のサーバーは、クライアント リクエストから Origin ヘッダーを読み取り、それを Access-Control-Allow-Origin (ACAO) 応答ヘッダー [S2] にエコー バックします。これにより、あらゆる Web サイトがリソース [S2] に事実上アクセスできるようになります。
  • 設定が間違っているワイルドカード: * ワイルドカードを使用すると、任意のオリジンがリソースにアクセスできますが、資格情報 (Cookie や Authorization ヘッダーなど) [S3] を必要とするリクエストには使用できません。開発者は多くの場合、リクエスト [S2] に基づいて ACAO ヘッダーを動的に生成することで、これを回避しようとします。
  • ホワイトリスト「null」: 一部のアプリケーションは null オリジンをホワイトリストに登録します。これはリダイレクトされたリクエストまたはローカル ファイルによってトリガーされる可能性があり、悪意のあるサイトが null オリジンを装って [S2][S3] にアクセスできるようになります。
  • 解析エラー: Origin ヘッダーの検証時に正規表現または文字列の一致に誤りがあると、攻撃者が trusted-domain.com.attacker.com [S2] などのドメインを使用できる可能性があります。

CORS は、クロスサイト リクエスト フォージェリ (CSRF) [S2] に対する保護ではないことに注意することが重要です。

具体的な修正

  • 静的ホワイトリストを使用する: リクエストの Origin ヘッダー [S2] から Access-Control-Allow-Origin ヘッダーを動的に生成することは避けてください。代わりに、リクエストの送信元を信頼できるドメインのハードコードされたリスト [S3] と比較します。
  • 「null」オリジンを避ける: 許可されるオリジンのホワイトリスト [S2] に null を含めないでください。
  • 資格情報の制限: 特定のクロスオリジン インタラクション [S3] に絶対に必要な場合にのみ、Access-Control-Allow-Credentials: true を設定します。
  • 適切な検証を使用する: 複数のオリジンをサポートする必要がある場合は、Origin ヘッダーの検証ロジックが堅牢であり、サブドメインまたは類似したドメイン [S2] によってバイパスできないことを確認してください。

FixVibe がそれをテストする方法

FixVibe には、これがゲートされたアクティブ チェックとして含まれるようになりました。ドメイン検証後、active.cors は、合成攻撃者のオリジンを持つ同じオリジンの API リクエストを送信し、CORS レスポンス ヘッダーをレビューします。これは、公開資産のノイズを回避しながら、任意の起源、ワイルドカード認証付きの CORS、および非公開の API エンドポイント上の広範囲にオープンな CORS を反映していることを報告します。