Citrix ADC

クッキーの整合性チェック

Cookie の一貫性チェックでは、ユーザーから返された Cookie が検査され、Web サイトがそのユーザーに対して設定された Cookie と一致しているかどうかが検証されます。変更された Cookie が見つかった場合、要求が Web サーバーに転送される前に、要求から取り除かれます。また、クッキーの暗号化、クッキーのプロキシ、またはフラグの追加によって、処理するすべてのサーバークッキーを変換するように、クッキーの整合性チェックを構成することもできます。このチェックは、要求と応答に適用されます。

攻撃者は通常、Cookie を変更して、以前に認証されたユーザとして機密性の高い個人情報にアクセスしたり、バッファオーバーフローを引き起こしたりします。バッファオーバーフローのチェックは、非常に長い cookie を使用してバッファオーバーフローを引き起こす試みから保護します。Cookie の一貫性チェックでは、最初のシナリオに重点を置きます。

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

  • ブロック
  • Log
  • Learn
  • 統計
  • Transform. 有効にすると、Transform アクションは、次の設定で指定されているように、すべての Cookie を変更します。
    • サーバークッキーを暗号化します。応答をクライアントに転送する前に、Web サーバーによって設定された Cookie を暗号化します。ただし、Cookie 整合性チェック緩和リストにリストされているものを除きます。暗号化された Cookie は、クライアントが後続の要求を送信するときに復号化され、復号化された Cookie は保護された Web サーバーに転送される前に要求に再挿入されます。次のいずれかの暗号化タイプを指定します。
      • なし。クッキーを暗号化または復号化しないでください。デフォルトです。
      • 復号化のみ。暗号化されたクッキーのみを復号します。クッキーを暗号化しないでください。
      • セッションのみを暗号化します。セッションクッキーのみを暗号化します。永続的なクッキーを暗号化しないでください。暗号化されたクッキーを復号します。
      • すべてを暗号化します。セッションクッキーと永続クッキーの両方を暗号化します。暗号化されたクッキーを復号します。 :クッキーを暗号化する場合、Web App Firewall は、クッキーに HttpOnlyフラグを追加します。このフラグは、スクリプトが Cookie にアクセスして解析するのを防ぎます。したがって、フラグは、スクリプトベースのウイルスやトロイの木馬が復号化された Cookie にアクセスし、その情報を使用してセキュリティを侵害することを防ぎます。これは、[Cookie に追加する フラグ] パラメーター設定に関係なく行われます。この設定は、[サーバー Cookie を 暗号化] パラメーター設定とは無関係に処理されます。
  • プロキシサーバーのクッキー。Web サーバーによって設定されたすべての非永続的 (セッション) Cookie をプロキシします。ただし、Cookie 整合性チェック緩和リストにリストされているものは除きます。Cookie は、既存の Web App Firewall セッション Cookie を使用してプロキシされます。Web App Firewall は、保護された Web サーバーによって設定されたセッション Cookie を取り除き、クライアントに応答を転送する前にローカルに保存します。クライアントが後続の要求を送信すると、Web App Firewall はセッション Cookie をリクエストに再挿入してから、保護された Web サーバーに転送します。次のいずれかの設定を指定します。
    • なし。クッキーをプロキシしないでください。デフォルトです。
    • セッションのみ。プロキシ・セッション・クッキーのみ。永続的な Cookie をプロキシしない 注:有効にした後に Cookie プロキシを無効にした場合 ([ セッションのみ] に設定した後でこの値を [なし] に設定した場合)、Cookie プロキシは、無効にする前に確立されたセッションに対して維持されます。したがって、Web App Firewall がユーザーセッションを処理している間、この機能を安全に無効にすることができます。
  • クッキーに追加するフラグ。変換中にクッキーにフラグを追加します。次のいずれかの設定を指定します。
    • なし。クッキーにフラグを追加しないでください。デフォルトです。
    • HTTP のみ。すべてのクッキーにHttpOnlyフラグを追加します。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}$
    
  • ログオンフィールド (特殊文字)。次の式は、文字列 türkçe-logon_ で始まり、その後に 2 文字以上 15 文字以下の文字または数字の文字列が続くすべての Cookie 名を免除します。

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

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

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

重要

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

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

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

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

クッキーの整合性チェック