HTML クロスサイトスクリプティングチェック
-
ブロック — ブロックを有効にすると、リクエストでクロスサイトスクリプティングタグが検出されると、ブロックアクションがトリガーされます。
-
:ログ機能を有効にすると**、HTML クロスサイトスクリプティングチェックでは、実行したアクションを示すログメッセージが生成されます。ブロックを無効にすると、クロスサイトスクリプティング違反が検出されたヘッダーまたはフォームフィールドごとに個別のログメッセージが生成されます。ただし、要求がブロックされると、1 つのメッセージだけが生成されます。同様に、クロスサイトスクリプティングタグが複数のフィールドで変換された場合でも、変換操作ではリクエストごとに 1 つのログメッセージが生成されます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとしたことを示している可能性があります。
-
学習-どの緩和ルールがアプリケーションに適しているかわからない場合は、学習機能を使用して、学習データに基づいて HTML クロスサイトスクリプティングルールの推奨事項を生成できます。Web App Firewall 学習エンジンは、トラフィックを監視し、観測された値に基づいて学習の推奨事項を提供します。パフォーマンスを損なうことなく最適な効果を得るには、学習オプションを短時間有効にしてルールの代表的なサンプルを取得し、ルールを展開して学習を無効にすることをお勧めします。
-
クロスサイトスクリプトの変換-有効にすると、Web App Firewall は HTML クロスサイトスクリプティングチェックに一致するリクエストに対して次の変更を加えます。
-
左山かっこ (<) から HTML 文字エンティティに相当する (<)
-
右山括弧 (>) を HTML 文字エンティティに相当 (>)
-
<script>などの安全でないHTMLタグを解釈して悪質なコードを実行することがなくなります。リクエストヘッダーのチェックと変換の両方を有効にすると、リクエストヘッダーで見つかった特殊文字もすべて変更されます。保護された Web サイト上のスクリプトにクロスサイトスクリプティング機能が含まれているが、Web サイトがこれらのスクリプトに依存して正しく動作しない場合は、ブロックを無効にして変換を有効にしても問題ありません。この構成により、クロスサイトスクリプティング攻撃の可能性を阻止しながら、正当な Web トラフィックがブロックされなくなります。
-
クロスサイトスクリプティングの完全な URL を確認します。完全な URL のチェックが有効な場合、Web App Firewall は URL のクエリ部分だけをチェックするのではなく、HTML クロスサイトスクリプティング攻撃について URL 全体を検査します。
クロスサイトスクリプティングきめ細かなリラクゼーション
-
クロスサイトスクリプティング許可される属性**: abbr、 accesskey、 align、 alt、 axis、 bgcolor、 ボーダー、 セルパディング、セルなど、デフォルトで許可される属性は 52 種類あります。間隔**、char、charoff、文字セットなど
-
クロスサイトスクリプティング許可タグ: アドレス、 basefont、 bgsound、 big、 blockquote、 bg、 br、 caption、 centerなど、47個のデフォルトで許可されているタグがあります。 ****引用、 dd、 delなど
-
クロスサイトスクリプティング拒否パターン: fsCommand、 javascript:、 onAbort、onActivate など、129 のデフォルト拒否パターンがあります。
-
値式はオプションの引数です。フィールド名には値式がない場合があります。
-
フィールド名は複数の値式にバインドできます。
-
値式には値型を割り当てる必要があります。クロスサイトスクリプティング値のタイプには、1) タグ、2) 属性、3) パターンがあります。
-
フィールド名と URL の組み合わせごとに複数の緩和ルールを設定できます。
-
フォームフィールド名とアクション URL では、大文字と小文字は区別されません。
コマンドラインを使用した HTML クロスサイトスクリプティングチェックの設定
-
<name> -crossSiteScriptingAction (([block] [learn] [log] [stats]) | [**none**]) -
[appfw プロファイルのトピックを設定します。
-
<name> **-crossSiteScriptingTransformUnsafeHTML** (ON | OFF) -
<name> -crossSiteScriptingCheckCompleteURLs (ON | OFF) -
\`<name> -CheckRequestHeaders (オン \| オフ)
-
<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 クロスサイトスクリプティング 」エントリをダブルクリックするか、エントリを選択して「 編集」をクリックします。
-
デフォルトのクロスサイトスクリプティングパターンを表示するには:
xss/allowed/attribute
xss/allowed/tag
xss/denied/pattern
-
クロスサイトスクリプティング要素をカスタマイズするには:User-Defined signature オブジェクトを編集して、許可されたタグ、許可される属性、および拒否されたパターンをカスタマイズできます。新しいエントリを追加したり、既存のエントリを削除したりできます。
HTML クロスサイトスクリプティング (クロスサイトスクリプティング) 違反の学習
-
show appfw learningdata <profilename> crossSiteScripting -
rm appfw learningdata <profilename> -crossSiteScripting <string> <formActionURL> [<location>] [<valueType> <valueExpression>] -
export appfw learningdata <profilename> **crossSiteScripting*
カスタムタグをバイパスするようにクロスサイトスクリプティングのファイングレインリラクゼーションを構成する
bind appfw profile p1 -crossSiteScripting <string> <formActionURL> -valueType <valueType> <value expression>
bind appfw profile profile1 -crossSiteScripting formfield1 http://1.1.1.1 -valueType Tag tag1
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|NetScaler|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 を使用してログメッセージにアクセスする
-
「 NetScaler 」>「 システム 」>「 監査 」の順に選択して、Syslogビューアにアクセスすることもできます。 「 監査メッセージ 」セクションで、「 Syslogメッセージ 」リンクをクリックすると、Syslogビューアが表示されます。Syslogビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。これは、要求処理中に複数のセキュリティチェック違反がトリガーされる可能性がある場合のデバッグに役立ちます。
-
アプリケーションファイアウォール > ポリシー > 監査に移動します。「監査メッセージ」セクションで、「 Syslogメッセージ 」リンクをクリックすると、Syslogビューアが表示されます。Syslogビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。
GUI を使用してクリックして展開機能を構成する
HTML クロスサイトスクリプティング違反の統計
> sh appfw stats
> **stat appfw profile** <profile name>
GUI を使用して HTML クロスサイトスクリプティングの統計情報を表示する
ハイライト
-
HTMLクロスサイトスクリプティング攻撃保護の組み込みサポート:NetScaler Web App Firewallは、受信したペイロード内の許可された属性とタグ、および拒否されたパターンの組み合わせを監視することにより、クロスサイトスクリプティング攻撃から保護します。クロスサイトスクリプティングチェックで使用される組み込みのデフォルト許可タグ、許可される属性、および拒否パターンは、すべて /netscaler/default_custom_settings.xml ファイルに指定されています。
-
ハイブリッドセキュリティモデル-シグニチャとディープセキュリティ保護の両方で、プロファイルにバインドされたシグニチャオブジェクトで指定された SQL/Cross-Site スクリプティングパターンが使用されます。シグニチャオブジェクトがプロファイルにバインドされていない場合は、デフォルトのシグニチャオブジェクトに存在する SQL/Cross-Site スクリプティングパターンが使用されます。
-
きめ細かなリラクゼーションと学習。緩和ルールを微調整して、クロスサイトスクリプティング要素のサブセットをセキュリティチェックインスペクションから解放し、残りは検出します。学習エンジンは、観測されたデータに基づいて、特定の値のタイプと値の式を推奨しています。
-
Charset:アプリケーションの必要性に基づいて、プロファイルのデフォルトの文字セットを設定する必要があります。デフォルトでは、プロファイル文字セットは英語 (US) (ISO-8859-1) に設定されています。指定された文字セットなしでリクエストを受信すると、Web App Firewall はそのリクエストを ISO-8859-1 であるかのように処理します。開き括弧文字 (<) or the close bracket character (>) は、他の文字セットでエンコードされている場合、クロスサイトスクリプティングタグとして解釈されません。たとえば、リクエストに UTF-8 文字列 "%uff1cscript%uff1e**"**が含まれているが、リクエストページで文字セットが指定されていない場合、プロファイルのデフォルトの文字セットが Unicode として指定されていない限り、クロスサイトスクリプティング違反はトリガーされない可能性があります。