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 プロファイルの \[設定\] タブでこのパラメータを設定できます。
クロスサイトスクリプティングきめ細かなリラックス
-
クロスサイトスクリプティング許可される属性: 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のデフォルトの拒否パターンがあります
-
値式はオプションの引数です。フィールド名には値式がない場合があります。
-
フィールド名は、複数の値式にバインドできます。
-
値式には値型を割り当てる必要があります。クロスサイトスクリプティングの値の種類は、1) タグ、2) 属性、3) パターンです。
-
フィールド名/URLの組み合わせごとに複数の緩和ルールを持つことができます
-
フォームフィールド名およびアクション URL では、大文字と小文字は区別されません。
コマンドラインを使用した 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)パラメーターの説明は、ページの下部に記載されています。」
-
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クロスサイトスクリプティングチェックを構成する
-
アプリケーションファイアウォールに移動 します > プロファイルをクリックし、ターゲットプロファイルを強調表示して、\[ 編集\]をクリックします。
-
\[ 詳細設定 \] ウィンドウで、\[ セキュリティチェック\] をクリックします。
-
アプリケーションファイアウォールに移動 します > プロファイルをクリックし、ターゲットプロファイルを強調表示して、\[ 編集\]をクリックします。
-
\[詳細設定\] ペインで、\[緩和規則\] をクリックします。
-
「リラクゼーション規則」テーブルで、「 HTML クロスサイトスクリプティング」 エントリをダブルクリックするか、エントリを選択して「 編集 」をクリックします。
-
\[HTML クロスサイトスクリプティング緩和規則\] ダイアログで、緩和規則の \[追加\]、\[**編集\]、\[削除\]、\[**有効化\]、または \[無効 化\] の操作を実行します。
-
デフォルトのクロスサイトスクリプティングパターンを表示するには:
xss/allowed/attribute
xss/allowed/tag
xss/denied/pattern
-
クロスサイトスクリプティング要素をカスタマイズするには: ユーザー定義の署名オブジェクトを編集して、許可されたタグ、許可された属性、および拒否されたパターンをカスタマイズできます。新しいエントリを追加したり、既存のエントリを削除したりできます。
HTML クロスサイトスクリプティングチェックでの Learn 機能の使用
-
show appfw learningdata <profilename> crossSiteScripting -
rm appfw learningdata <profilename> -crossSiteScripting <string> <formActionURL> [<location>] [<valueType> <valueExpression>] -
export appfw learningdata <profilename> **crossSiteScripting*
-
アプリケーションファイアウォールに移動 します > プロファイルをクリックし、ターゲットプロファイルを強調表示して、\[ 編集\]をクリックします。
-
\[詳細設定\] ウィンドウで、\[学習ルール\] をクリックします。\[学習済みルール\] テーブルで \[HTML クロスサイトスクリプティング\] エントリを選択し、ダブルクリックすると、学習済みルールにアクセスできます。このテーブルには、\[ フィールド名\]、\[アクションURL\]、\[ 値のタイプ\]、\[ 値\]、および\[ ヒット数\] 列が表示されます。学習したルールを展開するか、緩和ルールとして展開する前にルールを編集できます。ルールを破棄するには、ルールを選択して \[スキップ\] ボタンをクリックします。一度に編集できるルールは 1 つだけですが、複数のルールを選択して展開またはスキップできます。
HTMLクロスサイトスクリプティングチェックでログ機能を使用する
/var/log/ フォルダー内のns.logsを末尾に移動し、HTMLクロスサイトスクリプティング違反に関連するログメッセージにアクセスします。
Shell tail -f /var/log/ns.log | grep APPFW_cross-site scripting
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\*\*
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>\*\*
GUIを使用してログメッセージにアクセスする
-
\[アプリケーションファイアウォール\] > \[プロファイル\] に移動し、ターゲットプロファイルを選択して \[セキュリティチェック\] をクリックします。\[HTML クロスサイトスクリプティング\] 行をハイライト表示し、\[ログ\] をクリックします。プロファイルの HTML クロスサイトスクリプティングチェックから直接ログにアクセスすると、GUI によってログメッセージが除外され、これらのセキュリティチェック違反に関連するログのみが表示されます。
-
「 Citrix ADC 」>「 システム 」>「 監査 」の順に選択して、Syslogビューアにアクセスすることもできます。 \[ 監査メッセージ \] セクションで、\[ Syslog メッセージ \] リンクをクリックして Syslog Viewer を表示します。このビューアーには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。これは、要求処理中に複数のセキュリティー検査違反がトリガーされる可能性がある場合のデバッグに役立ちます。
-
\[アプリケーションファイアウォール\] > \[ポリシー\] > \[監査\] に移動します。\[監査メッセージ\] セクションで、\[ Syslog メッセージ \] リンクをクリックして Syslog Viewer を表示します。このビューアーには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。
GUIを使用してクリックしてデプロイする機能を構成する
-
Syslogビューアで、 モジュール オプションで APPFW を選択します。
-
を選択 APP_cross-site 対応するログメッセージをフィルタリングするための イベントタイプ としての スクリプト 。
-
展開するルールを識別するには、チェックボックスをオンにします。
-
緩和ルールを展開するには、オプションの \[Action\] ドロップダウンリストを使用します。
-
対応する緩和規則セクションに規則が表示されていることを確認します。
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 として指定されていない限り、クロスサイトスクリプティング違反はトリガーされない可能性があります。