CSRF 攻撃の仕組みクロスサイトリクエストフォージェリ(CSRF)とは、有効なユーザーのブラウザーが悪質なリクエストの送信(iFrame を介する場合あり)に利用される、Web サイトの脆弱性のことです。ブラウザーは Cookie をドメインベースで送信するので、ユーザーが現在アプリケーションにログインしている場合、ユーザーのデータが侵害される可能性があります。
例えば、ブラウザーで Administration Console にログインしている場合を想定します。リンクを含む電子メールメッセージを受信したとします。リンクをクリックすると、ブラウザーで新しいタブが開かれます。開かれたページには、認証済みの LiveCycle セッションの Cookie を使用して LiveCycle サーバーに悪質なリクエストを行う非表示の iFrame が含まれています。User Management は有効な Cookie を受け取るので、そのリクエストが渡されることになります。
CSRF に関する用語- リファラー:
- リクエストの発信元のソースページのアドレス。例えば、site1.com 上の Web ページに site2.com へのリンクが含まれています。このリンクをクリックすると、リクエストが site2.com にポストされます。このリクエストは site1.com のページを発信元としているので、このリクエストのリファラーは site1.com です。
- ホワイトリスト登録済み URI:
- URI はリクエスト対象の LiveCycle サーバー上のリソースを識別します(例:/adminui、/contentspace)。一部のリソースでは、外部のサイトからリクエストがアプリケーションにアクセスすることができます。こうしたリソースは、ホワイトリスト登録済み URI と見なされます。LiveCycle サーバーはリファラーに対するホワイトリスト登録済み URI のチェックは行いません。
- null リファラー:
- ブラウザーの新しいウィンドウまたはタブを開き、アドレスを入力して Enter キーを押した場合、リファラーは null です。リクエストはまったく新規で、親 Web ページから生成されたものではないので、このリクエストのリファラーはありません。LiveCycle サーバーは、以下の場合に null リファラーを受け取ることができます。
SOAP または REST エンドポイントで Acrobat からリクエストが送信された場合
LiveCycle の SOAP または REST エンドポイントで任意のデスクトップクライアントから HTTP リクエストが送信された場合
ブラウザーの新しいウィンドウが開かれ、任意の LiveCycle の Web アプリケーションログインページの URL が入力された場合
SOAP および REST エンドポイントで null リファラーを許可してください。すべての URI ログインページ(/adminui、/contentspace、それらに対応するマッピングされたリソースなど)でも、null リファラーを許可してください。例えば、/contentspace に対してマップされたサーブレット /contentspace/faces/jsp/login.jsp は、null リファラーの例外とすることが必要です。この例外は、Web アプリケーションで GET フィルタリングを有効にしている場合にのみ必要です。null リファラーを許可するかどうかはアプリケーションで指定できます(『LiveCycle の堅牢化とセキュリティ』の「クロスサイト要求偽造攻撃からの保護」を参照)。
- 許可されているリファラーの例外:
- 許可されているリファラーの例外は、許可されているリファラーリストのサブリストです。このリファラーの例外からのリクエストはブロックされます。許可されているリファラーの例外は、Web アプリケーション用です。許可されているリファラーの例外のサブセットを、特定の Web アプリケーションの呼び出しに対して許可しない場合は、許可されているリファラーの例外を使用してリファラーをブラックリストに登録できます。許可されているリファラーの例外は、アプリケーションの web.xml ファイル内で指定されます(『LiveCycle の堅牢化とセキュリティ』の「クロスサイト要求偽造攻撃からの保護」を参照)。
許可されているリファラーの機能の仕組みLiveCycle にはリファラーのフィルタリング機能が用意されており、CSRF 攻撃の防止に役立ちます。以下にリファラーのフィルタリングが機能する仕組みを示します。 LiveCycle サーバーが、呼び出しに使用される HTTP メソッドを確認します。 POST の場合、LiveCycle サーバーはリファラーのヘッダーのチェックを実行します。
GET の場合、CSRF_CHECK_GETS が true に設定されていなければ、LiveCycle サーバーはリファラーのチェックを省略します。true に設定されている場合は、リファラーのヘッダーのチェックを実行します。CSRF_CHECK_GETS は、アプリケーションの web.xml ファイル内で指定されます。(『LiveCycle の堅牢化とセキュリティ』の「クロスサイト要求偽造攻撃からの保護」を参照)。
LiveCycle サーバーが、要求された URI がホワイトリストに登録されているかどうかを確認します。
リクエスト内にリファラーが含まれている場合、サーバーはそれが許可されているリファラーかどうかを確認します。許可されているリファラーの場合、サーバーはリファラーの例外かどうかを確認します。 例外の場合、リクエストはブロックされます。
例外でない場合、リクエストは渡されます。
リクエスト内にリファラーが含まれていない場合、サーバーは null リファラーが許可されているかどうかを確認します。
許可されているリファラーの設定Configuration Manager を実行すると、許可されているリファラーリストにデフォルトのホストおよび IP アドレス、または LiveCycle サーバーが追加されます。このリストは Administration Console で編集できます。
Administration Console で、設定/User Management/設定/許可されているリファラー URL を設定をクリックします。許可されているリファラーリストがページ下部に表示されます。
許可されているリファラーを追加するには
ホストの名前または IP アドレスを「許可されているリファラー」ボックスに入力します。一度に複数の許可されているリファラーを追加するには、各ホストの名前または IP アドレスを 1 行ごとに入力します。
「HTTP ポート」と「HTTPS ポート」ボックスについて、HTTP または HTTPS のいずれか、または両方のポートを指定します。これらのポートを空のままにした場合、デフォルトのポート(HTTP ではポート 80、HTTPS ではポート 443)が使用されます。ボックスに 0(ゼロ)を入力した場合、そのサーバー上のすべてのポートが有効化されます。特定のポート番号を入力すると、そのポートのみが有効化されます。
「追加」をクリックします。
許可されているリファラーリストからエントリを削除するには、リストから項目を選択して、「削除」をクリックします。
許可されているリファラーリストが空の場合、CSRF 機能は動作を停止し、システムのセキュリティが低下します。
許可されているリファラーリストを変更したら、LiveCycle サーバーを再起動してください。
|
|
|