クッキーのハイジャック保護
Cookie ハイジャック保護は、ハッカーからの Cookie 盗み攻撃を緩和します。セキュリティ攻撃では、攻撃者がユーザーセッションを引き継ぎ、Web アプリケーションへの不正アクセスを取得しています。ユーザーが銀行アプリケーションなどのウェブサイトを閲覧すると、そのウェブサイトはブラウザとのセッションを確立します。セッション中、アプリケーションは、ログイン資格情報、ページ訪問などのユーザーの詳細をクッキーファイルに保存します。クッキーファイルは、応答でクライアントブラウザに送信されます。ブラウザは、アクティブなセッションを維持するためにクッキーを保存します。攻撃者は、ブラウザのクッキーストアから、またはいくつかのルージュブラウザ拡張を介して手動でこれらのクッキーを盗むことができます。その後、攻撃者はこれらの Cookie を使用して、ユーザーのウェブアプリケーションセッションにアクセスします。
Cookie攻撃を緩和するために、Citrix ADC Web App Firewall(WAF)は、WAF Cookieの一貫性検証とともにクライアントからのTLS接続に挑戦します。新しいクライアント要求ごとに、アプライアンスはTLS接続を検証し、要求内のアプリケーションとセッションCookieの一貫性を検証します。攻撃者が犠牲者から盗まれたアプリケーション Cookie とセッション Cookie を混在させようとすると、Cookie の一貫性の検証は失敗し、設定された Cookie ハイジャックアクションが適用されます。Cookie の一貫性の詳細については、「 Cookie の一貫性チェック 」トピックを参照してください。
注:
Cookie ハイジャック機能は、ロギングおよび SNMP トラップをサポートします。ロギングの詳細については、ADM のトピックを、SNMP の構成の詳細については、SNMP のトピックを参照してください。
制限事項
- クライアントブラウザで JavaScript を有効にする必要があります。
- クッキーハイジャック保護は、TLS バージョン 1.3 ではサポートされていません。
- ブラウザは SSL 接続を再利用しないため、Internet Explorer (IE) ブラウザのサポートが制限されています。リクエストに対して複数のリダイレクトが送信され、最終的に IE ブラウザで「最大リダイレクトを超えました」というエラーが発生します。
クッキーハイジャック保護の仕組み
以下のシナリオでは、Citrix ADCアプライアンスでクッキーハイジャック保護がどのように機能するかを説明します。
シナリオ 1: セッション Cookie を使用せずに最初の Web ページにアクセスするユーザー
- ユーザーは、Web アプリケーションへの認証を試み、要求に ADC セッション Cookie を使用せずに最初の Web ページへのアクセスを開始します。
- 要求を受信すると、アプライアンスはセッション Cookie ID を持つアプリケーションファイアウォールセッションを作成します。
-
これにより、セッションの TLS 接続が開始されます。JavaScript はクライアントブラウザ上で送信および実行されないため、アプライアンスは TLS 接続を検証済みとしてマークし、チャレンジは必要ありません。
注:
攻撃者がセッション Cookie を送信せずに犠牲者からすべてのアプリ Cookie ID を送信しようとした場合でも、アプライアンスは問題を検出し、要求をバックエンドサーバーに転送する前に、要求内のすべてのアプリ Cookie を取り除きます。バックエンドサーバーは、アプリケーションクッキーなしでこの要求を考慮し、その設定に従って必要になります。
- バックエンドサーバーが応答を送信すると、アプライアンスは応答を受信し、JavaScript セッショントークンとシード Cookie を使用して応答を転送します。その後、アプライアンスは TLS 接続を検証済みとしてマークします。
- クライアントブラウザが応答を受信すると、ブラウザはJavaScriptを実行し、セッショントークンとシードクッキーを使用してモーフィングされたクッキーIDを生成します。
- ユーザーが TLS 接続を介して後続の要求を送信すると、アプライアンスはモーフィングされた Cookie 検証をバイパスします。これは、TLS 接続がすでに検証されているためです。
シナリオ 2: セッション Cookie を使用して新しい TLS 接続を介して連続する Web ページにアクセスするユーザー
- ユーザーが新しいTLS接続を介して連続するページに対するHTTP要求を送信すると、ブラウザはセッションクッキーIDとモーフィングされたクッキーIDを送信します。
- これは新しい TLS 接続であるため、アプライアンスは TLS 接続を検出し、シード Cookie によるリダイレクト応答でクライアントにチャレンジします。
- クライアントは、ADCからの応答を受信すると、セッションのトークンと新しいシードクッキーを使用してモーフィングされたクッキーを計算します。
- クライアントは、この新しく計算されたモーフィングされたクッキーをセッション ID とともに送信します。
- ADC アプライアンス内で計算されたモーフィング Cookie と、要求を介して送信されたクッキーが一致する場合、TLS 接続は検証済みとしてマークされます。
- 計算されたモーフィングされたクッキーがクライアント要求に存在するクッキーと異なる場合、検証は失敗します。その後、アプライアンスはチャレンジをクライアントに送り返し、適切なモーフィングされた Cookie を送信します。
シナリオ 3: 認証されていないユーザーになりすます攻撃者
- ユーザーが Web アプリケーションに認証されると、攻撃者はさまざまな手法を使用して Cookie を盗み、再生します。
- これは攻撃者からの新しい TLS 接続であるため、ADC は新しいシード Cookie とともにリダイレクトチャレンジを送信します。
- 攻撃者はJavaScriptを実行していないため、リダイレクトされたリクエストに対する攻撃者からの応答にはモーフィングされたクッキーは含まれていません。
- その結果、ADC アプライアンス側でモーフィングされた Cookie 検証が失敗します。アプライアンスは再度、リダイレクトチャレンジをクライアントに送信します。
- モーフィングされた Cookie 検証の試行回数がしきい値の制限を超えた場合、アプライアンスはステータスに Cookie ハイジャックとしてフラグを付けます。
- 攻撃者が犠牲者から盗まれたアプリケーション Cookie とセッション Cookie を混在させようとすると、Cookie の一貫性チェックは失敗し、アプライアンスは設定された Cookie ハイジャックアクションを適用します。
シナリオ 4: 認証されたユーザーになりすます攻撃者
- また、攻撃者は本物のユーザーとしてウェブアプリケーションに認証し、被害者のクッキーを再生してウェブセッションにアクセスすることもできます。
- ADC アプライアンスは、このような偽装された攻撃者も検出します。検証された TLS 接続は、攻撃者が被害者のクッキーを再生する際に使用されますが、ADC アプライアンスは要求内のセッション Cookie とアプリケーション Cookie が一貫しているかどうかを確認します。アプライアンスは、要求内のセッション Cookie を使用して、アプリケーション Cookie の一貫性を検証します。リクエストには攻撃者のセッション Cookie と被害者のアプリ Cookie が含まれているため、Cookie の一貫性の検証は失敗します。
- その結果、アプライアンスは設定された Cookie ハイジャックアクションを適用します。構成済みのアクションが「ブロック」に設定されている場合、アプライアンスはすべてのアプリケーション Cookie を取り除き、要求をバックエンドサーバーに送信します。
- バックエンドサーバーはアプリケーションクッキーなしで要求を受け取り、「ユーザーがログインしていません」などのエラー応答を攻撃者に応答します。
CLI を使用した Cookie ハイジャックの設定
特定のアプリケーションファイアウォールプロファイルを選択し、Cookie のハイジャックを防止する 1 つ以上のアクションを設定できます。
コマンドプロンプトで入力します。
set appfw profile <name> [-cookieHijackingAction <action-name> <block | log | stats | none>]
注:
デフォルトでは、アクションは「none」に設定されています。
例:
set appfw profile profile1 - cookieHijackingAction Block
ここで、アクションタイプは次のとおりです。
ブロック:このセキュリティチェックに違反する接続をブロックします。 Log: このセキュリティ・チェックの違反をログに記録します。 統計:このセキュリティチェックの統計情報を生成します。 [なし]: このセキュリティチェックのすべてのアクションを無効にします。
Citrix ADC GUIを使用してクッキーのハイジャックを構成する
- Security > Citrix Web App Firewall > Profilesに移動します。
- [プロファイル] ページで、プロファイルを選択し、[編集] をクリックします。
-
[Citrix Web App Firewall プロファイル]ページで、[詳細設定]セクションに移動し、[セキュリティチェック]をクリックします。
- [セキュリティチェック] セクションで、[Cookie ハイジャック] を選択し、[アクション の設定] をクリックします。
- [Cookie ハイジャック設定] ページで、Cookie ハイジャックを防止するアクションを 1 つ以上選択します。
-
[OK] をクリックします。
Citrix ADC GUIを使用してクッキーの一貫性を検証するための緩和ルールを追加する
クッキーの一貫性検証で誤検出を処理するには、クッキーの検証から除外できる Cookie のリラクゼーションルールを追加できます。
- Security > Citrix Web App Firewall > Profilesに移動します。
- [プロファイル] ページで、プロファイルを選択し、[編集] をクリックします。
- [Citrix Web App Firewall プロファイル]ページで、[詳細設定]セクションに移動し、[緩和ルール]をクリックします。
-
「 緩和ルール 」セクションで、「 クッキーの一貫性 」を選択し、「 アクション」をクリックします。
- [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 |
クッキーの整合性 | 0 | 0 |
クッキーのハイジャック | 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 injection | 0 | 0 |
JSON Cross-Site Scripting | 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 Injection | 0 | 0 |
XML Cross-Site Scripting | 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 |
クッキーの整合性ログ | 0 | 0 |
クッキーのハイジャックログ | 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 Resp) | 0 | 0 |
HTTP サーバエラー (5xx) | 0 | 0 |
GUI を使用して Cookie ハイジャックトラフィックと違反の統計情報を表示する
- Security > Citrix Web App Firewall > Profilesに移動します。
- 詳細ウィンドウで、 Web App Firewall プロファイルを選択し、[ 統計] をクリックします。
- Citrix Web App Firewall 統計 ページには、Cookieのハイジャックトラフィックと違反の詳細が表示されます。
- 表形式ビュー を選択するか、 グラフィカルビュー に切り替えて、データを表形式またはグラフィック形式で表示できます。