Cookie ハイジャック対策
Cookie ハイジャック防止は、ハッカーによるCookie 盗み攻撃を軽減します。セキュリティ攻撃では、攻撃者がユーザーセッションを乗っ取り、Web アプリケーションへの不正アクセスを取得します。ユーザーが銀行アプリケーションなどのウェブサイトを閲覧すると、ウェブサイトはブラウザとのセッションを確立します。セッション中、アプリケーションはログイン認証情報、ページ訪問などのユーザー詳細をCookie ファイルに保存します。その後、Cookie ファイルが応答としてクライアントブラウザに送信されます。ブラウザは、アクティブなセッションを維持するためにCookie を保存します。攻撃者はこれらのCookie をブラウザのCookie ストアから手動で盗むことも、ブラウザの不正な拡張機能を使って盗むこともできます。その後、攻撃者はこれらの Cookie を使用してユーザーの Web アプリケーションセッションにアクセスします。
Cookie 攻撃を軽減するために、NetScaler Web App Firewall(WAF)は、WAF Cookie 一貫性検証とともに、クライアントからのTLS接続に挑戦します。新しいクライアント要求ごとに、アプライアンスはTLS接続を検証し、要求内のアプリケーションとセッションCookieの一貫性を検証します。攻撃者が犠牲者から盗まれたアプリケーション Cookie とセッション Cookie を混在させようとすると、Cookie の一貫性の検証は失敗し、設定された Cookie ハイジャックアクションが適用されます。Cookie の一貫性の詳細については、「 Cookie の一貫性チェック 」トピックを参照してください。
注:
Cookie ハイジャック機能はロギングと SNMP トラップをサポートします。ロギングの詳細については ADM トピックを、SNMP 設定の詳細については SNMP トピックを参照してください。
制限事項
- クライアントブラウザで JavaScript を有効にする必要があります。
- Cookie ハイジャック保護は、TLS バージョン 1.3 ではサポートされていません。
- ブラウザは SSL 接続を再利用しないため、Internet Explorer (IE) ブラウザのサポートが制限されています。リクエストに対して複数のリダイレクトが送信され、最終的に IE ブラウザで「最大リダイレクトを超えました」というエラーが発生します。
Cookie ハイジャック保護の仕組み
次のシナリオでは、NetScalerアプライアンスでCookie ハイジャック保護がどのように機能するかを説明します。
シナリオ 1: セッション Cookie なしで最初の Web ページにアクセスするユーザー
- ユーザは Web アプリケーションへの認証を試み、要求に ADC セッション Cookie が含まれていない状態で最初の Web ページへのアクセスを開始します。
- 要求を受信すると、アプライアンスはセッション Cookie ID を使用してアプリケーションファイアウォールセッションを作成します。
-
これにより、セッションの TLS 接続が開始されます。JavaScriptはクライアントブラウザで送信および実行されないため、アプライアンスはTLS接続を検証済みとしてマークし、チャレンジは不要です。
注:
攻撃者がセッション Cookie を送信せずに被害者からすべてのアプリ Cookie ID を送信しようとしても、アプライアンスは問題を検出し、要求をバックエンドサーバーに転送する前に、要求に含まれるすべてのアプリ Cookie を削除します。バックエンドサーバーは、このリクエストをアプリ Cookie なしと見なし、その設定に従って必要に応じて処理します。
- バックエンドサーバーが応答を送信すると、アプライアンスは応答を受信し、JavaScript セッショントークンとシード Cookie とともに転送します。その後、アプライアンスはTLS接続を検証済みとしてマークします。
- クライアントブラウザが応答を受け取ると、ブラウザは JavaScript を実行し、セッショントークンとシード Cookie を使用してモーフィングされた Cookie ID を生成します。
- ユーザーがTLS接続を介して後続のリクエストを送信すると、アプライアンスはモーフィングされたCookie 検証をバイパスします。これは、TLS 接続がすでに検証されているためです。
シナリオ 2: セッション Cookie を使用して、新しい TLS 接続を介して連続する Web ページにアクセスするユーザー
- ユーザーが新しい TLS 接続を介して連続ページの HTTP リクエストを送信すると、ブラウザはセッション Cookie ID とモーフィングされた Cookie ID を送信します。
- これは新しい TLS 接続であるため、アプライアンスは TLS 接続を検出し、シードCookie によるリダイレクト応答をクライアントに要求します。
- クライアントは、ADCからの応答を受け取ると、セッションのトークンと新しいシードCookie を使用してモーフィングされたCookie を計算します。
- 次に、クライアントは、この新しく計算されたモーフィングされたCookie をセッションIDとともに送信します。
- ADCアプライアンス内で計算されたモーフィングされたCookie と、リクエストを介して送信されたCookie が一致すると、TLS接続は検証済みとしてマークされます。
- 計算されたモーフィングされた Cookie がクライアントのリクエストに含まれるものと異なる場合、検証は失敗します。その後、アプライアンスはチャレンジをクライアントに送り返し、適切にモーフィングされた Cookie を送信します。
シナリオ 3: 攻撃者が認証されていないユーザーになりすます
- ユーザーがウェブアプリケーションへの認証を行うと、攻撃者はさまざまな手法を使用して Cookie を盗み、再生します。
- これは攻撃者からの新しい TLS 接続であるため、ADC は新しいシード Cookie と共にリダイレクトチャレンジを送信します。
- 攻撃者は JavaScript を実行していないため、リダイレクトされたリクエストに対する攻撃者からの応答には、モーフィングされた Cookie は含まれていません。
- その結果、ADC アプライアンス側でモーフィングされた Cookie 検証が失敗します。アプライアンスは再びリダイレクトチャレンジをクライアントに送信します。
- モーフィングされた Cookie 検証の試行回数がしきい値制限を超えると、アプライアンスはステータスを Cookie Hijackking としてフラグ付けします。
- 攻撃者が被害者から盗んだアプリケーション Cookie とセッション Cookie を混在させようとすると、Cookie の一貫性チェックは失敗し、アプライアンスは設定された Cookie ハイジャックアクションを適用します。
シナリオ 4: 認証されたユーザーになりすます攻撃者
- 攻撃者は、本物のユーザーとしてウェブアプリケーションへの認証を試み、被害者の Cookie を再生してウェブセッションにアクセスすることもできます。
- ADCアプライアンスは、このようななりすまし攻撃者も検出します。攻撃者は検証済みのTLS接続を使用して被害者のCookie を再生しますが、ADCアプライアンスはリクエスト内のセッションCookie とアプリケーションCookie が一致しているかどうかを確認します。アプライアンスは、要求内のセッションCookie を使用してアプリケーションCookie の一貫性を検証します。リクエストには攻撃者のセッション Cookie と被害者のアプリ Cookie が含まれているため、Cookie の一貫性検証は失敗します。
- その結果、アプライアンスは設定された Cookie ハイジャックアクションを適用します。設定されたアクションが「ブロック」に設定されている場合、アプライアンスはすべてのアプリケーションCookie を削除し、要求をバックエンドサーバーに送信します。
- バックエンドサーバーはアプリケーションCookie ないリクエストを受け取り、攻撃者に「User not login」などのエラー応答を返します。
CLIを使用してCookie ハイジャックを設定する
特定のアプリケーションファイアウォールプロファイルを選択し、Cookie ハイジャックを防止するアクションを 1 つ以上設定できます。
コマンドプロンプトで入力します:
set appfw profile <name> [-cookieHijackingAction <action-name> <block | log | stats | none>]
注:
デフォルトでは、アクションは「なし」に設定されています。
例:
set appfw profile profile1 - cookieHijackingAction Block
ここで、アクションタイプは次のとおりです。
ブロック:このセキュリティチェックに違反する接続をブロックします。 ログ:このセキュリティチェックの違反をログに記録します。 統計:このセキュリティチェックの統計を生成します。 なし:このセキュリティチェックのすべてのアクションを無効にします。
NetScaler GUIを使用してCookie ハイジャックを設定します
- [ セキュリティ]> Citrix Web App Firewall]>[プロファイル]に移動します。
- [ プロファイル] ページでプロファイルを選択し 、[ 編集] をクリックします。
- [Citrix Web App Firewall プロファイル ]ページで、 [詳細設定] セクションに移動し、[ セキュリティチェック]をクリックします。
- 「 セキュリティチェック 」セクションで「 Cookie ハイジャック 」を選択し、「 アクション設定 」をクリックします。
- Cookie ハイジャック設定ページで 、Cookie ハイジャックを防止するアクションを 1 つ以上選択します。
- [OK] をクリックします。
NetScaler GUIを使用して、Cookie 一貫性検証のための緩和ルールを追加します
Cookie の一貫性検証における誤検出を処理するために、Cookie の検証から除外できる Cookie の緩和ルールを追加できます。
- [ セキュリティ]> Citrix Web App Firewall]>[プロファイル]に移動します。
- [ プロファイル] ページでプロファイルを選択し 、[ 編集] をクリックします。
- Citrix Web App Firewall プロファイルページで 、「 詳細設定 」セクションに移動し、「 緩和ルール」をクリックします。
-
「 リラクゼーションルール 」セクションで、「 Cookie の一貫性 」を選択し、「 アクション」をクリックします。
-
Cookie の一貫性緩和ルールページで 、次のパラメータを設定します。
- Enabled。緩和ルールを有効にするかどうかを選択します。
- Cookie 名は正規表現ですか. Cookie 名が正規表現であるかどうかを選択します。
- Cookie 名。Cookie の検証を免除できるCookie ーの名前を入力します。
- 正規表現エディタ。このオプションをクリックすると、正規表現の詳細が表示されます。
- [コメント]。Cookie についての簡単な説明。
- [作成]して[閉じる] をクリックします。
CLI を使用して Cookie ハイジャックのトラフィックと違反の統計情報を表示する
セキュリティトラフィックとセキュリティ違反の詳細を表形式またはグラフ形式で表示します。
セキュリティ統計を表示するには:
コマンドプロンプトで入力します:
stat appfw profile profile1
Appfw プロファイルのトラフィック統計 | レート (/s) | 合計 |
---|---|---|
リクエスト | 0 | 0 |
要求バイト数 | 0 | 0 |
レスポンス | 0 | 0 |
送信バイト数 | 0 | 0 |
中止する | 0 | 0 |
リダイレクト | 0 | 0 |
長期平均応答時間 (ミリ秒) | – | 0 |
最近の平均応答時間 (ミリ秒) | – | 0 |
HTML/XML/JSON 違反統計 | レート (/s) | 合計 |
---|---|---|
開始URL | 0 | 0 |
URL を拒否する | 0 | 0 |
リファラーヘッダー | 0 | 0 |
バッファオーバーフロー | 0 | 0 |
Cookie の整合性 | 0 | 0 |
Cookie ハイジャック | 0 | 0 |
CSRF フォームタグ | 0 | 0 |
HTML クロスサイトスクリプティング | 0 | 0 |
HTML SQL インジェクション | 0 | 0 |
フィールド形式 | 0 | 0 |
フィールドの一貫性 | 0 | 0 |
クレジットカード | 0 | 0 |
セーフオブジェクト | 0 | 0 |
シグネチャ違反 | 0 | 0 |
コンテンツの種類 | 0 | 0 |
JSON サービス拒否 | 0 | 0 |
JSON SQLインジェクション | 0 | 0 |
JSON クロスサイトスクリプティング | 0 | 0 |
ファイルアップロードの種類 | 0 | 0 |
コンテンツタイプ XML ペイロードを推測 | 0 | 0 |
HTML CMD インジェクション | 0 | 0 |
XML 形式 | 0 | 0 |
XML サービス拒否 (XDoS) | 0 | 0 |
XML メッセージ検証 | 0 | 0 |
Web サービスの相互運用性 | 0 | 0 |
XML SQL インジェクション | 0 | 0 |
XML クロスサイトスクリプティング | 0 | 0 |
XML 添付ファイル | 0 | 0 |
SOAP フォールト違反 | 0 | 0 |
XML ジェネリック違反 | 0 | 0 |
違反総数 | 0 | 0 |
HTML/XML/JSON ログ統計 | レート (/s) | 合計 |
---|---|---|
URL ログの開始 | 0 | 0 |
URL ログの拒否 | 0 | 0 |
リファラーヘッダーログ | 0 | 0 |
バッファオーバーフローログ | 0 | 0 |
バッファオーバーフローログ | 0 | 0 |
Cookie 整合性ログ | 0 | 0 |
Cookie ハイジャックのログ | 0 | 0 |
CSRF フォームタグログ | 0 | 0 |
HTML クロスサイトスクリプティングログ | 0 | 0 |
HTML クロスサイトスクリプティング変換ログ | 0 | 0 |
HTML SQL インジェクションログ | 0 | 0 |
HTML SQL 変換ログ | 0 | 0 |
フィールド形式ログ | 0 | 0 |
フィールド整合性ログ | 0 | 0 |
クレジットカード | 0 | 0 |
クレジットカード変換ログ | 0 | 0 |
セーフオブジェクトログ | 0 | 0 |
シグネチャログ | 0 | 0 |
コンテンツタイプログ | 0 | 0 |
JSON サービス拒否ログ | 0 | 0 |
JSON SQLインジェクションログ | 0 | 0 |
JSON クロスサイトスクリプティングログ | 0 | 0 |
ファイルアップロードタイプログ | 0 | 0 |
コンテンツタイプ XML ペイロードを推測 L | 0 | 0 |
HTML コマンドインジェクションログ | 0 | 0 |
XML 形式ログ | 0 | 0 |
XML サービス拒否 (XDoS) ログ | 0 | 0 |
XML メッセージ検証ログ | 0 | 0 |
WSI ログ | 0 | 0 |
XML SQL インジェクションログ | 0 | 0 |
XML クロスサイトスクリプティングログ | 0 | 0 |
XML 添付ファイルログ | 0 | 0 |
SOAP フォールトログ | 0 | 0 |
XML 汎用ログ | 0 | 0 |
ログメッセージの総数 | 0 | 0 |
サーバーエラーレスポンス統計 | レート (/s) | 合計 |
---|---|---|
HTTP クライアントエラー (4xx 回答) | 0 | 0 |
HTTP サーバーエラー (5xx) | 0 | 0 |
GUI を使用して Cookie ハイジャックのトラフィックと違反の統計情報を表示する
- [ セキュリティ]> Citrix Web App Firewall]>[プロファイル]に移動します。
- 詳細ウィンドウで、 Web App Firewall プロファイルを選択し、[ 統計] をクリックします。
- Citrix Web App Firewall Statisticsページには 、Cookie ハイジャックトラフィックと違反の詳細が表示されます。
- 表形式ビューを選択するか 、 グラフィカルビューに切り替えて 、データを表形式またはグラフィカル形式で表示できます。