HTML クロスサイトスクリプティングチェック
HTML クロスサイトスクリプティング(クロスサイトスクリプティング)チェックでは、クロスサイトスクリプティング攻撃の可能性がないか、ユーザー要求のヘッダーと POST ボディの両方を調べます。クロスサイトスクリプトが見つかった場合、攻撃を無害にするためにリクエストを変更(変換)するか、リクエストをブロックします。
注:
HTMLクロスサイトスクリプティング(クロスサイトスクリプティング)チェックは、コンテンツタイプ、コンテンツの長さなどに対してのみ機能します。クッキーでは機能しません。また、Webアプリケーションファイアウォールプロファイルで「CheckRequestHeaders」オプションを有効にしてください。
同一生成元ルールに違反するHTMLクロスサイトスクリプティングスクリプトを使用することで、保護されたWebサイトでのスクリプトの誤用を防ぐことができます。このルールでは、スクリプトはサーバー以外のサーバーのコンテンツにアクセスしたり変更したりしてはなりません。同じオリジン規則に違反するスクリプトはクロスサイトスクリプトと呼ばれ、スクリプトを使用して別のサーバー上のコンテンツにアクセスまたは変更する習慣をクロスサイトスクリプティングと呼びます。クロスサイトスクリプティングがセキュリティ上の問題である理由は、クロスサイトスクリプティングを許可する Web サーバーは、その Web サーバー上ではなく、攻撃者が所有し制御しているサーバーなど、異なる Web サーバー上で攻撃される可能性があるためです。
残念ながら、多くの企業では、同じオリジンルールに違反する JavaScript が強化された Web コンテンツの大規模なインストールベースを持っています。このようなサイトで HTML クロスサイトスクリプティングチェックを有効にすると、適切な例外を生成して、チェックが正当な活動をブロックしないようにする必要があります。
Web App Firewall は、HTML クロスサイトスクリプティング保護を実装するためのさまざまなアクションオプションを提供します。ブロック、 ログ、 統計、 学習アクションに加えて、送信されたリクエストの スクリプトタグをエンコードするエンティティによって、クロスサイトスクリプトを変換するオプションもあります。クロスサイトスクリプティングの完全な URL を確認するを構成して、クエリパラメータだけでなく URL 全体を検査してクロスサイトスクリプティング攻撃を検出するかどうかを指定できます。InspectQueryContentTypes パラメーターを構成して、特定のコンテンツタイプのクロスサイトスクリプティング攻撃の要求クエリ部分を検査できます。
リラクゼーションを展開して、誤検出を回避できます。Web App Firewall 学習エンジンは、緩和ルールの設定に関する推奨事項を提供できます。
アプリケーション用に最適化されたHTMLクロスサイトスクリプティング保護を構成するには、次のいずれかのアクションを構成します。
- [Block]:ブロックを有効にすると、要求でクロスサイトスクリプティングタグが検出されると、ブロックアクションがトリガーされます。
- [Log]:ログ機能を有効にすると、HTML クロスサイトスクリプティングチェックによって実行されるアクションを示すログメッセージが生成されます。ブロックが無効になっている場合、クロスサイトスクリプティング違反が検出されたヘッダーまたはフォームフィールドごとに個別のログメッセージが生成されます。ただし、要求がブロックされると、1 つのメッセージだけが生成されます。同様に、クロスサイトスクリプティングタグが複数のフィールドで変換される場合でも、変換操作に対して要求ごとに1つのログメッセージが生成されます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとした可能性があります。
- Stats:有効の場合、stats 機能は違反とログに関する統計情報を収集します。stats カウンタの予期しない急増は、アプリケーションが攻撃を受けていることを示している可能性があります。正当な要求がブロックされている場合は、構成を再確認して、新しい緩和ルールを構成するか、既存の緩和ルールを変更する必要があるかどうかを確認する必要があります。
- 学習:どの緩和ルールがアプリケーションに最適かが不明な場合は、学習機能を使用して、学習したデータに基づいて HTML クロスサイトスクリプティングルールの推奨事項を生成できます。Web App Firewall 学習エンジンは、トラフィックを監視し、観測された値に基づいて学習の推奨事項を提供します。パフォーマンスを損なうことなく最適なメリットを得るには、ラーニングオプションを短時間有効にして、ルールの代表的なサンプルを取得してから、ルールを展開してラーニングを無効にします。
-
クロスサイトスクリプトの変換:有効にすると、Web App Firewall は HTML クロスサイトスクリプティングチェックに一致するリクエストに対して次の変更を行います。
- 左山かっこ (<) から HTML 文字エンティティに相当する (<)
- 右山かっこ(>)からHTML文字エンティティに相当する(>)
これにより、ブラウザが <script>
などの安全でないhtmlタグを解釈して、悪意のあるコードを実行することがなくなります。リクエストヘッダーのチェックと変換の両方を有効にすると、リクエストヘッダーで見つかった特殊文字も変更されます。保護されたWebサイトのスクリプトにクロスサイトスクリプティング機能が含まれているが、Webサイトがそれらのスクリプトに依存して正しく動作しない場合は、ブロックを安全に無効にし、変換を有効にすることができます。この設定により、正当な Web トラフィックがブロックされなくなり、クロスサイトスクリプティング攻撃が阻止されます。
- クロスサイトスクリプティングの完全なURLを確認してください。完全なURLのチェックが有効になっている場合、Web App Firewallは、URLのクエリ部分だけをチェックするのではなく、URL全体を調べてHTMLクロスサイトスクリプティング攻撃を検出します。
- リクエストヘッダーを確認してください。リクエストヘッダーチェックが有効になっている場合、Web App Firewallは、URLだけでなく、HTMLクロスサイトスクリプティング攻撃のリクエストのヘッダーを調べます。GUI を使用する場合は、Web App Firewall プロファイルの [設定] タブでこのパラメータを有効にできます。
- InspectQueryContentTypes。リクエストクエリ検査が構成されている場合、App Firewallは、特定のコンテンツタイプに対するクロスサイトスクリプティング攻撃のリクエストのクエリを検査します。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 には、次のクロスサイトスクリプティングが組み込まれています。
- クロスサイトスクリプティング許可される属性: abbr、 accesskey、 align、 alt、 axis、 bgcolor、 border、 セルのパディング、 セルの間隔、 char、 charoff、 charset など、52のデフォルトで許可される属性があります。
- クロスサイトスクリプティング許可されたタグ: address、basefont、bgsound、big、blockquote、bg、br、caption、center、cite、dd、del など47のデフォルト許可のタグがありますが、
- クロスサイトスクリプティング拒否されたパターン: FSCommand、 javascript:、 onAbort、 onActivate などの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 クロスサイトスクリプティングチェックを構成または変更するには
- アプリケーションファイアウォールに移動 します > プロファイルをクリックし、ターゲットプロファイルを強調表示して、[ 編集]をクリックします。
- [ 詳細設定 ] ウィンドウで、[ セキュリティチェック] をクリックします。
セキュリティチェックテーブルには、すべてのセキュリティチェックに対して現在構成されているアクション設定が表示されます。設定には2つのオプションがあります。
a. HTML クロスサイトスクリプティングの「 ブロック」、「 ログ」、「 統計」、および「 学習 」アクションを有効または無効にするには、表のチェックボックスをオンまたはオフにして「 OK」をクリックし、「 保存して閉じる 」をクリックします。[セキュリティチェック] ウィンドウを閉じます。
b。このセキュリティチェックのオプションをさらに構成する場合は、[ HTMLクロスサイトスクリプティング]をダブルクリックするか、行を選択して[ アクション設定]をクリックして、次のオプションを表示します。
クロスサイトスクリプトの変換:安全でないスクリプトタグを変換します。
クロスサイトスクリプティングの完全な URL を確認する:URL のクエリ部分だけをチェックするのではなく、完全な URL でクロスサイトスクリプト違反がないか確認します。
上記の設定のいずれかを変更したら、[OK] をクリックして変更を保存し、[セキュリティチェック] テーブルに戻ります。必要に応じて、他のセキュリティー検査の設定に進むことができます。[ OK] をクリックして[セキュリティチェック] セクションで行ったすべての変更を保存し、[保存して閉じる ]をクリックして[セキュリティチェック]ウィンドウを閉じます。
チェック要求ヘッダーの 設定を有効または無効にするには、 [詳細設定] ウィンドウの [プロファイル設定] をクリックします。[共通設定]で、[要求ヘッダーをチェック] チェックボックスをオンまたはオフにします。[OK]をクリックします。 [プロファイル設定]ペインの右上にある X]アイコンを使用してこのセクションを閉じるか、このプロファイルの構成が完了したら、[完了]をクリックしてアプリケーションファイアウォール>プロファイルに戻ることができます。
チェック要求クエリ非 HTML 設定を有効または無効にするには、[詳細設定]ウィンドウの [プロファイル設定] をクリックします。[共通設定]で、[HTML 以外の要求クエリを確認する] チェックボックスをオンまたはオフにします。[OK] をクリックします。[Profile Settings] ペインの右上にある [X] アイコンを使用してこのセクションを閉じるか、このプロファイルの設定が完了したら、[完了] をクリックして [App Firewall] > [Profile] に戻ります。
GUI を使用して HTML クロスサイトスクリプティングの緩和ルールを構成するには
- アプリケーションファイアウォールに移動 します > プロファイルをクリックし、ターゲットプロファイルを強調表示して、[ 編集]をクリックします。
- [詳細設定] ペインで、[緩和規則] をクリックします。
- 「リラクゼーション規則」テーブルで、「 HTML クロスサイトスクリプティング」 エントリをダブルクリックするか、エントリを選択して「 編集 」をクリックします。
- [HTML クロスサイトスクリプティング緩和規則] ダイアログで、緩和規則の [追加]、[編集]、[削除]、[有効化]、または [無効 化] の操作を実行します。
注
新しいルールを追加する場合、[値の **タイプフィールド] で [タグ] または [属性] または [パターン] オプションを選択しない限り、[値の 式**] フィールドは表示されません。
ビジュアライザーを使用して HTML クロスサイトスクリプティング緩和ルールを管理するには
すべての緩和規則をまとめて表示するには、[リラクゼーション規則] テーブルの [HTML クロスサイトスクリプティング] 行をハイライト表示し、[ビジュアライザー] をクリックします。展開されたリラクゼーションのビジュアライザーには、新しいルールを 追加 するか、既存のルールを 編集 するオプションがあります。ノードを選択し、緩和ビジュアライザの対応するボタンをクリックして、ルールのグループ を有効 または 無効に することもできます。
GUI を使用してクロスサイトスクリプティングパターンを表示またはカスタマイズするには
GUI を使用して、クロスサイトスクリプティングが許可される属性または許可されるタグのデフォルトのリストを表示またはカスタマイズできます。クロスサイトスクリプティング拒否パターンのデフォルトリストを表示またはカスタマイズすることもできます。
既定のリストは、[アプリケーションファイアウォール] > [署名] > [既定の署名] で指定されます。 プロファイルに署名オブジェクトをバインドしない場合、Default Signatures オブジェクトで指定されたデフォルトのクロスサイトスクリプティング許可リストと拒否リストが、クロスサイトスクリプティングのセキュリティチェック処理のためにプロファイルで使用されます。デフォルトのシグネチャオブジェクトで指定されているタグ、属性、およびパターンは読み取り専用です。編集や修正はできません。 これらを変更または変更する場合は、Default Signatures オブジェクトのコピーを作成して、ユーザー定義シグニチャオブジェクトを作成します。新しい User-defined シグニチャオブジェクトの許可リストまたは拒否リストを変更し、カスタマイズされた許可リストおよび拒否リストを使用するトラフィックを処理しているプロファイルでこのシグニチャオブジェクトを使用します。
- デフォルトのクロスサイトスクリプティングパターンを表示するには:
a. 「 アプリケーションファイアウォール 」>「 署名 」に移動し、「 デフォルト署名 」を選択して「 編集 」をクリックします。次に、[ 管理]をクリックします SQL/cross-site スクリプトパターン。
管理 SQL/cross-site スクリプトパステーブルは、クロスサイトスクリプティングに関連する次の3行を示しています。
xss/allowed/attribute
xss/allowed/tag
xss/denied/pattern
b. 行 を選択して「 要素を管理 」をクリックすると、Web App Firewall のクロスサイトスクリプティングチェックで使用される対応する クロスサイトスクリプティング 要素(タグ、属性、パターン)が表示されます。
- クロスサイトスクリプティング要素をカスタマイズするには: ユーザー定義の署名オブジェクトを編集して、許可されたタグ、許可された属性、および拒否されたパターンをカスタマイズできます。新しいエントリを追加したり、既存のエントリを削除したりできます。
a. [ アプリケーションファイアウォール ] > [ 署名] に移動し、ターゲットの [ユーザー定義署名] を選択し、[ 編集] をクリックします。[ 管理]をクリックします SQL/cross-site管理 を表示するためのスクリプトパターン SQL/cross-site スクリプトパステーブル。
b. ターゲットのクロスサイトスクリプティング行 を選択します。
i. [要素の管理]をクリックして、対応するクロスサイトスクリプティング要素を[追加]、[編集]、または[削除]します。
ii. [ 削除 ] をクリックして、選択した行を削除します。
警告:
デフォルトのクロスサイトスクリプティング要素を削除または変更する前、またはクロスサイトスクリプティングパスを削除して行全体を削除する前に、注意する必要があります。シグニチャルールとクロスサイトスクリプティングセキュリティチェックは、アプリケーションを保護するための攻撃を検出するためにこれらの要素に依存しています。クロスサイトスクリプティング要素をカスタマイズすると、編集中に必要なパターンが削除された場合、アプリケーションがクロスサイトスクリプティング攻撃に対して脆弱になる可能性があります。
HTML クロスサイトスクリプティングチェックでの Learn 機能の使用
「学習」アクションが有効になっている場合、Citrix Web App Firewall学習エンジンはトラフィックを監視し、クロスサイトスクリプティングURL違反を学習します。クロスサイトスクリプティングURLルールを定期的に検査し、誤検知のシナリオがないかどうかを展開できます。
注:
クラスター構成では、クロスサイトスクリプティングURLルールを展開するには、すべてのノードが同じバージョンである必要があります。
HTMLクロスサイトスクリプティング学習の機能強化。Web App Firewallの学習機能拡張は、Citrix ADCソフトウェアのリリース11.0で導入されました。きめ細かなHTMLクロスサイトスクリプティングリラクゼーションをデプロイするために、Web App Firewall はきめ細かなHTMLクロスサイトスクリプティング学習を提供します。 学習エンジンは、観測された値のタイプ(タグ、属性、パターン)および入力フィールドで観測された対応する値式に関する推奨事項を作成します。ブロックされたリクエストをチェックして、現在のルールが制限が厳しく、緩和する必要があるかどうかを判断するだけでなく、学習エンジンによって生成されたルールを確認して、違反を引き起こしている値タイプと値式を判断し、で対処する必要があります。リラクゼーションルール。
注:
Web App Firewall の学習エンジンは、名前の最初の 128 バイトだけを区別できます。フォームに、最初の 128 バイトに一致する名前のフィールドが複数ある場合、学習エンジンはそれらを区別できないことがあります。同様に、展開された緩和ルールは、そのようなフィールドを HTML クロスサイトスクリプティングインスペクションから誤って緩和することがあります。 ヒント
12 文字を超えるクロスサイトスクリプティングタグは、正しく学習またはログに記録されません。
学習のためにより長いタグ長が必要な場合は、表示されない大きなタグをに追加できます。 AS_cross-site scripting_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 を使用して学習したデータを表示または使用するには
- アプリケーションファイアウォールに移動 します > プロファイルをクリックし、ターゲットプロファイルを強調表示して、[ 編集]をクリックします。
- [詳細設定] ウィンドウで、[学習ルール] をクリックします。[学習済みルール] テーブルで [HTML クロスサイトスクリプティング] エントリを選択し、ダブルクリックすると、学習済みルールにアクセスできます。このテーブルには、[ フィールド名]、[アクションURL]、[ 値のタイプ]、[ 値]、および[ ヒット数] 列が表示されます。学習したルールを展開するか、緩和ルールとして展開する前にルールを編集できます。ルールを破棄するには、ルールを選択して [スキップ] ボタンをクリックします。一度に編集できるルールは 1 つだけですが、複数のルールを選択して展開またはスキップできます。
また、「学習ルール」(Learned Rules) テーブルで「HTML クロスサイトスクリプティング」( HTML Cross-Site Scripting ) エントリを選択し、「ビジュアライザ」( Visualizer ) をクリックして、学習したすべての違反の統合ビューを表示することもできます。ビジュアライザを使用すると、学習したルールを簡単に管理できます。データの包括的なビューを 1 つの画面に表示し、1 回のクリックでルールのグループに対するアクションを簡単に実行できます。ビジュアライザーの最大の利点は、複数のルールを統合するために正規表現を推奨することです。区切り文字とアクション URL に基づいて、これらのルールのサブセットを選択できます。ドロップダウンリストから番号を選択すると、ビジュアライザーに 25、50、または 75 のルールを表示できます。学習したルールのビジュアライザーには、ルールを編集して緩和として展開するオプションがあります。または、ルールをスキップして無視することもできます。
HTMLクロスサイトスクリプティングチェックでログ機能を使用する
ログアクションを有効にすると、HTMLクロスサイトスクリプティングのセキュリティチェック違反が監査ログに次のように記録されます。 APPFW_cross-site スクリプト 違反。Web App Firewall は、ネイティブログ形式と CEF ログ形式の両方をサポートしています。ログをリモート syslog サーバに送信することもできます。
コマンドラインを使用してログメッセージにアクセスするには
シェルに切り替えて、 /var/log/
フォルダー内のns.logsを末尾に移動し、HTMLクロスサイトスクリプティング違反に関連するログメッセージにアクセスします。
Shell
tail -f /var/log/ns.log | grep APPFW_cross-site scripting
CEFログ形式のクロスサイトスクリプティングセキュリティチェック違反ログメッセージの例:
Jul 11 00:45:51 <local0.info> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|\*\*APPFW_cross-site scripting\*\*|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\*\*
<!--NeedCopy-->
トランスフォームアクションを示すネイティブログ形式のクロスサイトスクリプティングセキュリティチェック違反ログメッセージの例
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_cross-site scripting\*\* 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>\*\*
<!--NeedCopy-->
GUIを使用してログメッセージにアクセスする
Citrix GUIには、ログメッセージを分析するための便利なツール(Syslog Viewer)が含まれています。Syslog ビューアには、次の複数のオプションがあります。
- [アプリケーションファイアウォール] > [プロファイル] に移動し、ターゲットプロファイルを選択して [セキュリティチェック] をクリックします。[HTML クロスサイトスクリプティング] 行をハイライト表示し、[ログ] をクリックします。プロファイルの HTML クロスサイトスクリプティングチェックから直接ログにアクセスすると、GUI によってログメッセージが除外され、これらのセキュリティチェック違反に関連するログのみが表示されます。
- 「 Citrix ADC 」>「 システム 」>「 監査 」の順に選択して、Syslogビューアにアクセスすることもできます。 [ 監査メッセージ ] セクションで、[ Syslog メッセージ ] リンクをクリックして Syslog Viewer を表示します。このビューアーには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。これは、要求処理中に複数のセキュリティー検査違反がトリガーされる可能性がある場合のデバッグに役立ちます。
- [アプリケーションファイアウォール] > [ポリシー] > [監査] に移動します。[監査メッセージ] セクションで、[ Syslog メッセージ ] リンクをクリックして Syslog Viewer を表示します。このビューアーには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。
HTML ベースの Syslog ビューアには、関心のあるログメッセージのみを選択するためのさまざまなフィルタオプションがあります。 HTMLクロスサイトスクリプティング チェックのログメッセージを選択するには、 モジュールの ドロップダウンリストオプションで APPFWを選択してフィルタリングします。[Event Type] リストには、選択内容をさらに絞り込むための豊富なオプションが用意されています。たとえば、 APPFW_cross-site [ スクリプト ]チェックボックスをオンにして[ 適用 ]ボタンをクリックすると、HTMLクロスサイトスクリプティングのセキュリティチェック違反に関連するログメッセージのみがSyslogビューアに表示されます。
特定のログメッセージの行にカーソルを置くと、ログメッセージの下に、 モジュール、 イベントタイプ、 イベント ID、 クライアント IP などの複数のオプションが表示されます。これらのオプションのいずれかを選択して、ログメッセージ内の対応する情報を強調表示することができます。
[クリックして展開] 機能は、GUI でのみ使用できます。Syslog Viewer を使用すると、ログを表示するだけでなく、Web App Firewall セキュリティチェック違反のログメッセージに基づいて HTML クロスサイトスクリプティング緩和ルールを展開することもできます。この操作では、ログメッセージは CEF ログ形式である必要があります。クリックして展開機能は、ブロック (またはブロックしない) アクションによって生成されたログメッセージに対してのみ使用できます。変換操作に関するログメッセージのリラクゼーションルールは展開できません。
Syslog Viewer から緩和ルールを展開するには、ログメッセージを選択します。選択した行の [Syslog Viewer] ボックスの右上隅にチェックボックスが表示されます。チェックボックスをオンにし、[アクション] リストからオプションを選択して、緩和ルールを展開します。[編集と配備]、[配備]、[すべて配備] は、[アクション]オプションとして利用できます。
[クリックして 展開する] オプションを使用して展開される HTML クロスサイトスクリプティングルールには、細粒緩和の推奨事項は含まれません。
GUIを使用してクリックしてデプロイする機能を構成する
- Syslogビューアで、 モジュール オプションで APPFW を選択します。
- を選択 APP_cross-site 対応するログメッセージをフィルタリングするための イベントタイプ としての スクリプト 。
- 展開するルールを識別するには、チェックボックスをオンにします。
- 緩和ルールを展開するには、オプションの [Action] ドロップダウンリストを使用します。
- 対応する緩和規則セクションに規則が表示されていることを確認します。
HTML クロスサイトスクリプティング違反の統計
stats アクションが有効な場合、Web App Firewall がこのセキュリティチェックに対して何らかのアクションを実行すると、HTML クロスサイトスクリプティングチェックのカウンタが増加します。統計は、トラフィック、違反、およびログのレートと合計数について収集されます。ログカウンタの増分サイズは、構成された設定によって異なります。たとえば、ブロックアクションが有効になっている場合、3 つの HTML クロスサイトスクリプティング違反を含むページのリクエストでは、最初の違反が検出されるとすぐにページがブロックされるため、stats カウンタが 1 つ増えます。ただし、ブロックが無効になっている場合、同じ要求を処理すると、違反とログの統計カウンタが 3 ずつ増加します。これは、違反ごとに個別のログメッセージが生成されるためです。
コマンドラインを使用して HTML クロスサイトスクリプティングチェック統計を表示するには
コマンドプロンプトで入力します。
> sh appfw stats
特定のプロファイルの統計情報を表示するには、次のコマンドを使用します。
> **stat appfw profile** <profile name>
GUIを使用してHTMLクロスサイトスクリプティング統計を表示する
- [セキュリティ] > [アプリケーションファイアウォール] > [プロファイル] > [統計] に移動します。
- 右側のペインで、[統計 リンク] にアクセスします。
- スクロールバーを使用して、HTML クロスサイトスクリプティング違反とログに関する統計を表示します。統計テーブルはリアルタイムデータを提供し、7秒ごとに更新されます。
ハイライト
- HTMLクロスサイトスクリプティング攻撃保護の組み込みサポート—Citrix Web App Firewallは、許可された属性とタグの組み合わせ、および受信したペイロードの拒否されたパターンを監視することにより、クロスサイトスクリプティング攻撃から保護します。クロスサイトスクリプティングチェックで使用される組み込みのデフォルト許可タグ、許可された属性、拒否されたパターンはすべて、/netscaler/default_custom_settings.xml ファイルで指定されています。
- Customization:タグ、属性、およびパターンのデフォルトリストを変更して、アプリケーションの特定のニーズに合わせてクロスサイトスクリプティングセキュリティチェック検査をカスタマイズできます。デフォルトのシグニチャオブジェクトのコピーを作成するか、既存のエントリを変更するか、新しいシグニチャオブジェクトを追加します。カスタマイズした設定を使用するには、このシグニチャオブジェクトをプロファイルにバインドします。
- ハイブリッドセキュリティモデル-シグニチャと詳細なセキュリティ保護の両方で、 SQL/cross-site プロファイルにバインドされている署名オブジェクトで指定されたスクリプトパターン。署名オブジェクトがプロファイルにバインドされていない場合、 SQL/cross-site デフォルトの署名オブジェクトに存在するスクリプトパターンが使用されます。
- Transform:変換操作について、次の点に注意してください。
変換操作は、他のクロスサイトスクリプティングアクション設定とは独立して機能します。変換が有効で、ブロック、ログ、統計、学習がすべて無効になっている場合、クロスサイトスクリプティングタグが変換されます。
ブロックアクションが有効になっている場合は、変換アクションよりも優先されます。
- きめの細かいリラクゼーションと学習。緩和ルールを微調整して、セキュリティチェック検査からクロスサイトスクリプティング要素のサブセットを緩和し、残りを検出します。学習エンジンは、観測されたデータに基づいて、特定の値のタイプと値の式を推奨しています。
- [クリックして展開]:syslog ビューアで 1 つまたは複数のクロスサイトスクリプティング違反ログメッセージを選択し、緩和ルールとして展開します。
- 文字セット:プロファイルのデフォルトの文字セットは、アプリケーションのニーズに基づいて設定する必要があります。デフォルトでは、プロファイル文字セットは英語 (米国) (ISO-8859-1) に設定されています。指定された文字セットなしで要求を受信した場合、Web App Firewall は ISO-8859-1 であるかのように要求を処理します。開き角かっこ文字( < )または閉じ角かっこ文字 (>) これらの文字が他の文字セットでエンコードされている場合、クロスサイトスクリプティングタグとして解釈されません。たとえば、リクエストに UTF-8 文字列 “%uff1cscript%uff1e“が含まれているが、リクエストページで文字セットが指定されていない場合、プロファイルのデフォルトの文字セットが Unicode として指定されていない限り、クロスサイトスクリプティング違反はトリガーされない可能性があります。