Citrix ADC

HTML クロスサイトスクリプティングチェック

HTML クロスサイトスクリプティング(クロスサイトスクリプティング)チェックでは、クロスサイトスクリプティング攻撃の可能性がないか、ユーザー要求のヘッダーと POST ボディの両方を調べます。クロスサイトスクリプトが見つかった場合、攻撃を無害にするためにリクエストを変更(変換)するか、リクエストをブロックします。

注:

HTML クロスサイトスクリプティング (クロスサイトスクリプティング) チェックは、コンテンツタイプ、コンテンツの長さなどに対してのみ機能します。Cookie に対しては機能しません。また、Webアプリケーションファイアウォールプロファイルで「CheckRequestHeaders」オプションを有効にしてください。

HTML クロスサイトスクリプティングチェックでは、保護された Web サイト上のスクリプトの誤用を防ぐため、 同じオリジンルールに違反するスクリプトをブロックします。このチェックでは、スクリプトはサーバー以外のサーバー上のコンテンツにアクセスしたり変更したりしないでください。に位置する。同じオリジン規則に違反するスクリプトはクロスサイトスクリプトと呼ばれ、スクリプトを使用して別のサーバー上のコンテンツにアクセスまたは変更する習慣をクロスサイトスクリプティングと呼びます。クロスサイトスクリプティングがセキュリティ上の問題である理由は、クロスサイトスクリプティングを許可する Web サーバーは、その Web サーバー上ではなく、攻撃者が所有し制御しているサーバーなど、異なる Web サーバー上で攻撃される可能性があるためです。

残念ながら、多くの企業では、同じオリジンルールに違反する JavaScript が強化された Web コンテンツの大規模なインストールベースを持っています。このようなサイトで HTML クロスサイトスクリプティングチェックを有効にすると、適切な例外を生成して、チェックが正当な活動をブロックしないようにする必要があります。

Web App Firewall は、HTML クロスサイトスクリプティング保護を実装するためのさまざまなアクションオプションを提供します。ブロックログ統計学習アクションに加えて、送信されたリクエストの スクリプトタグをエンコードするエンティティによって、クロスサイトスクリプトを変換するオプションもあります。クロスサイトスクリプティングの完全な URL を確認するを構成して、クエリパラメータだけでなく URL 全体を検査してクロスサイトスクリプティング攻撃を検出するかどうかを指定できます。Inspect QueryContentTypes パラメーターを構成して、特定のコンテンツタイプの クロスサイトスクリプティング攻撃に対する要求クエリ部分を検査できます。

リラクゼーションを展開して、誤検出を回避できます。Web App Firewall 学習エンジンは、緩和ルールの設定に関する推奨事項を提供できます。

アプリケーションに最適化された HTML クロスサイトスクリプティング保護を構成するには、次のオプションを使用できます。

  • [Block]:ブロックを有効にすると、要求でクロスサイトスクリプティングタグが検出されると、ブロックアクションがトリガーされます。
  • [Log]:ログ機能を有効にすると、HTML クロスサイトスクリプティングチェックによって実行されるアクションを示すログメッセージが生成されます。ブロックが無効になっている場合、クロスサイトスクリプティング違反が検出されたヘッダーまたはフォームフィールドごとに個別のログメッセージが生成されます。ただし、要求がブロックされると、1 つのメッセージだけが生成されます。同様に、クロスサイトスクリプティングタグが複数のフィールドで変換されている場合でも、変換操作に対して要求ごとに 1 つのログメッセージが生成されます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとした可能性があります。
  • Stats:有効の場合、stats 機能は違反とログに関する統計情報を収集します。stats カウンタの予期しない急増は、アプリケーションが攻撃を受けていることを示している可能性があります。正当な要求がブロックされている場合は、構成を再確認して、新しい緩和ルールを構成するか、既存の緩和ルールを変更する必要があるかどうかを確認する必要があります。
  • 学習:どの緩和ルールがアプリケーションに最適かが不明な場合は、学習機能を使用して、学習したデータに基づいて HTML クロスサイトスクリプティングルールの推奨事項を生成できます。Web App Firewall 学習エンジンは、トラフィックを監視し、観測された値に基づいて学習の推奨事項を提供します。パフォーマンスを損なうことなく最適なメリットを得るには、ラーニングオプションを短時間有効にして、ルールの代表的なサンプルを取得してから、ルールを展開してラーニングを無効にします。
  • クロスサイトスクリプトの変換:有効にすると、Web App Firewall は HTML クロスサイトスクリプティングチェックに一致するリクエストに対して次の変更を行います。
    • 左山かっこ (<) から HTML 文字エンティティに相当する (<)
    • 右山かっこ(>)からHTML文字エンティティに相当する(>)

これにより、ブラウザが安全でないHTMLタグ(<script>など)を解釈せず、悪意のあるコードを実行することが保証されます。リクエストヘッダーのチェックと変換の両方を有効にすると、リクエストヘッダーで見つかった特殊文字も上記のように変更されます。保護された Web サイトのスクリプトにクロスサイトスクリプティング機能が含まれていても、Web サイトが正しく動作するためにそれらのスクリプトに依存していない場合は、ブロックを無効にして変換を有効にすることができます。この設定により、正当な Web トラフィックがブロックされなくなり、クロスサイトスクリプティング攻撃が阻止されます。

  • クロスサイトスクリプティングの完全な URL のチェック:完全な URL のチェックが有効になっている場合、Web App Firewall は、URL のクエリ部分だけをチェックするのではなく、URL 全体に HTML クロスサイトスクリプティング攻撃がないか調べます。
  • リクエストヘッダーのチェック:リクエストヘッダーのチェックが有効になっている場合、Web App Firewall はリクエストのヘッダーを検査し、URL だけではなく HTML クロスサイトスクリプティング攻撃がないか調べます。GUI を使用する場合は、Web App Firewall プロファイルの [設定] タブでこのパラメータを有効にできます。
  • InspectQueryContentTypes — リクエストクエリ検査が設定されている場合、アプリケーションファイアウォールは、特定のコンテンツタイプのクロスサイトスクリプティング攻撃に対するリクエストのクエリを調べます。GUI を使用する場合は、App Firewall プロファイルの [設定] タブでこのパラメータを設定できます。

重要

ストリーミングの変更の一環として、クロスサイトスクリプティングタグの Web App Firewall 処理が変更されました。この変更は、11.0 以降のビルドに適用されます。この変更は、要求側のストリーミングをサポートする 10.5.e の拡張ビルドにも関係します。以前のリリースでは、開き角かっこ (<), or close bracket (>)、または開き角かっこ (<>) のいずれか、開き角かっこ (<>) の両方が存在し、クロスサイトスクリプティング違反としてフラグが立てられました。この動作は、要求側ストリーミングのサポートを含むビルドで変更されました。閉じ括弧文字(>)だけが攻撃と見なされなくなりました。開き角かっこ (<) が存在しても要求はブロックされ、攻撃と見なされます。クロスサイトスクリプティング攻撃にフラグが付けられます。

クロスサイトスクリプティングきめ細かなリラックス

Web App Firewall には、特定のフォームフィールド、ヘッダー、または Cookie をクロスサイトスクリプティングインスペクションのチェックから除外するオプションがあります。緩和規則を設定することで、これらのフィールドの 1 つ以上の検査を完全にバイパスできます。

Web App Firewall では、緩和ルールを微調整することで、より厳格なセキュリティを実装できます。アプリケーションでは、特定のパターンを許可する柔軟性が要求される場合がありますが、セキュリティインスペクションをバイパスするように緩和規則を設定すると、ターゲットフィールドがクロスサイトスクリプティング攻撃パターンの検査から除外されるため、アプリケーションが攻撃に対して脆弱になる可能性があります。クロスサイトスクリプティングのきめ細かなリラクゼーションでは、特定の属性、タグ、およびパターンを許可するオプションが提供されます。残りの属性、タグ、パターンはブロックされます。たとえば、Web App Firewall には、現在 125 を超える拒否パターンの既定のセットがあります。ハッカーはクロスサイトスクリプト攻撃でこれらのパターンを使用できるため、Web App Firewall は潜在的な脅威としてフラグを立てます。特定の場所に対して安全と見なされる 1 つまたは複数のパターンをリラックスできます。潜在的に危険なクロスサイトスクリプティングの残りのパターンは、ターゲットの場所に対して引き続きチェックされ、セキュリティチェック違反がトリガーされ続けます。これで、より厳密な制御が可能になりました。

緩和で使用されるコマンドには、 [値のタイプ] と [値の] のオプションのパラメータがあります。値のタイプは空白のままにすることも、[タグ]、[属性]、または [パターン] を選択することもできます。値タイプを空白のままにすると、指定した URL の設定済みフィールドはクロスサイトスクリプティングチェック検査から除外されます。値タイプを選択する場合は、値式を指定する必要があります。値式が正規表現かリテラル文字列かを指定できます。入力が許可リストと拒否リストと照合されると、緩和ルールで設定された指定された式のみが除外されます。

Web App Firewall には、次のクロスサイトスクリプティングが組み込まれています。

  1. XSS 許可される属性: abbrアクセスキー整列altbgcolorボーダーセルパディングセル間隔charcharoff文字セット など
  2. XSS 許可タグ:アドレスベースフォントbgsound、ビ ッグブロッククォート、b g、b rキャプションセンターcitedd、d el など
  3. XSS拒否パターンFSSCommandjavascript:OnAbort、On Activate など、129のデフォルト拒否パターンがあります

警告

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

考慮すべきポイント:

  • 値式はオプションの引数です。フィールド名には値式がない場合があります。
  • フィールド名は、複数の値式にバインドできます。
  • 値の式には、値の型を割り当てる必要があります。クロスサイトスクリプティングの値の種類は、1) タグ、2) 属性、3) パターンです。
  • フィールド名/URLの組み合わせごとに複数の緩和ルールを持つことができます
  • フォームフィールド名およびアクション URL では、大文字と小文字は区別されません。

コマンドラインを使用した HTML クロスサイトスクリプティングチェックの設定

コマンドラインを使用して HTML クロスサイトスクリプティングチェックアクションおよびその他のパラメーターを構成するには

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力して HTML クロスサイトスクリプティングチェックを設定できます。

  • appfw プロファイルの設定「パラメーターの説明は、ページの下部に表示されます。」)
  • <name> -crossSiteScriptingAction (([block] [learn] [log] [stats]) | [**none**])
  • appfw プロファイルの設定「パラメーターの説明は、ページの下部に表示されます。」)
  • <name> **-crossSiteScriptingTransformUnsafeHTML** (ON | OFF)
  • appfw プロファイルの設定ページの下部に表示されるパラメータの説明。
  • <name> -crossSiteScriptingCheckCompleteURLs (ON | OFF)
  • appfw プロファイルの設定ページの下部に表示されるパラメータの説明。
  • <name> - checkRequestHeaders (ON | OFF) パラメーターの説明は、ページの下部に記載されています。」
  • <name> - CheckRequestQueryNonHtml (ON | OFF) パラメーターの説明は、ページの下部に記載されています。」

コマンドラインを使用して HTML クロスサイトスクリプティングチェック緩和ルールを構成するには

バインドを追加または削除するには、次のように bind または unbind コマンドを使用します。

  • bind appfw profile <name> -crossSiteScripting <String> [isRegex (REGEX | NOTREGEX)] <formActionURL> [-location <location>] [-valueType (Tag|Attribute|Pattern) [<valueExpression>] [-isValueRegex (REGEX | NOTREGEX) ]]
  • unbind appfw profile <name> -crossSiteScripting <String> <formActionURL> [-location <location>] [-valueType (Tag |Attribute|Pattern) [<valueExpression>]]

GUI を使用した HTML クロスサイトスクリプティングチェックの設定

GUI では、アプリケーションに関連付けられたプロファイルのペインで HTML クロスサイトスクリプティングチェックを設定できます。

GUI を使用して HTML クロスサイトスクリプティングチェックを構成または変更するには

  1. アプリケーションファイアウォール 」>「 プロファイル」に移動し、ターゲットプロファイルをハイライト表示して「 編集」をクリックします。
  2. [詳細設定] ウィンドウで、[セキュリティチェック] をクリックします。

セキュリティチェックテーブルには、すべてのセキュリティチェックに対して現在構成されているアクション設定が表示されます。設定には2つのオプションがあります。

a. HTML クロスサイトスクリプティングの「 ブロック」、「 ログ」、「 統計」、および「 学習 」アクションを有効または無効にするには、表のチェックボックスをオンまたはオフにして「 OK」をクリックし、「 保存して閉じる 」をクリックします。[セキュリティチェック] ウィンドウを閉じます。

b. このセキュリティー検査の追加オプションを構成する場合は、「 HTML クロスサイトスクリプティング」をダブルクリックするか、行を選択して「 アクション設定」をクリックして、次のオプションを表示します。

クロスサイトスクリプトの変換:安全でないスクリプトタグを変換します。

クロスサイトスクリプティングの完全な URL を確認する:URL のクエリ部分だけをチェックするのではなく、完全な URL でクロスサイトスクリプト違反がないか確認します。

上記の設定のいずれかを変更したら、[OK] をクリックして変更を保存し、[セキュリティチェック] テーブルに戻ります。必要に応じて、他のセキュリティー検査の設定に進むことができます。[OK] をクリックして、[セキュリティチェック] セクションで行ったすべての変更 を保存し、[保存して閉じる] をクリックして [セキュリティチェック] ウィンドウを閉じます。

チェック要求ヘッダーの 設定を有効または無効にするには、 [詳細設定] ウィンドウの [プロファイル設定] をクリックします。[共通設定]で、[要求ヘッダーをチェック] チェックボックスをオンまたはオフにします。[OK] をクリックします。[Profile Settings] ペインの右上にある [X] アイコンを使用してこのセクションを閉じるか、このプロファイルの設定が完了したら、[完了] **をクリックして [アプリケーションファイアウォール] > [プロファイル**] に戻ります。

チェック要求クエリ非 HTML 設定を有効または無効にするには、[詳細設定] ウィンドウの [プロファイル設定] をクリックします。[共通設定]で、[HTML 以外の要求クエリを確認する] チェックボックスをオンまたはオフにします。[OK] をクリックします。[Profile Settings] ペインの右上にある [X] アイコンを使用してこのセクションを閉じるか、このプロファイルの設定が完了したら、[完了] をクリックして [App Firewall] > [Profile] に戻ります。

GUI を使用して HTML クロスサイトスクリプティングの緩和ルールを構成するには

  1. アプリケーションファイアウォール 」>「 プロファイル」に移動し、ターゲットプロファイルをハイライト表示して「 編集」をクリックします。
  2. [詳細設定] ペインで、[緩和規則] をクリックします。
  3. 「リラクゼーション規則」テーブルで、「 HTML クロスサイトスクリプティング」 エントリをダブルクリックするか、エントリを選択して「 編集 」をクリックします。
  4. [HTML クロスサイトスクリプティング緩和規則] ダイアログで、緩和規則の [追加]、[編集]、[削除]、[有効化]、または [無効 化] の操作を実行します。

新しいルールを追加する場合、[値の **タイプフィールド] で [タグ] または [属性] または [パターン] オプションを選択しない限り、[値の 式**] フィールドは表示されません。

ビジュアライザーを使用して HTML クロスサイトスクリプティング緩和ルールを管理するには

すべての緩和規則をまとめて表示するには、[リラクゼーション規則] テーブルの [HTML クロスサイトスクリプティング] 行をハイライト表示し、[ビジュアライザー] をクリックします。展開された緩和のビジュアライザーには、[新しいルール を追加] または [既存のルールを編集] のオプションがあります。ノードを選択し、緩和ビジュアライザの対応するボタンをクリックして、ルールのグループ を有効 または 無効に することもできます。

GUI を使用してクロスサイトスクリプティングパターンを表示またはカスタマイズするには

GUI を使用して、クロスサイトスクリプティングが許可される属性または許可されるタグのデフォルトのリストを表示またはカスタマイズできます。クロスサイトスクリプティング拒否パターンのデフォルトリストを表示またはカスタマイズすることもできます。

既定のリストは、[アプリケーションファイアウォール] > [署名] > [既定の署名] で指定されます。プロファイルに署名オブジェクトをバインドしない場合、Default Signatures オブジェクトで指定されたデフォルトのクロスサイトスクリプティング許可リストと拒否リストが、クロスサイトスクリプティングのセキュリティチェック処理のためにプロファイルで使用されます。デフォルトのシグネチャオブジェクトで指定されているタグ、属性、およびパターンは読み取り専用です。編集や修正はできません。これらを変更または変更する場合は、Default Signatures オブジェクトのコピーを作成して、ユーザー定義シグニチャオブジェクトを作成します。新しい User-defined シグニチャオブジェクトの許可リストまたは拒否リストを変更し、カスタマイズされた許可リストおよび拒否リストを使用するトラフィックを処理しているプロファイルでこのシグニチャオブジェクトを使用します。

署名について詳しくは、次のトピックを参照してください:

  1. デフォルトのクロスサイト・スクリプティング・パターンを表示する手順は、次のとおりです。

a. 「 アプリケーションファイアウォール 」>「 署名 」に移動し、「 デフォルト署名 」を選択して「 編集 」をクリックします。次に、[SQL/XSS パターンの管理] をクリックします。

SQL/XSS パスの管理 」表には、クロスサイトスクリプティングに関連する次の 3 つの行が表示されます。

xss/allowed/attribute

xss/allowed/tag

xss/denied/pattern

b. 行 を選択して「 要素を管理 」をクリックすると、Web App Firewall のクロスサイトスクリプティングチェックで使用される対応する クロスサイトスクリプティング 要素(タグ、属性、パターン)が表示されます。

  1. XSS要素をカスタマイズするには:ユーザー定義の署名オブジェクトを編集して、許可されたタグ、許可された属性、および拒否されたパターンをカスタマイズできます。新しいエントリを追加したり、既存のエントリを削除したりできます。

a. [アプリケーションファイアウォール] > [署名] に移動し、ターゲットのユーザー定義署名をハイライト表示して [編集] をクリックします。「 SQL/XSS パターンの管理 」をクリックして、 「SQL/XSS パスの管理」 テーブルを表示します。

b. ターゲットのクロスサイトスクリプティング行 を選択します。

i. 「 要素の管理」をクリックして、対応するクロスサイトスクリプティング要素 を追加編集または削除 します。

ii. [削除] をクリックして、選択した行を削除します。

警告

デフォルトのクロスサイトスクリプティング要素を削除または変更するか、XSS パスを削除して行全体を削除する前に、注意が必要です。シグニチャルールとクロスサイトスクリプティングセキュリティチェックは、アプリケーションを保護するための攻撃を検出するためにこれらの要素に依存しています。XSS エレメントをカスタマイズすると、編集中に必要なパターンが削除されると、クロスサイトスクリプティング攻撃に対してアプリケーションが脆弱になる可能性があります。

HTML クロスサイトスクリプティングチェックでの Learn 機能の使用

学習アクションが有効の場合、Web App Firewall 学習エンジンはトラフィックを監視し、トリガーされた違反を学習します。これらの学習済みルールを定期的に検査できます。検討後、学習したルールを HTML クロスサイトスクリプティング緩和ルールとして展開できます。

HTMLクロスサイトスクリプティング学習の機能強化:Citrix ADCソフトウェアのリリース11.0で、Web App Firewall 学習機能強化が導入されました。きめ細かなHTMLクロスサイトスクリプティングリラクゼーションをデプロイするために、Web App Firewall はきめ細かなHTMLクロスサイトスクリプティング学習を提供します。学習エンジンは、観測された値のタイプ(タグ、属性、パターン)および入力フィールドで観測された対応する値式に関する推奨事項を作成します。ブロックされたリクエストをチェックして、現在のルールが制限的すぎて緩和する必要があるかどうかを判断するだけでなく、学習エンジンによって生成されたルールを見直して、どの値のタイプと値の式が違反をトリガーし、緩和ルールで対処する必要があるかを判断できます。

Web App Firewall の学習エンジンは、名前の最初の 128 バイトだけを区別できます。フォームに、最初の 128 バイトに一致する名前のフィールドが複数ある場合、学習エンジンはそれらを区別できないことがあります。同様に、展開された緩和ルールは、そのようなフィールドを HTML クロスサイトスクリプティングインスペクションから誤って緩和することがあります。 ヒント

12 文字を超えるクロスサイトスクリプティングタグは、正しく学習またはログに記録されません。

学習用に大きなタグ長が必要な場合は、AS_XSS_ALLOWED_TAGS_LISTに長さ ‘x’ の非表示タグを追加できます。

コマンドラインインターフェイスを使用して学習データを表示または使用するには

コマンドプロンプトで、次のコマンドのいずれかを入力します。

  • show appfw learningdata <profilename> crossSiteScripting
  • rm appfw learningdata <profilename> -crossSiteScripting <string> <formActionURL> [<location>] [<valueType> <valueExpression>]
  • export appfw learningdata <profilename> **crossSiteScripting*

GUI を使用して学習したデータを表示または使用するには

  1. アプリケーションファイアウォール 」>「 プロファイル」に移動し、ターゲットプロファイルをハイライト表示して「 編集」をクリックします。
  2. [詳細設定] ウィンドウで、[学習ルール] をクリックします。[学習済みルール] テーブルで [HTML クロスサイトスクリプティング] エントリを選択し、ダブルクリックすると、学習済みルールにアクセスできます。表には、「 フィールド名」、「URL」、「 値のタイプ」、「 」および「 ヒット数 」列が表示されます。学習したルールを展開するか、緩和ルールとして展開する前にルールを編集できます。ルールを破棄するには、ルールを選択して [スキップ] ボタンをクリックします。一度に編集できるルールは 1 つだけですが、複数のルールを選択して展開またはスキップできます。

また、「学習ルール」(Learned Rules) テーブルで「HTML クロスサイトスクリプティング」( HTML Cross-Site Scripting ) エントリを選択し、「ビジュアライザ」( Visualizer ) をクリックして、学習したすべての違反の統合ビューを表示することもできます。ビジュアライザを使用すると、学習したルールを簡単に管理できます。データの包括的なビューを 1 つの画面に表示し、1 回のクリックでルールのグループに対するアクションを簡単に実行できます。ビジュアライザーの最大の利点は、複数のルールを統合するために正規表現を推奨することです。区切り文字とアクション URL に基づいて、これらのルールのサブセットを選択できます。ドロップダウンリストから番号を選択すると、ビジュアライザーに 25、50、または 75 のルールを表示できます。学習したルールのビジュアライザーには、ルールを編集して緩和として展開するオプションがあります。または、ルールをスキップして無視することもできます。

HTML クロスサイトスクリプティングチェックでのログ機能の使用

ログアクションを有効にすると、HTML クロスサイトスクリプティングのセキュリティチェック違反が APPFW_XSS 違反として監査ログに記録されます。Web App Firewall は、ネイティブログ形式と CEF ログ形式の両方をサポートしています。ログをリモート syslog サーバに送信することもできます。

コマンドラインを使用してログメッセージにアクセスするには

シェルに切り替えて、/var/log/ フォルダ内の ns.logs を末尾に付けて、HTML クロスサイトスクリプティング違反に関連するログメッセージにアクセスします。

Shell tail -f /var/log/ns.log | grep APPFW_XSS

CEF ログ形式のクロスサイトスクリプティングセキュリティチェック違反ログメッセージの例

Jul 11 00:45:51 <local0.info> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|\*\*APPFW_XSS\*\*|6|src=10.217.253.62 geolocation=Unknown spt=4840 method=GET request=http://aaron.stratum8.net/FFC/CreditCardMind.html?abc=%3Cdef%3E msg=\*\*Cross-site script check failed for field abc="Bad tag: def"\*\* cn1=133 cn2=294 cs1=pr_ffc cs2=PPE1 cs3=eUljypvLa0BbabwfGVE52Sewg9U0001 cs4=ALERT cs5=2015 act=\*\*not blocked\*\*

トランスフォームアクションを示すネイティブログ形式のクロスサイトスクリプティングセキュリティチェック違反ログメッセージの例

Jul 11 01:00:28 <local0.info> 10.217.31.98 07/11/2015:01:00:28 GMT ns 0-PPE-0 : default APPFW \*\*APPFW_XSS\*\* 132 0 :  10.217.253.62 392-PPE0 eUljypvLa0BbabwfGVE52Sewg9U0001 pr_ffc http://aaron.stratum8.net/FFC/login.php?login_name=%3CBOB%3E&passwd=&drinking_pref=on &text_area=&loginButton=ClickToLogin&as_sfid=AAAAAAVFqmYL68IGvkrcn2pzehjfIkm5E6EZ9FL8YLvIW_41AvAATuKYe9N7uGThSpEAxbb0iBx55jyvqOZNiVK_XwEPstMYvWHxfUWl62WINwRMrKsEDil-FC4llF \*\*Cross-site script special characters seen in fields <transformed>\*\*

GUI を使用してログメッセージにアクセスするには

Citrix GUIには、ログメッセージを分析するための便利なツール(Syslogビューア)が含まれています。Syslog ビューアには、次の複数のオプションがあります。

  • [アプリケーションファイアウォール] > [プロファイル] に移動し、ターゲットプロファイルを選択して [セキュリティチェック] をクリックします。[HTML クロスサイトスクリプティング] 行をハイライト表示し、[ログ] をクリックします。プロファイルの HTML クロスサイトスクリプティングチェックから直接ログにアクセスすると、GUI によってログメッセージが除外され、これらのセキュリティチェック違反に関連するログのみが表示されます。
  • Citrix ADC 」>「 システム 」>「 監査 」の順に選択して、Syslogビューアにアクセスすることもできます。[ 監査メッセージ] セクションで、[Syslog メッセージ] リンクをクリックして Syslog ビューアを表示します。このビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。これは、要求処理中に複数のセキュリティー検査違反がトリガーされる可能性がある場合のデバッグに役立ちます。
  • [アプリケーションファイアウォール] > [ポリシー] > [監査] に移動します。[監査メッセージ] セクションで、[Syslog メッセージ] リンクをクリックして Syslog ビューアを表示します。このビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。

HTML ベースの Syslog ビューアには、関心のあるログメッセージのみを選択するためのさまざまなフィルタオプションがあります。HTML クロスサイトスクリプティングチェックのログメッセージを選択するには、[Module]のドロップダウンオプションで[APPFW]を選択してフィルタリングします。[Event Type] リストには、選択内容をさらに絞り込むための豊富なオプションが用意されています。たとえば、[APPFW_XSS] チェックボックスをオンにして [適用] ボタンをクリックすると、HTML クロスサイトスクリプティングのセキュリティチェック違反に関するログメッセージだけが Syslog Viewer に表示されます。

特定のログメッセージの行にカーソルを置くと、ログメッセージの下に、 モジュールイベントタイプイベント IDクライアント IP などの複数のオプションが表示されます。これらのオプションのいずれかを選択して、ログメッセージ内の対応する情報を強調表示することができます。

[クリックして展開] 機能は、GUI でのみ使用できます。Syslog Viewer を使用すると、ログを表示するだけでなく、Web App Firewall セキュリティチェック違反のログメッセージに基づいて HTML クロスサイトスクリプティング緩和ルールを展開することもできます。この操作では、ログメッセージは CEF ログ形式である必要があります。クリックして展開機能は、ブロック (またはブロックしない) アクションによって生成されたログメッセージに対してのみ使用できます。変換操作に関するログメッセージのリラクゼーションルールは展開できません。

Syslog Viewer から緩和ルールを展開するには、ログメッセージを選択します。選択した行の [Syslog Viewer] ボックスの右上隅にチェックボックスが表示されます。チェックボックスをオンにし、[アクション] リストからオプションを選択して、緩和ルールを展開します。[編集と配備]、[配備]、[すべて配備] は、 [アクション]オプションとして利用できます。

[クリックして 展開する] オプションを使用して展開される HTML クロスサイトスクリプティングルールには、細粒緩和の推奨事項は含まれません。

GUI の [クリックして展開する] 機能を使用するには

  1. Syslog ビューアで、 モジュール オプションで APPFW を選択します。
  2. イベントタイプ として APP_XSS を選択し、対応するログメッセージをフィルタリングします。
  3. 展開するルールを識別するには、チェックボックスをオンにします。
  4. 緩和ルールを展開するには、オプションの [Action] ドロップダウンリストを使用します。
  5. 対応する緩和規則セクションに規則が表示されていることを確認します。

HTML クロスサイトスクリプティング違反の統計

stats アクションが有効な場合、Web App Firewall がこのセキュリティチェックに対して何らかのアクションを実行すると、HTML クロスサイトスクリプティングチェックのカウンタが増加します。統計は、トラフィック、違反、およびログのレートと合計数について収集されます。ログカウンタの増分サイズは、構成された設定によって異なります。たとえば、ブロックアクションが有効になっている場合、3 つの HTML クロスサイトスクリプティング違反を含むページのリクエストでは、最初の違反が検出されるとすぐにページがブロックされるため、stats カウンタが 1 つ増えます。ただし、ブロックが無効になっている場合、同じ要求を処理すると、違反とログの統計カウンタが 3 ずつ増加します。これは、違反ごとに個別のログメッセージが生成されるためです。

コマンドラインを使用して HTML クロスサイトスクリプティングチェック統計を表示するには

コマンドプロンプトで、次のように入力します。

> sh appfw stats

特定のプロファイルの統計情報を表示するには、次のコマンドを使用します。

> **stat appfw profile** <profile name>

GUI を使用して HTML クロスサイトスクリプティング統計を表示するには

  1. [セキュリティ] > [アプリケーションファイアウォール] > [プロファイル] > [統計] に移動します。
  2. 右側のペインで、[統計 リンク] にアクセスします。
  3. スクロールバーを使用して、HTML クロスサイトスクリプティング違反とログに関する統計を表示します。統計テーブルはリアルタイムデータを提供し、7秒ごとに更新されます。

ハイライト

HTML クロスサイトスクリプティングチェックについては、次の点に注意してください。

  • HTML クロスサイトスクリプティング攻撃に対する組み込みのサポート— Citrix Web App Firewall は、受信したペイロードで許可された属性とタグの組み合わせ、および拒否されたパターンを監視することによって、クロスサイトスクリプティング攻撃から保護します。クロスサイトスクリプティングチェックで使用される組み込みのデフォルト許可タグ、許可された属性、拒否されたパターンはすべて、/netscaler/default_custom_settings.xml ファイルで指定されています。
  • Customization:タグ、属性、およびパターンのデフォルトリストを変更して、アプリケーションの特定のニーズに合わせてクロスサイトスクリプティングセキュリティチェック検査をカスタマイズできます。デフォルトのシグニチャオブジェクトのコピーを作成するか、既存のエントリを変更するか、新しいシグニチャオブジェクトを追加します。カスタマイズした設定を使用するには、このシグニチャオブジェクトをプロファイルにバインドします。
  • ハイブリッドセキュリティモデル:シグニチャとディープセキュリティ保護の両方で、プロファイルにバインドされたシグニチャオブジェクトで指定された SQL/XSS パターンが使用されます。シグニチャオブジェクトがプロファイルにバインドされていない場合は、デフォルトのシグニチャオブジェクトに存在する SQL/XSS パターンが使用されます。
  • Transform:変換操作について、次の点に注意してください。

変換操作は、他のクロスサイトスクリプティングアクション設定とは独立して機能します。変換が有効で、ブロック、ログ、統計、学習がすべて無効になっている場合、クロスサイトスクリプティングタグが変換されます。

ブロックアクションが有効になっている場合は、変換アクションよりも優先されます。

  • きめ細かい緩和と学習:緩和ルールを微調整して、セキュリティチェック検査からクロスサイトスクリプティング要素のサブセットを解除し、残りを検出します。学習エンジンは、観測されたデータに基づいて、特定の値のタイプと値の式を推奨しています。
  • [** クリックして展開**]:syslog ビューアで 1 つまたは複数のクロスサイトスクリプティング違反ログメッセージを選択し、緩和ルールとして展開します。
  • [Charset]:プロファイルのデフォルトの文字セットは、アプリケーションの必要性に基づいて設定する必要があります。デフォルトでは、プロファイル文字セットは英語 (米国) (ISO-8859-1) に設定されています。指定された文字セットなしで要求を受信した場合、Web App Firewall は ISO-8859-1 であるかのように要求を処理します。始めかっこ(<) または閉じかっこ(>)が他の文字セットでエンコードされている場合、XSS タグとして解釈されません。たとえば、リクエストに UTF-8 文字列 “%uff1cscript%uff1eが含まれているが、リクエストページで文字セットが指定されていない場合、プロファイルのデフォルトの文字セットが Unicode として指定されていない限り、クロスサイトスクリプティング違反はトリガーされない可能性があります。