Citrix ADC

Cookie整合性チェック

Cookie の一貫性チェックは、ユーザーから返された Cookie を調べ、Web サイトがそのユーザーに対して設定した Cookie と一致することを確認します。変更された Cookie が見つかると、リクエストが Web サーバーに転送される前にリクエストから削除されます。また、Cookie の暗号化、Cookie のプロキシ、または Cookie へのフラグの追加によって、処理するすべてのサーバー Cookie を変換するように Cookie の一貫性チェックを構成することもできます。このチェックはリクエストとレスポンスに適用されます。

攻撃者は通常、以前に認証されたユーザーになりすまして機密性の高い個人情報にアクセスしたり、バッファオーバーフローを引き起こしたりするために Cookie を改ざんします。バッファオーバーフローチェックは、長い Cookie を使用してバッファオーバーフローを起こそうとする試みから保護します。Cookie の整合性チェックでは、最初のシナリオに焦点を当てます。

ウィザードまたは GUI を使用する場合、[Cookie 整合性チェックの変更] ダイアログボックスの [ 全般] タブで、次のアクションを有効または無効にできます。

  • ブロック
  • ログ
  • 使い方
  • 統計
  • トランスフォーム。有効にすると、Transform アクションによってすべての Cookie が次の設定で指定されているとおりに変更されます。
    • サーバーの Cookie を暗号化します。応答をクライアントに転送する前に、Cookie の一貫性チェック緩和リストに記載されているものを除き、Web サーバーによって設定された Cookie を暗号化します。暗号化された Cookie は、クライアントが後続の要求を送信すると復号化され、復号化された Cookie は保護された Web サーバに転送される前に要求に再挿入されます。次の暗号化タイプの 1 つを指定します。
      • なし。Cookie を暗号化または復号化しないでください。デフォルト。
      • 復号化のみ。暗号化された Cookie のみを復号化します。Cookieは暗号化しないでください。
      • セッションのみを暗号化します。セッション Cookie のみを暗号化します。永続的な Cookie は暗号化しないでください。暗号化された Cookie をすべて復号化します。
      • すべてを暗号化します。セッションCookieと永続的なCookieの両方を暗号化します。暗号化された Cookie をすべて復号化します。 :Cookie を暗号化する場合、Web App Firewall は Cookie に HttpOnly フラグを追加します。このフラグは、スクリプトが Cookie にアクセスしたり解析したりすることを防ぎます。したがって、このフラグは、スクリプトベースのウイルスやトロイの木馬が復号化された Cookie にアクセスし、その情報を使用してセキュリティを侵害することを防ぎます。これは、[サーバーの Cookie の暗号化] パラメーター設定とは別に処理される [Cookie に追加するフラグ] パラメーター設定に関係なく行われます。
  • プロキシサーバーのCookie。Cookie の一貫性チェックの緩和リストに記載されているものを除き、Web サーバーによって設定されたすべての非永続的 (セッション) Cookie をプロキシします。Cookie は、既存の Web App Firewall セッション Cookie を使用してプロキシされます。Web App Firewall は、保護された Web サーバーによって設定されたセッション Cookie を取り除き、応答をクライアントに転送する前にローカルに保存します。クライアントが後続のリクエストを送信すると、Web App Firewall はセッション Cookie をリクエストに再挿入してから、保護された Web サーバーにリクエストを転送します。次のいずれかの設定を指定します。
    • なし。Cookieをプロキシしない。デフォルト。
    • セッションのみ。セッション Cookie のみプロキシする。永続的な Cookie をプロキシしない注:Cookie プロキシを有効にした後で無効にした場合 ([セッションのみ] に設定した後でこの値を [なし] に設定)、Cookie プロキシを無効にする前に確立されたセッションに対して Cookie プロキシが維持されます。したがって、Web App Firewall がユーザーセッションを処理している間は、この機能を安全に無効にできます。
  • Cookieに追加するフラグ。変換中に Cookie にフラグを追加します。次のいずれかの設定を指定します。
    • なし。Cookieにフラグを追加しないでください。デフォルト。
    • HTTP のみ。httpOnly フラグをすべてのCookieに追加します。HttpOnly フラグをサポートするブラウザでは、このフラグが設定された Cookie にスクリプトからアクセスすることはできません。
    • セキュア。SSL 接続でのみ送信される Cookie に Secure フラグを追加します。Secure フラグをサポートするブラウザは、フラグ付きの Cookie をセキュアでない接続で送信しません。
    • [すべて]。すべての Cookie に HttpOnly フラグを追加し、SSL 接続でのみ送信される Cookie に Secure フラグを追加します。

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力して Cookie 整合性チェックを設定できます。

  • set appfw profile <name> -cookieConsistencyAction [**block**] [**learn**] [**log**] [**stats**] [**none**]
  • set appfw profile <name> -cookieTransforms ([**ON**] | [**OFF**])
  • set appfw profile <name> -cookieEncryption ([**none**] | [**decryptOnly**] | [**encryptSession**] | [**encryptAll**])
  • set appfw profile <name> -cookieProxying ([**none**] | [**sessionOnly**])
  • set appfw profile <name> -addCookieFlags ([**none**] | [**httpOnly**] | [**secure**] | [**all**]

Cookie 整合性チェックの緩和を指定するには、GUI を使用する必要があります。[Cookie 整合性チェックの変更] ダイアログボックスの [チェック] タブで、[追加] をクリックして [Cookie 整合性チェック緩和の追加] ダイアログボックスを開くか、既存のリラクゼーションを選択して [開く] をクリックして [Cookie 整合性チェック緩和の変更] ダイアログボックスを開きます。どちらのダイアログボックスにも、リラクゼーションを構成するための同じオプションが表示されます。

Cookie整合性チェック緩和の例を以下に示します。

  • ログオンフィールド。次の式は、文字列 logon_ で始まり、その後に 2 文字以上 15 文字以下の文字または数字の文字列が続くすべての Cookie 名を除外します。

     ^logon_[0-9A-Za-z]{2,15}$
     <!--NeedCopy-->
    
  • ログオンフィールド (特殊文字)。次の式では、文字列 türkçe-logon_ で始まり、その後に 2 文字以上 15 文字以下の文字または数字の文字列が続くすべての Cookie 名が除外されます。

     ^txC3xBCrkxC3xA7e-logon_[0-9A-Za-z]{2,15}$
     <!--NeedCopy-->
    
  • 任意の文字列。sc-item_、ユーザーがショッピングカートに追加したアイテムのID([0-9a-za-Z]+)、2番目のアンダースコア(_)、最後に彼が望むアイテムの数([1-9][0-9]?)を含むCookieを許可します。ユーザーによる変更が可能になるには:

     ^sc-item_[0-9A-Za-z]+_[1-9][0-9]?$
     <!--NeedCopy-->
    

注意:正規表現は強力です。特に PCRE 形式の正規表現に慣れていない場合は、作成した正規表現をすべて再確認してください。例外として追加する URL を正確に定義し、それ以外は何も定義していないことを確認してください。ワイルドカード、特にドットとアスタリスク(.*)メタキャラクタとワイルドカードの組み合わせを不注意に使用すると、意図しないWebコンテンツへのアクセスをブロックしたり、Cookieの一貫性チェックでそうしない攻撃を許可したりするなど、望ましくない結果が得られる可能性があります。ブロックされています。

重要

リリース 10.5.e(59.13xx.e ビルドより前のいくつかの暫定的な拡張ビルド)と 11.0 リリース(65.x より前のビルド)では、Web App Firewall の Cookie ヘッダーの処理が変更されました。これらのリリースでは、すべての Cookie が個別に評価され、Cookie ヘッダーで受信された 1 つの Cookie の長さが設定された bufferOverflowMaxCookieLength を超えると、バッファオーバーフロー違反がトリガーされます。 この変更の結果、10.5 以前のリリースのビルドでブロックされたリクエストは許可される可能性があります。これは、Cookie の長さを決定するために Cookie ヘッダー全体の長さが計算されないためです。場合によっては、サーバーに転送される Cookie の合計サイズが受け入れられた値よりも大きくなり、サーバーが「400 Bad Request」で応答することがあります。

この変更は取り消されたことに注意してください 。10.5.e->59.13xx.e およびそれ以降の 10.5.e 拡張ビルド、11.0 リリース 65.x 以降のビルドでの動作は、リリース 10.5 の非拡張ビルドと同様になりました。Cookieの長さを計算するときに、生の Cookie ヘッダー全体が考慮されるようになりました。Cookie の長さの決定には、前後のスペースと名前と値のペアを区切るセミコロン (;) 文字も含まれます。**

セッションレス Cookie の一貫性: リリース 11.0 で Cookie の一貫性の動作が変更されました。 以前のリリースでは、Cookie 整合性チェックによってセッション化が呼び出されます。Cookieはセッションに保存され、署名されます。一時的な Cookie には「wlt_」サフィックスが付加され、クライアントに転送される前に、永続的な Cookie に「wlf_」サフィックスが追加されます。クライアントがこれらの署名付き wlf/wlt Cookie を返さない場合でも、Web App Firewall はセッションに保存されている Cookie を使用して Cookie の整合性チェックを実行します。

リリース 11.0 では、Cookie の整合性チェックはセッションレスです。Web App Firewall は、Web App Firewall によって追跡されるすべての Cookie のハッシュである Cookie を追加するようになりました。このハッシュ Cookie やその他の追跡 Cookie が見つからなかったり、改ざんされたりすると、Web App Firewall は要求をバックエンドサーバーに転送する前に Cookie を取り除き、Cookie の一貫性違反をトリガーします。サーバーはリクエストを新しいリクエストとして扱い、新しい Set-Cookie ヘッダーを送信します。Citrix ADCバージョン13.0、12.1、およびNetScaler 12.0および11.1のCookieの整合性チェックには、セッションレスオプションはありません。

Cookie整合性チェック

この記事の概要