Citrix ADC

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

XML クロスサイトスクリプティングチェックでは、XML ペイロードで発生する可能性のあるクロスサイトスクリプティング攻撃に対するユーザ要求を検証します。クロスサイトスクリプティング攻撃の可能性が見つかると、リクエストをブロックします。

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

Web App Firewall は、XML クロスサイトスクリプティング保護を実装するためのさまざまなアクションオプションを提供します。ブロックログ、および 統計の各アクションを設定するオプションがあります。

Web App Firewall XML XSS チェックは、着信要求のペイロードに対して実行され、攻撃文字列が複数の行に分散している場合でも識別されます。このチェックでは、 要素属性 値内の XSS 攻撃文字列が検索されます。緩和を適用して、指定した条件下でセキュリティチェック検査をバイパスできます。ログと統計情報は、必要な緩和を特定するのに役立ちます。

XML ペイロードの CDATA セクションは、スクリプトが CDATA セクションの外で実行できないため、ハッカーにとって魅力的な領域になる可能性があります。CDATA セクションは、文字データとして完全に扱われるコンテンツに使用されます。HTML マークアップタグ区切り文字 <>、および />では、パーサはコードを HTML 要素として解釈しません。次の例は、XSS 攻撃文字列を持つ CDATA セクションを示しています。

    <![CDATA[rn
    <script language="Javascript" type="text/javascript">alert ("Got you")</script>rn
    ]]>

アクションオプション

アクションは、XML クロスサイトスクリプティングチェックが要求で XSS 攻撃を検出したときに適用されます。アプリケーションの XML クロスサイトスクリプティング保護を最適化するには、次のオプションを使用できます。

  • Block:要求で XSS タグが検出されると、ブロックアクションがトリガーされます。
  • [Log]:XML クロスサイトスクリプティングチェックで実行されたアクションを示すログメッセージを生成します。ブロックが無効の場合、XSS 違反が検出された場所 (ELEMENT、ATTRIBUTE) ごとに個別のログメッセージが生成されます。ただし、要求がブロックされると、1 つのメッセージだけが生成されます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとした可能性があります。
  • [Stats]:違反とログに関する統計情報を収集します。stats カウンタの予期しない急増は、アプリケーションが攻撃を受けていることを示している可能性があります。正当な要求がブロックされている場合は、設定を再度参照して、新しい緩和ルールを設定するか、既存の緩和ルールを変更する必要があるかを確認する必要があります。

リラクゼーションルール

アプリケーションで XML ペイロード内の特定の ELEMENT または ATTRIBUTE のクロスサイトスクリプティングチェックをバイパスする必要がある場合は、緩和ルールを設定できます。XML クロスサイトスクリプティングチェック緩和規則には、次のパラメータがあります。

  • Name:リテラル文字列または正規表現を使用して、ELEMENT または属性の名前を設定できます。次の式は、文字列 name_ で始まり、その後に大文字または小文字、または数字の文字列 (2 文字以上 15 文字以下) が続くすべての ELEMENTS を免除します。

    ^name_[0-9A-Za-z]{2,15}$

大文字と小文字は区別されます。重複するエントリは許可されませんが、名前や場所の違いを大文字にすることで、類似したエントリを作成できます。たとえば、次の緩和規則はそれぞれ一意です。

  1. XMLXSS: ABC IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  2. XMLXSS: ABC IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  3. XMLXSS: abc IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  4. XMLXSS: abc IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  • Location:XML ペイロードで、クロスサイトスクリプティングチェック例外の場所を指定できます。デフォルトでは、 ELEMENT オプションが選択されています。属性に変更できます。
  • [Comment]:これはオプションのフィールドです。この緩和規則の目的を説明するために、最大 255 文字の文字列を使用できます。

警告

正規表現は強力です。特に、PCRE形式の正規表現に精通していない場合は、記述した正規表現を再確認してください。例外として追加する名前を正確に定義していることを確認し、それ以外は何も定義しないでください。正規表現を不注意に使用すると、意図しない Web コンテンツへのアクセスをブロックしたり、XML クロスサイトスクリプティングチェックでブロックされた攻撃を許可するなど、望ましくない結果が生じる可能性があります。

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

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

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

> set appfw profile <name> -XMLXSSAction (([block] [log] [stats]) | [none])

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

緩和ルールを追加して、特定の場所で XSS スクリプト攻撃検査の検査をバイパスできます。次のように、bind または unbind コマンドを使用して、緩和ルールのバインドを追加または削除します。

> bind appfw profile <name> -XMLXSS <string> [isRegex (REGEX | NOTREGEX)] [-location ( ELEMENT | ATTRIBUTE )] –comment <string> [-state ( ENABLED | DISABLED )]

> unbind appfw profile <name> -XMLXSS <String>

:

> bind appfw profile test_pr -XMLXSS ABC

上記のコマンドを実行した後、次の緩和ルールが設定されます。ルールが有効になり、名前はリテラル (NOTREGEX) として扱われ、ELEMENT がデフォルトの場所として選択されます。

1)      XMLXSS:  ABC             IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

`> unbind appfw profile test_pr -XMLXSS abc`

ERROR: No such XMLXSS check

`> unbind appfw profile test_pr -XMLXSS ABC`

 Done

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

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

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

  1. [Web App Firewall] > [プロファイル] に移動し、ターゲットプロファイルを強調表示して、[編集] をクリックします。
  2. [詳細設定] ウィンドウで、[セキュリティチェック] をクリックします。

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

a) XML クロスサイトスクリプティングチェックの ブロックログ、および 統計アクションを有効または無効にするだけの場合は、テーブルのチェックボックスをオンまたはオフにして [OK] をクリックし、[保存して閉じる] をクリックして [セキュリティ] を閉じます。[チェック] ペイン。

b) [XML クロスサイトスクリプティング] をダブルクリックするか、行を選択して [アクション設定] をクリックすると、アクションオプションが表示されます。いずれかのアクション設定を変更したら、[OK] をクリックして変更を保存し、[セキュリティチェック] テーブルに戻ります。

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

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

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

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

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

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

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

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

シグニチャの詳細については、http://support.citrix.com/proddocs/topic/ns-security-10-map/appfw-signatures-con.htmlを参照してください。

デフォルトの XSS パターンを表示するには:

  1. [Web App Firewall] > [署名] に移動し、[*デフォルトの署名] を選択して [編集] をクリックします。次に、[SQL/XSS パターンの管理] をクリックします。

SQL/XSS パスの管理」 テーブルには、XSS に関連する次の 3 つの行が表示されます。

           xss/allowed/attribute

           xss/allowed/tag

           xss/denied/pattern

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

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

  1. [Web App Firewall] > [署名] に移動し、ターゲットのユーザー定義署名をハイライト表示して [編集] をクリックします。「 SQL/XSS パターンの管理 」をクリックして、 「SQL/XSS パスの管理」 テーブルを表示します。
  2. ターゲットの XSS 行を選択します。

a) [要素を管理] をクリックして、対応する XSS 要素を 追加編集または削除します。

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

警告

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

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

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

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

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

> \*\*Shell\*\*

> \*\*tail -f /var/log/ns.log | grep APPFW_XML_XSS\*\*

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

Oct  7 01:44:34 <local0.warn> 10.217.31.98 10/07/2015:01:44:34 GMT ns 0-PPE-1 : default APPFW APPFW_XML_XSS 1154 0 :  10.217.253.69 3466-PPE1 - owa_profile http://10.217.31.101/FFC/login.html Cross-site script check failed for field script="Bad tag: script" <\*\*blocked\*\*>

<not blocked>アクションを示す CEF ログ形式の XML クロスサイトスクリプティングセキュリティチェック違反ログメッセージの例

Oct  7 01:46:52 <local0.warn> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_XML_XSS|4|src=10.217.30.17 geolocation=Unknown spt=33141 method=GET request=http://10.217.31.101/FFC/login.html msg=Cross-site script check failed for field script="Bad tag: script" cn1=1607 cn2=3538 cs1=owa_profile cs2=PPE0 cs4=ERROR cs5=2015 act=\*\*not blocked\*\*

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

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

  • [Web App Firewall] > [プロファイル] に移動し、ターゲットプロファイルを選択して [セキュリティチェック] をクリックします。[XML クロスサイトスクリプティング] 行を強調表示し、[ログ] をクリックします。プロファイルの XML クロスサイトスクリプティングチェックから直接ログにアクセスすると、GUI によってログメッセージが除外され、これらのセキュリティチェック違反に関連するログのみが表示されます。

  • Citrix ADC 」>「 システム 」>「 監査 」の順に選択して、Syslogビューアにアクセスすることもできます。[監査メッセージ] セクションで、[Syslog メッセージ] リンクをクリックして Syslog Viewer を表示します。このビューには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。これは、要求処理中に複数のセキュリティー検査違反がトリガーされる可能性がある場合のデバッグに役立ちます。

  • [Web App Firewall] > [ポリシー] > [監査] に移動します。[監査メッセージ] セクションで、[Syslog メッセージ] リンクをクリックして Syslog ビューアを表示します。このビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。

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

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

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

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

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

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

> **sh appfw stats**

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

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

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

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