Citrix ADC

Comprobación de la coherencia de las cookies

La comprobación de coherencia de cookies examina las cookies devueltas por los usuarios para verificar que coinciden con las cookies que su sitio web ha establecido para ese usuario. Si se encuentra una cookie modificada, se elimina de la solicitud antes de que la solicitud se reenvíe al servidor web. También puede configurar la comprobación de coherencia de cookies para transformar todas las cookies de servidor que procesa, cifrando las cookies, haciendo de intermediario para las cookies o agregando marcas a las cookies. Esta comprobación se aplica a las solicitudes y respuestas.

Normalmente, un atacante modificaría una cookie para obtener acceso a información privada confidencial haciéndose pasar por un usuario autenticado previamente, o para provocar un desbordamiento de búfer. La comprobación de desbordamiento de búfer protege contra los intentos de provocar un desbordamiento de búfer mediante el uso de una cookie muy larga. La comprobación de coherencia de cookies se centra en el primer caso.

Si utiliza el asistente o la GUI, en el cuadro de diálogo Modificar comprobación de coherencia de cookies, en la ficha General puede habilitar o inhabilitar las siguientes acciones:

  • Bloquear
  • Registro
  • Aprendizaje
  • Estadísticas
  • Transformar. Si está activada, la acción Transformar modifica todas las cookies como se especifica en la siguiente configuración:
    • Cifrar cookies de servidor. Cifrar las cookies establecidas por su servidor web, excepto las enumeradas en la lista de relajación de comprobación de coherencia de cookies, antes de reenviar la respuesta al cliente. Las cookies cifradas se descifran cuando el cliente envía una solicitud posterior, y las cookies descifradas se vuelven a insertar en la solicitud antes de que se reenvíe al servidor web protegido. Especifique uno de los siguientes tipos de cifrado:
      • Ninguno. No cifrar ni descifrar las cookies. El valor predeterminado.
      • Descifrar solo. Descifrar solo las cookies cifradas. No cifrar las cookies.
      • Cifrar solo sesión. Cifrar solo las cookies de sesión. No cifrar las cookies persistentes. Descifrar cualquier cookie cifrada.
      • Cifrar todo. Cifrar cookies de sesión y persistentes. Descifrar cualquier cookie cifrada. Nota: Al cifrar las cookies, el Web App Firewall agrega el indicador HttpOnlya la cookie. Este indicador impide que los scripts accedan y analicen la cookie. Por lo tanto, el indicador impide que un virus o troyano basado en scripts acceda a una cookie descifrada y utilice esa información para violar la seguridad. Esto se hace independientemente de la configuración del parámetro Flags to Add in Cookies, que se maneja independientemente de la configuración del parámetro Encrypt Server Cookies.
  • Cookies de servidor proxy. Proxy todas las cookies no persistentes (de sesión) establecidas por su servidor web, excepto las enumeradas en la lista de relajación de comprobación de coherencia de cookies. Las cookies se configuran mediante el uso de la cookie de sesión existente de Web App Firewall. El Web App Firewall elimina las cookies de sesión establecidas por el servidor web protegido y las guarda localmente antes de reenviar la respuesta al cliente. Cuando el cliente envía una solicitud posterior, Web App Firewall vuelve a insertar las cookies de sesión en la solicitud antes de reenviarla al servidor web protegido. Especifique una de las siguientes opciones:

    • Ninguno. No usar cookies proxy. El valor predeterminado.
    • Solo sesión. Solo cookies de sesión proxy. No hacer proxy cookies persistentes

      Nota: Si inhabilita el proxy de cookies después de haberla habilitado (establezca este valor en Ninguno después de que se haya establecido en Solo sesión), el proxy de cookies se mantiene para las sesiones que se establecieron antes de inhabilitarlo. Por lo tanto, puede inhabilitar esta función de forma segura mientras el Web App Firewall está procesando sesiones de usuario.

  • Banderas para agregar en las cookies. Agregue banderas a las cookies durante la transformación. Especifique una de las siguientes opciones:

    • Ninguno. No agregue marcas a las cookies. El valor predeterminado.
    • Solo HTTP. Agregue el indicador HttpOnly a todas las cookies. Los exploradores que admiten el indicador HttpOnly no permiten que los scripts accedan a las cookies que tienen este indicador establecido.
    • Aseguren. Agregue el indicador Secure a las cookies que se enviarán solo a través de una conexión SSL. Los exploradores que admiten el indicador Secure no envían las cookies marcadas a través de una conexión insegura.
    • Todos. Agregue el indicador HttpOnly a todas las cookies y el indicador Secure a las cookies que se van a enviar solo a través de una conexión SSL.

Si utiliza la interfaz de línea de comandos, puede introducir los siguientes comandos para configurar la comprobación de coherencia de cookies:

  • 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])

Para especificar relajantes para la comprobación de coherencia de cookies, debe usar la GUI. En la ficha Comprobaciones del cuadro de diálogo Modificar comprobación de coherencia de cookies, haga clic en Agregar para abrir el cuadro de diálogo Agregar relajación de comprobación de coherencia de cookies, o seleccione una relajación existente y haga clic en Abrir para abrir el cuadro de diálogo Modificar relajación de comprobación de coherencia de cookies. Cualquiera de los dos cuadros de diálogo proporciona las mismas opciones para configurar una relajación.

A continuación se presentan ejemplos de relajación de comprobación de coherencia de cookies:

  • Campos de inicio de sesión. La siguiente expresión exime todos los nombres de cookies que comiencen con la cadena logon_ seguida de una cadena de letras o números que tenga al menos dos caracteres de longitud y no más de quince caracteres de longitud:

     ^logon_[0-9A-Za-z]{2,15}$
    
  • Campos de inicio de sesión (caracteres especiales). La siguiente expresión exime todos los nombres de cookies que comiencen con la cadena türkçe-logon_ seguida de una cadena de letras o números que tenga al menos dos caracteres de longitud y no más de quince caracteres de longitud:

     ^txC3xBCrkxC3xA7e-logon_[0-9A-Za-z]{2,15}$
    
  • Cadenas arbitrarias. Permitir cookies que contengan la cadena sc-item_, seguido del ID de un elemento que el usuario ha agregado a su carrito de compras ([0-9A-Za-z]+), un segundo guión bajo (_) y, finalmente, el número de estos artículos que quiere ([1-9][0-9]?), para ser modificable por el usuario:

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

Precaución: Las expresiones regulares son potentes. Especialmente si no está completamente familiarizado con las expresiones regulares con formato PCRE-format, compruebe las expresiones regulares que escriba. Asegúrese de que definen exactamente la URL que quiere agregar como excepción, y nada más. El uso descuidado de comodines, y especialmente de la combinación de metacarácter/comodín de punto ( .*), puede tener resultados que no quiera o espere, como bloquear el acceso al contenido web que no pretendía bloquear o permitir un ataque que la comprobación de coherencia de cookies tendría de otro modo bloqueado.

Importante

En la versión 10.5.e (en algunas compilaciones de mejoras provisionales anteriores a la compilación 59.13xx.e), así como en la versión 11.0 (en compilaciones anteriores a 65.x), se cambió el procesamiento de Web App Firewall del encabezado Cookie. En esas versiones, cada cookie se evalúa individualmente, y si la longitud de cualquier cookie recibida en el encabezado Cookie excede el BufferOverflowMaxCookieLength configurado, se desencadena la infracción de desbordamiento de búfer. Como resultado de este cambio, las solicitudes que se bloquearon en versiones 10.5 y versiones anteriores podrían ser permitidas, ya que la longitud de todo el encabezado de la cookie no se calcula para determinar la longitud de la cookie. En algunas situaciones, el tamaño total de la cookie reenviada al servidor puede ser mayor que el valor aceptado, y el servidor puede responder con “400 Bad Request”.

Tenga en cuenta que este cambio se ha revertido. El comportamiento en las compilaciones 10.5.e ->59.13xx.e y posteriores de mejora 10.5.e, así como en la versión 11.0 65.x y posteriores compilaciones ahora es similar al de las compilaciones no mejoradas de la versión 10.5. Ahora se tiene en cuenta todo el encabezado de Cookie sin procesar al calcular la longitud de la cookie. Los espacios circundantes y los caracteres de punto y coma (;) que separan los pares nombre-valor también se incluyen para determinar la longitud de la cookie.**

Nota

Consistencia de cookies sin sesión: el comportamiento de consistencia de cookies ha cambiado en la versión 11.0. En versiones anteriores, la comprobación de coherencia de cookies invoca la sesión. Las cookies se almacenan en la sesión y se firman. Se agrega un sufijo “wlt_” a las cookies transitorias y se agrega un sufijo “wlf_” a las cookies persistentes antes de que se reenvíen al cliente. Incluso si el cliente no devuelve estas cookies firmadas wlf/wlt, Web App Firewall utiliza las cookies almacenadas en la sesión para realizar la comprobación de coherencia de las cookies.

En la versión 11.0, la comprobación de coherencia de las cookies no tiene sesión. El Web App Firewall ahora agrega una cookie que es un hash de todas las cookies rastreadas por el Web App Firewall. Si falta o se altera esta cookie hash o cualquier otra cookie rastreada, el Web App Firewall elimina las cookies antes de reenviar la solicitud al servidor back-end y desencadena una infracción de coherencia de cookies. El servidor trata la solicitud como una nueva solicitud y envía nuevos encabezados Set-Cookie. La comprobación de coherencia de cookies en Citrix ADC versión 13.0, 12.1 y NetScaler 12.0 y 11.1 no tiene la opción sin sesión.

Comprobación de la coherencia de las cookies