ADC

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 クロスサイトスクリプティング保護を設定するには、次のいずれかのアクションを設定します。

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

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

  • クロスサイトスクリプティングの完全な URL を確認します。完全な URL のチェックが有効な場合、Web App Firewall は URL のクエリ部分だけをチェックするのではなく、HTML クロスサイトスクリプティング攻撃について URL 全体を検査します。
  • [リクエストヘッダー] を確認します。リクエストヘッダーチェックが有効な場合、Web App Firewall は URL だけでなく HTML クロスサイトスクリプティング攻撃のリクエストのヘッダーを検査します。GUI を使用する場合は、Web App Firewall プロファイルの [設定] タブでこのパラメーターを有効にできます。
  • QueryContentTypesを検査します。リクエストクエリインスペクションが設定されている場合、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 には、次のクロスサイトスクリプティングビルトインリストがあります。

  1. クロスサイトスクリプティング許可される属性: **abbraccesskeyalignaltaxisbgcolorボーダーセルパディング、セルなど、デフォルトで許可される属性は 52 種類あります。間隔charcharoff文字セットなど**
  2. クロスサイトスクリプティング許可タグアドレスbasefontbgsoundbigblockquotebgbrcaptioncenterなど、47個のデフォルトで許可されているタグがあります。 **引用、 **dddelなど
  3. クロスサイトスクリプティング拒否パターンfsCommandjavascript:onAbort、onActivate** など、129 のデフォルト拒否パターンがあります。

警告

Web App Firewall アクション URL は正規表現です。HTML クロスサイトスクリプティング緩和ルールを構成する場合、[ 名前] と [ 値の式 ] をリテラルまたは RegEx に指定できます。正規表現は強力です。特に PCRE 形式の正規表現に慣れていない場合は、作成した正規表現をすべて再確認してください。例外として追加するルールを正確に定義し、それ以外は何も定義していないことを確認してください。ワイルドカード、特にドットとアスタリスク (.*) メタ文字やワイルドカードの組み合わせを不注意に使用すると、意図していなかった Web コンテンツへのアクセスをブロックしたり、HTML クロスサイトスクリプティングチェックでブロックされていた攻撃を許可したりするなど、望ましくない結果になる可能性があります。

考慮すべきポイント:

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

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

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

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力して 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 クロスサイトスクリプティング保護を設定するには、次のいずれかのアクションを設定します。

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

これにより、ブラウザが<!JEKYLL@5140@0>などの安全でないHTMLタグを解釈して悪質なコードを実行することがなくなります。リクエストヘッダーのチェックと変換の両方を有効にすると、リクエストヘッダーで見つかった特殊文字もすべて変更されます。保護された Web サイト上のスクリプトにクロスサイトスクリプティング機能が含まれているが、Web サイトがこれらのスクリプトに依存して正しく動作しない場合は、ブロックを無効にして変換を有効にしても問題ありません。この構成により、クロスサイトスクリプティング攻撃の可能性を阻止しながら、正当な Web トラフィックがブロックされなくなります。

  • クロスサイトスクリプティングの完全な URL を確認します。完全な URL のチェックが有効な場合、Web App Firewall は URL のクエリ部分だけをチェックするのではなく、HTML クロスサイトスクリプティング攻撃について URL 全体を検査します。
  • [リクエストヘッダー] を確認します。リクエストヘッダーチェックが有効な場合、Web App Firewall は URL だけでなく HTML クロスサイトスクリプティング攻撃のリクエストのヘッダーを検査します。GUI を使用する場合は、Web App Firewall プロファイルの [設定] タブでこのパラメーターを有効にできます。
  • QueryContentTypesを検査します。リクエストクエリインスペクションが設定されている場合、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 には、次のクロスサイトスクリプティングビルトインリストがあります。

  1. クロスサイトスクリプティング許可される属性: **abbraccesskeyalignaltaxisbgcolorボーダーセルパディング、セルなど、デフォルトで許可される属性は 52 種類あります。間隔charcharoff文字セットなど**
  2. クロスサイトスクリプティング許可タグアドレスbasefontbgsoundbigblockquotebgbrcaptioncenterなど、47個のデフォルトで許可されているタグがあります。 **引用、 **dddelなど
  3. クロスサイトスクリプティング拒否パターンfsCommandjavascript:onAbort、onActivate** など、129 のデフォルト拒否パターンがあります。

警告

Web App Firewall アクション URL は正規表現です。HTML クロスサイトスクリプティング緩和ルールを構成する場合、[ 名前] と [ 値の式 ] をリテラルまたは RegEx に指定できます。正規表現は強力です。特に PCRE 形式の正規表現に慣れていない場合は、作成した正規表現をすべて再確認してください。例外として追加するルールを正確に定義し、それ以外は何も定義していないことを確認してください。ワイルドカード、特にドットとアスタリスク (.*) メタ文字やワイルドカードの組み合わせを不注意に使用すると、意図していなかった Web コンテンツへのアクセスをブロックしたり、HTML クロスサイトスクリプティングチェックでブロックされていた攻撃を許可したりするなど、望ましくない結果になる可能性があります。

考慮すべきポイント:

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

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

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

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

- checkRequestHeaders \(ON | OFF) - ` - CheckRequestQueryNonHtml (ON | OFF)` コマンドラインを使用して HTML クロスサイトスクリプティングチェック緩和ルールを構成するには バインドを追加または削除するには、次のように bind または unbind コマンドを使用します。 - `bind appfw profile -crossSiteScripting [isRegex (REGEX | NOTREGEX)] [-location ] [-valueType (Tag|Attribute|Pattern) [] [-isValueRegex (REGEX | NOTREGEX) ]]` - `unbind appfw profile -crossSiteScripting [-location ] [-valueType (Tag |Attribute|Pattern) []]` ## GUI を使用した HTML クロスサイトスクリプティングチェックの設定 GUI では、アプリケーションに関連付けられているプロファイルのペインで HTML クロスサイトスクリプティングチェックを設定できます。 GUI を使用して HTML クロスサイトスクリプティングチェックを構成または変更するには 1. [ **アプリケーションファイアウォール** ] > [ **プロファイル**] に移動し、ターゲットプロファイルを強調表示して、[ **編集**] をクリックします。 1. [ **詳細設定** ] ペインで、[ **セキュリティチェック**] をクリックします。 セキュリティー検査テーブルには、すべてのセキュリティー検査に対して現在構成されているアクション設定が表示されます。設定には次の 2 つのオプションがあります。 a. HTML クロスサイトスクリプティングの「 **ブロック**」、「 **ログ**」、「 **統計**」、および「 **学習** 」アクションを有効または無効にする場合は、テーブル内のチェックボックスをオンまたはオフにして、「 **OK」**をクリックし、「 **保存して閉じる** 」をクリックして **[セキュリティチェック** ] ペイン。 b. このセキュリティー検査のオプションをさらに構成する場合は、[ **HTML クロスサイトスクリプティング**] をダブルクリックするか、行を選択して [ **アクションの設定**] をクリックし、次のオプションを表示します。 **クロスサイトスクリプトの変換**-安全でないスクリプトタグを変換します。 **完全な URL でクロスサイトスクリプティングを確認する**-URL のクエリ部分だけをチェックするのではなく、完全な URL でクロスサイトスクリプト違反をチェックします。 上記の設定のいずれかを変更したら、「 **OK」** をクリックして変更内容を保存し、「セキュリティチェック」(Security Checks) テーブルに戻ります。必要に応じて、他のセキュリティー検査の設定に進むことができます。[ **OK** ]をクリックして[ **セキュリティチェック** ]セクションで行った変更をすべて保存し、[ **保存して閉じる** ] **をクリックしてセキュリティチェックウィンドウを閉じます** 。 [ **要求ヘッダーの確認** ] 設定を有効または無効にするには、[ **詳細設定** ] ウィンドウで [ **プロファイル設定**] をクリックします。[ **共通設定**] で、[ **要求ヘッダーの確認** ] チェックボックスをオンまたはオフにします。**[OK]** をクリックします。 [ **プロファイル設定] ペインの右上にある **X** アイコンを使用してこのセクションを閉じるか、このプロファイルの設定が完了したら** [ **完了** ] をクリックして [ **アプリケーションファイアウォール** ] > [ **プロファイル**] に戻ることができます。 [ **HTML 以外のクエリを確認する** ] 設定を有効または無効にするには、[ **詳細設定** ] ウィンドウで [ **プロファイル設定**] をクリックします。[ **共通設定**] で、[ **HTML 以外のリクエストクエリを確認する** ] チェックボックスをオンまたはオフにします。**[OK]** をクリックします。[ **プロファイル設定] ペインの右上にある [X] アイコンを使用してこのセクションを閉じるか、このプロファイルの構成が完了したら** [ **完了** ] をクリックして [ **App Firewall] > [プロファイル**] に戻ることができます。 GUI を使用して HTML クロスサイトスクリプティング緩和規則を構成するには 1. [ **アプリケーションファイアウォール** ] > [ **プロファイル**] に移動し、ターゲットプロファイルを強調表示して、[ **編集**] をクリックします。 1. [ **詳細設定** ] ウィンドウで、[ **緩和規則**] をクリックします。 1. 「緩和規則」テーブルで、「 **HTML クロスサイトスクリプティング** 」エントリをダブルクリックするか、エントリを選択して「 **編集**」をクリックします。 1. [ **HTML クロスサイトスクリプティング緩和規則] ダイアログボックスで、緩和規則の**[ **追加**]、**[編集]、[****削除**]、[ **有効化**]、または [ **無効化** ] の操作を実行します。 > **注** > > 新しいルールを追加する場合、[ ****値タイプフィールド] で [ **タグ** ]、[ **属性** ]、または [ **パターン** ] オプションを選択しない限り、[値式**** ] フィールドは表示されません。 ビジュアライザーを使用して HTML クロスサイトスクリプティング緩和ルールを管理するには すべての緩和規則をまとめて表示するには、[緩和規則] テーブルの [ **HTML クロスサイトスクリプティング] 行をハイライト表示し**、[ **ビジュアライザー**] をクリックします。デプロイされたリラクゼーションのビジュアライザーには、[ **新しいルールを追加** ] または**[既存のルールを編集]**のオプションがあります。ノードを選択し、緩和ビジュアライザの対応するボタンをクリックして、ルールのグループ**を有効**または**無効に** することもできます。 GUI を使用してクロスサイトスクリプティングパターンを表示またはカスタマイズするには GUI を使用して、クロスサイトスクリプティングが許可される属性または許可されたタグのデフォルトリストを表示またはカスタマイズできます。クロスサイトスクリプティング拒否パターンのデフォルトリストを表示またはカスタマイズすることもできます。 デフォルトの一覧は、[ **アプリケーションファイアウォール** ] > [ **署名 **] > [既定の署名****] で指定されています。 シグニチャオブジェクトをプロファイルにバインドしない場合、Default Signatures オブジェクトで指定されているデフォルトのクロスサイトスクリプティング許可リストと拒否リストが、クロスサイトスクリプティングセキュリティチェック処理のプロファイルによって使用されます。デフォルトのシグネチャオブジェクトで指定された Tags、Attributes、Patterns は読み取り専用です。編集や修正はできません。 これらを変更または変更する場合は、Default Signatures オブジェクトのコピーを作成して、ユーザー定義シグニチャオブジェクトを作成します。新しいユーザ定義シグニチャオブジェクトの許可リストまたは拒否リストを変更し、カスタマイズされた許可リストと拒否リストを使用するトラフィックを処理するプロファイルでこのシグニチャオブジェクトを使用します。 1. デフォルトのクロスサイトスクリプティングパターンを表示するには: a. [ **アプリケーションファイアウォール** ] > [ **署名**] に移動し、[ **既定の署名**] を選択して [ **編集**] をクリックします。次に、[ **SQL/クロスサイトスクリプティングパターンの管理**] をクリックします。 「 **SQL/クロスサイトスクリプティングパスの管理** 」テーブルには、クロスサイトスクリプティングに関連する次の 3 つの行が表示されます。 `xss/allowed/attribute` `xss/allowed/tag` `xss/denied/pattern` b. 行を選択して [ **要素の管理** ] をクリックすると、Web App Firewall **クロスサイトスクリプティングチェックで使用される対応するクロスサイトスクリプティング要素** (タグ、属性、パターン) が表示されます。 1. **クロスサイトスクリプティング要素をカスタマイズするには**:User-Defined signature オブジェクトを編集して、許可されたタグ、許可される属性、および拒否されたパターンをカスタマイズできます。新しいエントリを追加したり、既存のエントリを削除したりできます。 a. [ **アプリケーションファイアウォール** ] > [ **署名**] に移動し、ターゲットの [ユーザー定義署名] を選択し、[ **編集**] をクリックします。[ **SQL/クロスサイトスクリプティングパターンの管理****] をクリックして、[SQL/クロスサイトスクリプティングパスの管理** ] テーブルを表示します。 b. 対象のクロスサイトスクリプティング行を選択します。 i. [ **要素を管理**] をクリックして、 **対応するクロスサイトスクリプティング要素を追加**、 **編集** 、 **または削除します** 。 ii. **選択した行を削除するには** 、[削除] をクリックします。 > **警告:** > > デフォルトのクロスサイトスクリプティング要素を削除または変更したり、クロスサイトスクリプティングパスを削除して行全体を削除したりする前に、注意が必要です。シグニチャルールとクロスサイトスクリプティングセキュリティチェックは、これらの要素に基づいて攻撃を検出し、アプリケーションを保護します。クロスサイトスクリプティングエレメントをカスタマイズすると、編集中に必要なパターンが削除されると、アプリケーションがクロスサイトスクリプティング攻撃に対して脆弱になる可能性があります。 ## HTML クロスサイトスクリプティング (クロスサイトスクリプティング) 違反の学習 学習を有効にすると、NetScaler Web App Firewall学習エンジンはトラフィックを監視し、クロスサイトスクリプティングURL違反を学習します。クロスサイトスクリプティング URL ルールを定期的に検査し、フォールスポジティブのシナリオがないか展開できます。 > **注:** > > クラスタ構成では、クロスサイトスクリプティング URL ルールをデプロイするには、すべてのノードが同じバージョンである必要があります。 Web App Firewall は、学習構成の一部として、きめ細かい HTML クロスサイトスクリプティング学習を提供します。 学習エンジンは、観測された値タイプ (タグ、属性、パターン) と、入力フィールドで観察された対応する値式に関するレコメンデーションを作成します。ブロックされたリクエストをチェックして、現在のルールが制限が厳しく、緩和する必要があるかどうかを判断するだけでなく、学習エンジンによって生成されたルールを確認して、違反を引き起こしている値タイプと値式を判断し、で対処する必要があります。リラクゼーションルール。 > **注:** > > Web App Firewall の学習エンジンでは、名前の最初の 128 バイトしか区別できません。フォームに、最初の 128 バイトに一致する名前のフィールドが複数ある場合、学習エンジンはそれらを区別できないことがあります。同様に、展開された緩和ルールによって、HTML クロスサイトスクリプティングインスペクションからこのようなすべてのフィールドが誤って緩和される可能性があります。 > > **ヒント:** > > 12 文字を超えるクロスサイトスクリプティングタグは、正しく学習または記録されません。 > > 学習のためにより長いタグ長が必要な場合は、 **as_crosssite scripting_allowed_tags_list** に、長さ 'x' の大きな非表示タグを追加できます。 HTML クロスサイトスクリプティングの学習プロセスにより、クロスサイトスクリプティング攻撃の誤検出が減少します。学習を有効にすると、リクエスト内のすべての違反を学習でき、複数のタグ、属性、またはパターンに繰り返しなく緩和を適用できる可能性があります。 たとえば、ペイロードに 15 個のカスタムタグがあり、それぞれ違反が発生した場合、一度に 1 つのタグに緩和を適用するプロセスを繰り返すのではなく、違反としてフラグが立てられたすべてのタグにきめ細かい緩和を適用できます。 **シナリオ1:学習が有効、ブロックが有効:** このシナリオでは、NetScaler ADCアプライアンスはカスタムタグ/属性/パターンのすべての違反を学習し、要求がブロックされ、各違反がログに記録されます。この動作は、フォームフィールド、ヘッダー、または Cookie で特定された違反に対しても一貫しています。 **シナリオ2:学習が有効でブロックが無効:** このシナリオでは、NetScaler ADCアプライアンスはカスタムタグ/属性/パターンの違反を学習し、各違反がログに記録されます。リクエストはブロックされません。この動作は、フォームフィールド、ヘッダー、または Cookie で特定された違反に対しても一貫しています。 コマンドラインインターフェイスを使用して学習データを表示または使用するには コマンドプロンプトで、次のコマンドのいずれかを入力します。 - `show appfw learningdata crossSiteScripting` - `rm appfw learningdata -crossSiteScripting [] [ ]` - `export appfw learningdata **crossSiteScripting*` ### カスタムタグをバイパスするようにクロスサイトスクリプティングのファイングレインリラクゼーションを構成する Web App Firewall プロファイルでクロスサイトスクリプティング緩和を構成して、許可リストにないカスタムタグ/属性/パターンをバイパスできます。 コマンドプロンプトで、次のように入力します。 `bind appfw profile p1 -crossSiteScripting -valueType ` **例:** `bind appfw profile profile1 -crossSiteScripting formfield1 http://1.1.1.1 -valueType Tag tag1` GUI を使用して学習済みデータを表示または使用するには 1. [ **アプリケーションファイアウォール** ] > [ **プロファイル**] に移動し、ターゲットプロファイルを強調表示して、[ **編集**] をクリックします。 2. [ **詳細設定** ] ペインで、[ **学習済みルール**] をクリックします。「学習済み規則」(Learn Rules) テーブルで **HTML クロスサイトスクリプティングエントリを選択してダブルクリックすると** 、学習済み規則にアクセスできます。テーブルには、[ **フィールド名]**、[**アクション URL**]、[ **値の種類**]、[ **値]**、および [ **ヒット** ] 列が表示されます学習したルールを展開したり、緩和ルールとして展開する前にルールを編集したりできます。ルールを破棄するには、ルールを選択して「スキップ」( **Skip** ) ボタンをクリックします。一度に編集できるルールは 1 つだけですが、展開またはスキップするルールは複数選択できます。 また、「学習した規則」テーブルで「 **HTML クロスサイトスクリプティング** 」エントリを選択し、「 **ビジュアライザー** 」をクリックして、学習したすべての違反の統合ビューを表示することで、学習した緩和の要約ビューを表示することもできます。ビジュアライザを使用すると、学習したルールを簡単に管理できます。1 つの画面でデータの包括的なビューを表示し、1 回のクリックでルールのグループに対するアクションの実行を容易にします。ビジュアライザーの最大の利点は、正規表現を推奨して複数のルールを統合できることです。デリミタとアクション URL に基づいて、これらのルールのサブセットを選択できます。ドロップダウンリストから番号を選択すると、ビジュアライザーに 25、50、または 75 個のルールを表示できます。学習したルールのビジュアライザーには、ルールを編集して緩和として展開するオプションがあります。または、ルールをスキップして無視することもできます。 ## HTML クロスサイトスクリプティングチェックでのログ機能の使用 ログアクションを有効にすると、HTML クロスサイトスクリプティングのセキュリティチェック違反が **AppFW_crosssite スクリプティング違反として監査ログに記録されます** 。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 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 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 \*\* ``` ### GUI を使用してログメッセージにアクセスする GUI には、ログメッセージを分析するための便利なツール (Syslog Viewer) が含まれています。Syslog ビューアにアクセスするには、複数のオプションがあります。 - [ **アプリケーションファイアウォール** ] > [ **プロファイル**] に移動し、ターゲットプロファイルを選択して [ **セキュリティチェック**] をクリックします。[ **HTML クロスサイトスクリプティング** ] 行を強調表示し、[ **ログ**] をクリックします。プロファイルの HTML クロスサイトスクリプティングチェックからログに直接アクセスすると、GUI によってログメッセージが除外され、これらのセキュリティチェック違反に関するログのみが表示されます。 - 「 **NetScaler** 」>「 **システム** 」>「 **監査** 」の順に選択して、Syslogビューアにアクセスすることもできます。 **監査メッセージセクションで** 、 **Syslog メッセージリンクをクリックして** Syslog Viewer を表示します。このビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。これは、要求処理中に複数のセキュリティチェック違反がトリガーされる可能性がある場合のデバッグに役立ちます。 - **アプリケーションファイアウォール** > **ポリシー** > **監査に移動します**。監査メッセージセクションで、 **Syslog メッセージリンクをクリックして** Syslog Viewer を表示します。このビューアには、他のセキュリティチェック違反ログを含むすべてのログメッセージが表示されます。 HTML ベースの Syslog ビューアには、関心のあるログメッセージのみを選択するためのさまざまなフィルタオプションがあります。 **HTML クロスサイトスクリプティングチェックのログメッセージを選択するには** 、[ **モジュール** ] のドロップダウンリストオプションで [ **APPFW**] を選択してフィルタします。**[Event Type]** リストには、選択内容をさらに絞り込むための豊富なオプションが用意されています。たとえば、 **AppFW_Cross-site scripting** チェックボックスを選択して [ **Apply** ] ボタンをクリックすると、 **HTML クロスサイトスクリプティングのセキュリティチェック違反に関するログメッセージのみが** Syslog Viewer に表示されます。 特定のログメッセージの行にカーソルを置くと、[ **モジュール**]、[ **イベントタイプ**]、[イベント **ID**]、[ **クライアント IP** ] などの複数のオプションがログメッセージの下に表示されます。これらのオプションを選択すると、ログメッセージ内の対応する情報を強調表示できます。 **[クリックして展開** ] 機能は GUI でのみ使用できます。Syslog Viewer を使用すると、ログを表示するだけでなく、Web App Firewall セキュリティチェック違反のログメッセージに基づいて HTML クロスサイトスクリプティング緩和ルールを展開することもできます。この操作では、ログメッセージは CEF ログ形式である必要があります。クリックして展開機能は、ブロック (またはブロックしない) アクションによって生成されたログメッセージに対してのみ使用できます。変換操作に関するログメッセージの緩和ルールは展開できません。 Syslog Viewer から緩和ルールを展開するには、ログメッセージを選択します。選択した行の [ **Syslog Viewer** ] ボックスの右上隅にチェックボックスが表示されます。このチェックボックスをオンにし、[ **アクション** ] リストから緩和ルールを展開するオプションを選択します。**[ **編集とデプロイ******]、[ **デプロイ]、[すべてデプロイ** ] は、** [ **Click to Deploy** ] オプションを使用して展開された HTML クロスサイトスクリプティングルールには、きめ細かな緩和の推奨事項は含まれていません。 ### GUI を使用してクリックして展開機能を構成する 1. Syslog ビューアの [ **モジュール** ] オプションで [ **APPFW** ] を選択します。 1. 対応するログメッセージをフィルタリングするには **、[ **イベントタイプ** ] として [App_cross-Site] スクリプトを選択します** 。 1. 展開するルールを識別するには、このチェックボックスをオンにします。 1. オプションの [ **アクション** (Action)] ドロップダウンリストを使用して、緩和ルールを展開します。 1. ルールが対応する [緩和ルール] セクションに表示されていることを確認します。 ## HTML クロスサイトスクリプティング違反の統計 統計アクションを有効にすると、Web App Firewall がこのセキュリティチェックに対して何らかのアクションを実行すると、HTML クロスサイトスクリプティングチェックのカウンタが増分します。統計は、トラフィック、違反、およびログのレートと合計数について収集されます。ログカウンタの増分サイズは、構成された設定によって異なります。たとえば、ブロックアクションが有効になっている場合、3 つの HTML クロスサイトスクリプティング違反を含むページのリクエストでは、最初の違反が検出されたときにページがブロックされるため、統計カウンタが 1 つ増えます。ただし、ブロックが無効になっている場合、同じ要求を処理すると、違反ごとに個別のログメッセージが生成されるため、違反とログの統計カウンタが 3 ずつ増加します。 コマンドラインを使用して HTML クロスサイトスクリプティングチェック統計を表示するには コマンドプロンプトで入力します。 `> sh appfw stats` 特定のプロファイルの統計情報を表示するには、以下のコマンドを使用します。 `> **stat appfw profile** ` ### GUI を使用して HTML クロスサイトスクリプティングの統計情報を表示する 1. **セキュリティ** > **アプリケーションファイアウォール > プロファイル > 統計に移動します**。 1. 右側のペインで、[**統計** リンク] にアクセスします。 1. スクロールバーを使用して、HTML クロスサイトスクリプティング違反とログに関する統計情報を表示します。統計テーブルはリアルタイムデータを提供し、7秒ごとに更新されます。 ## ハイライト - **HTMLクロスサイトスクリプティング攻撃保護の組み込みサポート**:NetScaler Web App Firewallは、受信したペイロード内の許可された属性とタグ、および拒否されたパターンの組み合わせを監視することにより、クロスサイトスクリプティング攻撃から保護します。クロスサイトスクリプティングチェックで使用される組み込みのデフォルト許可タグ、許可される属性、および拒否パターンは、すべて /netscaler/default_custom_settings.xml ファイルに指定されています。 - [**Customizatio**n]:タグ、属性、およびパターンのデフォルトリストを変更して、アプリケーションの特定のニーズに合わせてクロスサイトスクリプティングセキュリティチェックインスペクションをカスタマイズできます。デフォルトのシグニチャオブジェクトのコピーを作成するか、既存のエントリを変更するか、新しいシグニチャオブジェクトを追加します。このシグニチャオブジェクトをプロファイルにバインドして、カスタマイズした設定を利用します。 - **ハイブリッドセキュリティモデル**-シグニチャとディープセキュリティ保護の両方で、プロファイルにバインドされたシグニチャオブジェクトで指定された SQL/Cross-Site スクリプティングパターンが使用されます。シグニチャオブジェクトがプロファイルにバインドされていない場合は、デフォルトのシグニチャオブジェクトに存在する SQL/Cross-Site スクリプティングパターンが使用されます。 - [**Transform**]:変換操作について、次の点に注意してください。 トランスフォーム操作は、他のクロスサイトスクリプティングアクション設定とは無関係に機能します。変換が有効で、ブロック、ログ、統計、学習がすべて無効になっている場合、クロスサイトスクリプティングタグは変換されます。 ブロックアクションが有効になっている場合は、変換アクションよりも優先されます。 - **きめ細かなリラクゼーションと学習**。緩和ルールを微調整して、クロスサイトスクリプティング要素のサブセットをセキュリティチェックインスペクションから解放し、残りは検出します。学習エンジンは、観測されたデータに基づいて、特定の値のタイプと値の式を推奨しています。 - [**Click to Deploy**]:Syslog Viewer で 1 つまたは複数のクロスサイトスクリプティング違反ログメッセージを選択し、緩和ルールとして展開します。 - **Charset**:アプリケーションの必要性に基づいて、プロファイルのデフォルトの文字セットを設定する必要があります。デフォルトでは、プロファイル文字セットは英語 (US) (ISO-8859-1) に設定されています。指定された文字セットなしでリクエストを受信すると、Web App Firewall はそのリクエストを ISO-8859-1 であるかのように処理します。開き括弧文字 (<) or the close bracket character (>) は、他の文字セットでエンコードされている場合、クロスサイトスクリプティングタグとして解釈されません。たとえば、リクエストに UTF-8 文字列 "%uff1cscript%uff1e**"**が含まれているが、リクエストページで文字セットが指定されていない場合、プロファイルのデフォルトの文字セットが Unicode として指定されていない限り、クロスサイトスクリプティング違反はトリガーされない可能性があります。
HTML クロスサイトスクリプティングチェック