Citrix ADC

CSRFフォームのタグ付けチェック

クロスサイトリクエストフォージェリ(CSRF)フォームタグ付けチェックは、保護された Web サイトから送信された各 Web フォームに、一意で予測不可能な一意の FormID を使用してタグ付けし、ユーザーから返された Web フォームを調べて、指定された FormID が正しいことを確認します。このチェックは、クロスサイトリクエストフォージェリ攻撃から保護します。このチェックは、データの有無にかかわらず、Web フォームを含む HTML リクエストにのみ適用されます。XML リクエストには適用されません。

CSRFフォームのタグ付けチェックは、攻撃者が独自のWebフォームを使用して、保護されているWebサイトにデータを大量にフォーム応答を送信することを防ぎます。このチェックでは、Web フォームを詳細に分析する他のセキュリティー検査と比較して、CPU 処理能力が比較的少なくて済みます。そのため、保護された Web サイトや Web App Firewall 自体のパフォーマンスを著しく低下させることなく、大量の攻撃を処理できます。

CSRF フォームのタグ付けチェックを有効にする前に、次の点に注意してください。

  • フォームのタグ付けを有効にする必要があります。CSRFチェックはフォームのタグ付けに依存し、それがなければ動作しません。
  • そのプロファイルで保護されているフォームを含むすべてのWebページで、Citrix ADC統合キャッシュ機能を無効にする必要があります。統合キャッシュ機能と CSRF フォームのタグ付けには互換性がありません。
  • Refererチェックを有効にすることを検討してください。リファラーチェックは開始 URL チェックの一部ですが、開始 URL 違反ではなく、クロスサイトリクエストフォージェリを防ぐことができます。リファラーチェックは、CSRFフォームのタグ付けチェックよりもCPUの負荷を軽減します。リクエストがRefererチェックに違反した場合、リクエストはすぐにブロックされるため、CSRFフォームタグチェックは呼び出されません。
  • CSRF フォームのタグ付けチェックは、フォームオリジン URL とフォームアクション URL で異なるドメインを使用する Web フォームでは機能しません。たとえば、CSRF フォームタグ付けでは、example.comと example.org が異なるドメインであるため、http://www.example.comのフォーム生成元 URL とhttp://www.example.org/form .pl のフォームアクション URL を持つウェブフォームを保護できません。

ウィザードまたは GUI を使用する場合は、[CSRF フォームのタグ付けチェックの変更] ダイアログボックスの [全般] タブで、[ブロック]、[ログ]、[ラーニング]、および [統計] アクションを有効または無効にできます。

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力して CSRF フォームのタグ付けチェックを設定できます。

  • set appfw profile <name> -CSRFtagAction [**block**] [**log**] [**learn**] [**stats**] [**none**]

CSRF フォームのタグ付けチェックの緩和を指定するには、GUI を使用する必要があります。CSRF フォームのタグ付けチェックダイアログボックスの「チェック」タブで、「追加」をクリックして「CSRF フォームのタグ付けの追加」リラクゼーションチェックダイアログボックスを開くか、既存のリラクゼーションを選択して「開く」をクリックして「CSRF フォームのタグ付けチェックリラクゼーションを変更」ダイアログボックスを開きます。どちらのダイアログボックスも、緩和の設定に同じオプションを提供します。

Citrix Web App Firewall セッション制限を0以下の値に設定すると、アラートが生成されます。これは、Web App Firewall セッションが正しく機能する必要がある高度な保護チェック機能に影響する設定です。

CSRFフォームタグ付けチェック緩和の例を以下に示します。

: 次の式は、フォームオリジン URL ロールとフォームアクション URL ロールの両方で使用できる URL 式です。

  • 新しいクエリを除き、http://www.example.com/search.pl?で始まるクエリの後に任意の文字列を含むURLを選択します。

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
    
  • http://www.example-español.comで始まる URLを選択し、大文字と小文字、数字、非ASCII特殊文字、および選択された記号で構成されるパスとファイル名を含めます。ñ文字およびその他の特殊文字は、UTF-8文字セットの各特殊文字に割り当てられた16進コードを含むエンコードされたUTF-8文字列として表されます。

    ^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
  • /search.cgi という文字列を含むすべての URL を選択してください。 :
    ^[^?<>]\*/search[.]cgi?[^?<>]\*$

重要

正規表現は強力です。PCRE形式の正規表現に精通していない場合は、記述した正規表現を再確認してください。例外として追加する URL を正確に定義していることを確認し、それ以外は何も定義しないでください。ワイルドカード、特にドットとアスタリスク (.*) メタキャラクタとワイルドカードの組み合わせを不注意に使用すると、ブロックする意図がない Web コンテンツへのアクセスをブロックしたり、チェックによってブロックされた攻撃を許可したりするなど、望ましくない結果が生じる可能性があります。

ヒント

[URL の開始] アクションで [リファラーヘッダーを有効にする] が有効になっている場合は、リファラーヘッダー URL が StartURL にも追加されていることを確認します。

Citrix ADCがappfw_session_limitに達し、CSRFチェックが有効になっていると、Webアプリケーションがフリーズします。

Web アプリケーションがフリーズしないようにするには、次のコマンドを使用してセッションタイムアウトを減らし、セッション制限を増やします。

CLI: > set appfw settings –sessiontimeout 300 From shell: root@ns# nsapimgr_wr.sh -s appfw_session_limit=200000

appfw_session_limit に達した場合に SNMP アラームをログに記録して生成すると、問題のトラブルシューティングとデバッグに役立ちます。

CSRFフォームのタグ付けチェック