CSRF 攻撃の防止 preventing-csrf-attacks

CAUTION
AEM 6.4 の拡張サポートは終了し、このドキュメントは更新されなくなりました。 詳細は、 技術サポート期間. サポートされているバージョンを見つける ここ.

CSRF 攻撃の仕組み how-csrf-attacks-work

クロスサイトリクエストフォージェリ (CSRF) とは、有効なユーザーのブラウザーが、iFrame を介して悪意のあるリクエストを送信するために使用される、Web サイトの脆弱性です。 ブラウザーはドメイン単位で cookie を送信するので、ユーザーが現在アプリケーションにログインしている場合は、ユーザーのデータに問題が生じる可能性があります。

例えば、ブラウザーで管理コンソールにログインする場合を考えます。 リンクを含む電子メールメッセージが届きます。 リンクをクリックすると、ブラウザーに新しいタブが開きます。 開いたページには、認証済みのAEM forms セッションの cookie を使用して forms サーバーに悪意のあるリクエストを行う、非表示の iFrame が含まれています。 User Management は有効な Cookie を受け取るので、リクエストを渡します。

リファラー: ​リクエストの発信元のソースページのアドレス。例えば、site1.com の Web ページに site2.com へのリンクが含まれているとします。 このリンクをクリックすると、site2.com にリクエストが投稿されます。 このリクエストのリファラーは site1.com です。これは、このリクエストのリファラーが、ソースが site1.com のページから作成されたからです。

ホワイトリストに登録された URI: URI は、要求される forms サーバー上のリソースを識別します(例: /adminui や/contentspace)。 一部のリソースでは、外部のサイトからリクエストがアプリケーションにアクセスすることができます。こうしたリソースは、許可リスト登録済み URI と見なされます。AEM Forms サーバーはリファラーに対する許可リスト登録済み URI のチェックは行いません。

null リファラー: ​ブラウザーの新しいウィンドウまたはタブを開き、アドレスを入力して Enter キーを押した場合、リファラーは null です。リクエストはまったく新しく、親 Web ページからのリクエストではありません。したがって、リクエストのリファラーはありません。 forms サーバーは、次の場所から null リファラーを受け取ることができます。

  • Acrobatから SOAP または REST エンドポイントでおこなわれたリクエスト
  • AEM forms SOAP または REST エンドポイントで HTTP リクエストを実行するデスクトップクライアント
  • 新しいブラウザーウィンドウが開き、任意のAEM forms web アプリケーションのログインページの URL が入力されたとき

SOAP および REST エンドポイントで null リファラーを許可します。 また、すべての URI ログインページ( /adminui、/contentspace など)の null リファラーと、対応するマッピングされたリソースも許可します。 例えば、/contentspace にマッピングされたサーブレットは/contentspace/faces/jsp/login.jspで、null リファラーの例外である必要があります。 この例外は、Web アプリケーションでGETのフィルタリングを有効にした場合にのみ必要です。 null リファラーを許可するかどうかをアプリケーションで指定できます。 AEM forms の堅牢化とセキュリティの「クロスサイトリクエストフォージェリー攻撃からの保護」を参照。

許可されているリファラーの例外: ​許可されているリファラーの例外は、許可されているリファラーリストのサブリストです。このリファラーの例外からのリクエストはブロックされます。許可されているリファラーの例外は、Web アプリケーションに固有のものです。許可されているリファラーの例外のサブセットを、特定の Web アプリケーションの呼び出しに対して許可しない場合は、許可されているリファラーの例外を使用してリファラーをブラックリストに登録できます。許可されているリファラーの例外は、アプリケーションの web.xml ファイル内で指定されます(「ヘルプとチュートリアル」ページの「AEM Forms の堅牢化とセキュリティ」内の「クロスサイトリクエストフォージェリ―攻撃からの保護」を参照。)

許可されているリファラーの仕組み how-allowed-referers-work

AEM forms にはリファラーフィルタリング機能が用意されており、CSRF 攻撃の防止に役立ちます。 リファラーのフィルタリングの仕組みを次に示します。

  1. Forms サーバーが、呼び出しに使用される HTTP メソッドを確認します。

    • POSTの場合、forms サーバーはリファラーヘッダーのチェックを実行します。
    • GETの場合、CSRF_CHECK_GETS が true に設定されていない限り、forms サーバーはリファラーのチェックをバイパスします。この場合、リファラーのヘッダーがチェックされます。 CSRF_CHECK_GETS は、アプリケーションの web.xml ファイル内に設定されます。( 堅牢化とセキュリティガイド.)
  2. Forms サーバーが、要求された URI が許可リスト登録済みかどうかを確認します。

    • URI が許可リスト登録済みの場合、サーバーはリクエストを渡します。
    • リクエストされた URI が許可リスト登録済みでない場合、サーバーはリクエストのリファラーを取得します。
  3. リクエストにリファラーが含まれている場合、サーバーは、許可されているリファラーかどうかを確認します。 許可されている場合、サーバーはリファラーの例外をチェックします。

    • 例外の場合、リクエストはブロックされます。
    • 例外でない場合は、リクエストが渡されます。
  4. リクエストにリファラーがない場合、サーバーは null リファラーが許可されているかどうかを確認します。

    • null リファラーが許可されている場合は、要求が渡されます。
    • null リファラーが許可されていない場合、サーバーは要求された URI が null リファラーの例外であるかどうかを確認し、それに応じて要求を処理します。

許可されているリファラーの設定 configure-allowed-referers

Configuration Manager を実行すると、デフォルトのホストと IP アドレス、または Forms サーバーが「許可されているリファラー」リストに追加されます。 このリストは、管理コンソールで編集できます。

  1. 管理コンソールで、設定/User Management/設定/許可されているリファラー URL の設定をクリックします。許可されているリファラーリストがページの下部に表示されます。

  2. 許可されているリファラーを追加するには:

    • 許可されているリファラーボックスにホスト名または IP アドレスを入力します。 一度に複数の許可されているリファラーを追加するには、各ホスト名または IP アドレスを新しい行に入力します。
    • 「 HTTP Port 」ボックスと「 HTTPS Ports 」ボックスで、HTTP と HTTPS のどちらか、または両方を許可するポートを指定します。 これらのボックスを空のままにした場合、デフォルトのポート(HTTP の場合はポート 80、HTTPS の場合はポート 443)が使用されます。 ボックスに 0(ゼロ)を入力した場合、そのサーバー上のすべてのポートが有効になります。特定のポート番号を入力して、そのポートのみを有効にすることもできます。
    • 「追加」をクリックします。
  3. 許可されているリファラーリストからエントリを削除するには、リストから項目を選択して、「削除」をクリックします。

    許可されているリファラーリストが空の場合、CSRF 機能は動作を停止し、システムのセキュリティが低下します。

  4. 許可されているリファラーリストを変更した後、AEM forms サーバーを再起動します。

recommendation-more-help
a6ebf046-2b8b-4543-bd46-42a0d77792da