NetScaler Web App Firewallの概要
Web アプリケーションセキュリティ
既知のウェブ攻撃
-
**バッファオーバーフロー攻撃。**長い URL、長い Cookie、または長い情報を Web サーバーに送信すると、システムがハングアップしたり、クラッシュしたり、基盤となるオペレーティングシステムに不正にアクセスしたりします。バッファオーバーフロー攻撃は、不正な情報にアクセスしたり、Web サーバーを危険にさらしたり、あるいはその両方を行うために利用される可能性があります。
-
**クッキーセキュリティ攻撃。**改ざんされたCookie をウェブサーバーに送信すること。通常、偽造された認証情報を使用して不正なコンテンツにアクセスすることを期待します。
-
**強制的なブラウジング。**ホームページ上のハイパーリンクの付いた URL や Web サイト上のその他の一般的な開始 URL に移動せずに、Web サイトの URL に直接アクセスする。強制ブラウジングの個々の事例は、ユーザーが Web サイトのページをブックマークしたにもかかわらず、存在しないコンテンツやユーザーが直接アクセスしてはならないコンテンツに繰り返しアクセスしようとすると、Web サイトのセキュリティに対する攻撃と見なされることがよくあります。強制ブラウジングは通常、権限のない情報にアクセスするために使用されますが、バッファオーバーフロー攻撃と組み合わせてサーバーを危険にさらすこともあります。
-
**Web フォームのセキュリティ攻撃。**不適切なコンテンツを Web フォームで Web サイトに送信すること。不適切なコンテンツには、修正された隠しフィールド、HTML、または英数字データ専用フィールドのコード、短い文字列のみを入力するフィールド内の長すぎる文字列、整数のみを受け入れるフィールドの英数字文字列、Web サイトがその Web フォームで受け取ることを想定していないさまざまなデータなどがあります。Web フォームセキュリティ攻撃は、通常はバッファオーバーフロー攻撃と組み合わせて、Web サイトから不正な情報を取得したり、Web サイトを完全に侵害したりするために利用されます。
-
**SQL インジェクション攻撃。**SQL データベースに 1 つまたは複数のコマンドを実行させることを目的として、アクティブな SQL コマンドを Web フォームで、または URL の一部として送信すること。SQL インジェクション攻撃は通常、不正な情報を取得するために使用されます。
-
**クロスサイトスクリプティング攻撃。**Web ページの URL またはスクリプトを使用して同一生成元ポリシーに違反すること。同一生成元ポリシーでは、スクリプトが別の Web サイトのプロパティを取得したり、別の Web サイトのコンテンツを変更したりすることを禁じています。スクリプトは Web サイトの情報を取得したり、ファイルを変更したりできるため、スクリプトが別の Web サイトのコンテンツにアクセスできるようにすると、攻撃者は不正な情報を取得したり、Web サーバーを侵害したり、あるいはその両方を行ったりする可能性があります。
-
**悪意のあるコードまたはオブジェクト。**機密情報を直接取得したり、攻撃者に Web サービスや基盤となるサーバーを制御させたりする可能性のあるコードまたはオブジェクトを含む XML リクエスト。
-
**XML リクエストの形式が正しくありません。**W3C XML 仕様に準拠していないため、安全ではない Web サービスのセキュリティを侵害する可能性のある XML リクエスト
-
**サービス拒否 (DoS) 攻撃。**ターゲット Web サービスに負荷をかけ、正規ユーザーの Web サービスへのアクセスを拒否する目的で、大量に繰り返し送信される XML 要求。
-
**SQL インジェクション攻撃。**SQL データベースにそのコマンドを実行させる目的で、XML ベースのリクエストでアクティブな SQL コマンドまたはコマンドを送信すること。HTML SQL インジェクション攻撃と同様に、XML SQL インジェクション攻撃は通常、不正な情報を取得するために使用されます。
-
**クロスサイトスクリプティング攻撃。**XML ベースのアプリケーションに含まれるスクリプトを使用して、同一生成元ポリシーに違反すること。同一生成元ポリシーでは、どのスクリプトも別のアプリケーションのプロパティを取得したり、コンテンツを変更したりすることはできません。スクリプトは XML アプリケーションを使用して情報を取得したりファイルを変更したりできるため、別のアプリケーションのコンテンツへのスクリプトアクセスを許可すると、攻撃者は不正な情報を取得したり、アプリケーションを危険にさらしたり、あるいはその両方を行ったりする可能性があります。
未知のウェブ攻撃
NetScaler Web App Firewall 仕組み
NetScaler Web App Firewall 機能
NetScaler Web App Firewall ケーショントラフィックを変更する方法
-
Cookies
-
HTTP ヘッダー
-
フォーム/データ
NetScaler Web App Firewall セッションCookie
citrix_ns_idです。
citrix_ns_idの整合性はセッションレスになり、アプライアンスによって生成されたセッションCookie の追加は強制されません。Cookie の設定について詳しくは、「 エンジン設定」を参照してください。
NetScaler Web App Firewall クッキー
-
パーシステントクッキー -これらのクッキーはコンピューター上にローカルに保存され、次回サイトにアクセスしたときに再び使用されます。このタイプのCookie には通常、ログオン、パスワード、設定などのユーザーに関する情報が含まれています。
-
セッションクッキーまたはトランジェントクッキー -これらのクッキーはセッション中にのみ使用され、セッションが終了すると破棄されます。このタイプの Cookie には、ショッピングカートのアイテムやセッション認証情報などのアプリケーション状態情報が含まれます。
-
パーシスタントクッキー:
citrix_ns_id_wlf. 注意:wlfは永遠に生き続けるという意味です。 -
セッションクッキーまたはトランジェントクッキー:
citrix_ns_id_wat. 注:の略は一時的に動作します。 アプリケーションクッキーを追跡するために、アプリケーションファイアウォールはパーシステントまたはセッションアプリケーションクッキーをグループ化し、すべてのクッキーをハッシュして署名します。したがって、アプリケーションファイアウォールは、すべての永続アプリケーションwlfCookie を追跡する Cookie と、すべてのアプリケーションセッションwatCookie を追跡する Cookie を 1 つ生成します。
| NetScaler Web App Firewall 前 | 変更後は以下の通り |
|---|---|
| 1 つのパーシステントCookie | パーシスタントCookie: citix_ns_id_wlf |
| 1 つのトランジェントCookie | トランジェントCookie: citix_ns_id_wat |
| 複数のパーシステントクッキー、複数のトランジェントクッキー | 1 つの永続Cookie: citrix_ns_id_wlf、1 つの一時Cookie: citix_ns_id_wat |
アプリケーションファイアウォールが HTTP ヘッダーに与える影響
Host: www.citrix.com
NetScaler Web App Firewall によってドロップされたリクエストヘッダー
-
範囲 — 失敗したファイル転送または部分的なファイル転送からの回復に使用されます。
-
If-Range — キャッシュにすでにオブジェクトの一部が含まれている場合に、クライアントがオブジェクトの一部を取得できるようにします (条件付き GET)。
-
If-Modified-Since — このフィールドに指定された時間以降に要求されたオブジェクトが変更されていない場合、エンティティはサーバーから返されません。HTTP 304 変更されていないというエラーが表示されます。
-
If-None-Match — 最小限のオーバーヘッドで、キャッシュされた情報を効率的に更新できます。
-
Accept-Encoding — 特定のオブジェクトに使用できるエンコード方法 (gzip など)。
NetScaler Web App Firewall によって変更されたリクエストヘッダー
NetScaler Web App Firewall によって追加されたリクエストヘッダー
NetScaler Web App Firewall によってドロップされた応答ヘッダー
-
サーバーが Pragma: no-cache を送信した場合、アプリケーションファイアウォールは変更を行いません。
-
クライアントリクエストが HTTP 1.0 の場合、アプリケーションファイアウォールは Pragma: no-cache を挿入します。
-
クライアントリクエストが HTTP 1.1 で、Cache-Control: no-store が設定されている場合、アプリケーションファイアウォールは変更を行いません。
-
クライアントリクエストが HTTP 1.1 で、サーバーレスポンスの Cache-Control ヘッダーにストアもキャッシュディレクティブもない場合、アプリケーションファイアウォールは変更を行いません。
-
クライアント要求が HTTP 1.1 で、サーバーレスポンスに「キャッシュ制御ヘッダーなし」または「キャッシュ制御ヘッダーにストアなし」または「キャッシュなし」ディレクティブがない場合、アプリケーションファイアウォールは次のタスクを実行します。
-
キャッシュコントロールを挿入します。max-age=3、再検証が必要、非公開です。
-
X-Cache-Control-Orig = キャッシュコントロールヘッダーの元の値を挿入します。
-
最終更新ヘッダーを削除します。
-
Etagの代わりになります。
-
サーバーから送信された有効期限ヘッダーの X-Expires-Orig=オリジナル値を挿入します。
-
Expires Headerを変更し、Webページの有効期限を過去に設定して、常に再度取得されるようにします。
-
Accept-Ranges を変更し、それを「なし」に設定します。
-
クライアントに転送する前に、Last-Modified をサーバーから削除します。
-
Etag をアプリケーションファイアウォールによって決定された値に置き換えます。
NetScaler Web App Firewall によって追加されたレスポンスヘッダー
-
Transfer-Encoding: チャンク。このヘッダーは、応答を送信する前に応答の全長がわからなくても、情報をクライアントにストリーミングします。content-length ヘッダーが削除されているため、このヘッダーは必須です。 -
Set-Cookie: アプリケーションファイアウォールによって追加された Cookie。 -
Xet-Cookie: セッションが有効で、キャッシュ内の応答の有効期限が切れていない場合は、キャッシュから配信でき、セッションはまだ有効であるため、新しい Cookie を送信する必要はありません。このようなシナリオでは、セットクッキーは Xet-Cookie に変更されます。Web ブラウザ用。
フォームデータへの影響
<input type="hidden" name="as_fid" value="VRgWq0I196Jmg/+LOY7C" />
セッションレスフォームチェック
<input type="hidden" name="as_ffc_field" value="CwAAAAVIGLD/luRRi1Wu1rbYrFYargEDcO5xVAxsEnMP1megXuQfiDTGbwk0fpgndMHqfMbzfAFdjwR+TOm1oT
+u+Svo9+NuloPhtnbkxGtNe7gB/o8GlxEcK9ZkIIVv3oIL/nIPSRWJljgpWgafzVx7wtugNwnn8/GdnhneLCJTaYU7ScnC6LexJDLisI1xsEeONWt8Zm
+vJTa3mTebDY6LVyhDpDQfBgI1XLgfLTexAUzSNWHYyloqPruGYfnRPw+DIGf6gGwn1BYLEsRHKNbjJBrKpOJo9JzhEqdtZ1g3bMzEF9PocPvM1Hpvi5T6VB
/YFunUFM4f+bD7EAVcugdhovzb71CsSQX5+qcC1B8WjQ==" />
HTML コメントストリッピング
クレジットカード保護
安全なオブジェクト保護
クロスサイトスクリプティングはアクションを変える
"<" into "%26lt;" and ">" into "%26gt;" のリクエストが変更されます。Web App Firewall の CheckRequestHeaders 設定が有効になっている場合、Web App Firewall はリクエストヘッダーを検査し、ヘッダーと Cookie 内のこれらの文字も変換します。変換アクションは、サーバーから最初に送信された値をブロックまたは変換しません。クロスサイトスクリプティングには、Web App Firewall で許可されているデフォルトの属性とタグのセットがあります。拒否されたクロスサイトスクリプティングパターンのデフォルトリストも提供されています。これらは、シグネチャオブジェクトを選択し、GUI の「 SQL/クロスサイトスクリプティングパターンの管理」ダイアログをクリックすることでカスタマイズできます 。
SQL 特殊文字の変換
| ライセンス | 変更後は以下の通り | トランスフォーメーション |
|---|---|---|
| '(一重引用符、つまり %27) | " | もう一つの一重引用符 |
| \ (%5C のバックスラッシュ) | 別のバックスラッシュが追加されました | |
| ; (%3B のセミコロン) | 落下しました |
Expect ヘッダーが破損するNetScaler Web App Firewall 動作
-
NetScalerがEXPECTヘッダーを含むHTTPリクエストを受信するたびに、NetScalerはバックエンドサーバーに代わって EXPECT: 100-continue レスポンスをクライアントに送信します。
-
この動作は、要求をサーバーに転送する前に要求全体に対してアプリケーションファイアウォール保護を実行する必要があり、NetScalerは要求全体をクライアントから取得する必要があるためです。
-
100 continue応答を受け取ると、クライアントはリクエストの残りの部分を送信してリクエストを完了します。 -
その後、NetScalerはすべての保護を実行し、要求をサーバーに転送します。
-
NetScalerがリクエスト全体を転送すると、最初のリクエストで受信したEXPECTヘッダーは古くなり、NetScalerはこのヘッダーを破損してサーバーに送信します。
-
要求を受信したサーバーは、破損しているヘッダーを無視します。