Citrix ADC

Comprobación de desbordamiento de búfer

La comprobación de desbordamiento de búfer detecta los intentos de provocar un desbordamiento de búfer en el servidor web. Si Web App Firewall detecta que la URL, las cookies o el encabezado son más largos que la longitud configurada, bloquea la solicitud porque puede provocar un desbordamiento del búfer.

La comprobación de desbordamiento de búfer evita ataques contra software de servidor web o sistema operativo inseguro que puede bloquearse o comportarse de forma impredecible cuando recibe una cadena de datos mayor de lo que puede manejar. Las técnicas de programación adecuadas evitan los desbordamientos de búfer mediante la comprobación de los datos entrantes y el rechazo o truncamiento de cadenas excesivas. Muchos programas, sin embargo, no comprueban todos los datos entrantes y, por lo tanto, son vulnerables a los desbordamientos de búfer. Este problema afecta especialmente a las versiones anteriores del software del servidor web y los sistemas operativos, muchos de los cuales todavía están en uso.

La comprobación de seguridad de desbordamiento de búfer le permite configurar las acciones Bloque, Registro y Estadísticas. Además, también puede configurar los siguientes parámetros:

  • Longitud máxima de URL. La longitud máxima que permite Web App Firewall en una URL solicitada. Las solicitudes con URL más largas están bloqueadas. Valores posibles: 0—65535. Predeterminado: 1024
  • Longitud máxima de la cookie. La longitud máxima que el Web App Firewall permite para todas las cookies en una solicitud. Las solicitudes con cookies más largas desencadenan las infracciones. Valores posibles: 0—65535. Predeterminado: 4096
  • Longitud máxima del encabezado. La longitud máxima que el Web App Firewall permite para encabezados HTTP. Las solicitudes con cabeceras más largas están bloqueadas. Valores posibles: 0—65535. Predeterminado: 4096
  • Longitud de cadena de consulta. Longitud máxima permitida para la cadena de consulta en una solicitud entrante. Las solicitudes con consultas más largas están bloqueadas. Valores posibles: 0—65535. Predeterminado: 1024
  • Longitud total de la solicitud. Longitud máxima de solicitud permitida para una solicitud entrante. Las solicitudes con mayor longitud están bloqueadas. Valores posibles: 0—65535. Predeterminado: 24820

Uso de la línea de comandos para configurar la comprobación de seguridad de desbordamiento de búfer

Para configurar acciones de comprobación de seguridad de desbordamiento de búfer y otros parámetros mediante la línea de comandos

En el símbolo del sistema, escriba:

add appfw profile <name> -bufferOverflowMaxURLLength <positive_integer> -bufferOverflowMaxHeaderLength <positive_integer> - bufferOverflowMaxCookieLength <positive_integer> -bufferOverflowMaxQueryLength <positive_integer> -bufferOverflowMaxTotalHeaderLength <positive_integer>

Ejemplo:

add appfw profile profile1 –bufferOverflowMaxURLLength 7000 –bufferOverflowMaxHeaderLength 7250 – bufferOverflowMaxCookieLength 7100 –bufferOverflowMaxQueryLength 7300 –bufferOverflowMaxTotalHeaderLength 7300

Configurar la comprobación de seguridad de desbordamiento de búfer mediante la GUI de Citrix ADC

  1. Vaya a Seguridad > Citrix Web App Firewall y Perfiles.
  2. En la página Perfiles, seleccione un perfil y haga clic en Modificar.
  3. En la página Perfil de Citrix Web App Firewall, vaya a la sección Configuración avanzada y haga clic en Comprobaciones de seguridad.
  4. En la sección Comprobaciones de seguridad, seleccione Desbordamiento de búfer y haga clic en Configuración de acciones
  5. En la página Configuración de desbordamiento de búfer, establezca los siguientes parámetros. a. Acciones. Seleccione una o más acciones para la comprobación de seguridad de inyección de comandos. b. Longitud máxima de URL. Longitud máxima, en caracteres, para las URL de los sitios web protegidos. Las solicitudes con URL más largas están bloqueadas. c. Longitud máxima de la cookie. Longitud máxima, en caracteres, para las cookies enviadas a sus sitios web protegidos. Las solicitudes con cookies más largas están bloqueadas. d. Longitud máxima de cabecera. Longitud máxima, en caracteres, para los encabezados HTTP en las solicitudes enviadas a los sitios web protegidos. Las solicitudes con cabeceras más largas están bloqueadas. e. Longitud máxima de la consulta. Longitud máxima, en bytes, para la cadena de consulta enviada a los sitios web protegidos. Las solicitudes con cadenas de consulta más largas están bloqueadas. f. Longitud máxima total del encabezado. Longitud máxima, en bytes, para la longitud total del encabezado HTTP en las solicitudes enviadas a los sitios web protegidos. Se utilizará el valor mínimo de este y MaxHeaderLen en HttpProfile. Las solicitudes con mayor longitud están bloqueadas.
  6. Haga clic en Aceptar y Cerrar.

    Configuración de la comprobación de desbordamiento de

Uso de la función de registro con la comprobación de seguridad de desbordamiento de búfer

Cuando la acción de registro está habilitada, las infracciones de comprobación de seguridad de desbordamiento de búfer se registran en el registro de auditoría como infracciones APTFW_BUFFEROVERFLOW_URL, APTFW_BUFFEROVERFLOW_COOKIE y APTFW_BUFFEROVERFLOW_HDR. El Web App Firewall admite los formatos de registro nativo y CEF. También puede enviar los registros a un servidor syslog remoto.

Si utiliza la interfaz gráfica de usuario para revisar los registros, puede utilizar la función de clic para implementar para aplicar las relajaciones indicadas por los registros.

Para acceder a los mensajes de registro mediante la línea de comandos

Cambie al shell y coloque los ns.logs en la carpeta /var/log/ para acceder a los mensajes de registro correspondientes a las violaciones de desbordamiento del búfer:

> \*\*Shell\*\*
> \*\*tail -f /var/log/ns.log | grep APPFW_BUFFEROVERFLOW\*\*

Ejemplo de un mensaje de registro CEF que muestra la violación BufferOverflowMaxCookieLength en modo no bloque

Oct 22 17:35:20 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|\*\*APPFW_BUFFEROVERFLOW_COOKIE\*\*|6|src=10.217.253.62 geolocation=Unknown spt=41198 method=GET request=http://aaron.stratum8.net/FFC/sc11.html \*\*msg=Cookie header length(43) is greater than maximum allowed(16).\*\* cn1=119 cn2=465 cs1=owa_profile cs2=PPE1 cs3=wvOOOb+cJ2ZRbstZpyeNXIqLj7Y0001 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*

Ejemplo de un mensaje de registro CEF que muestra una infracción de BufferOverflowMaxUrlLength en modo no bloque

Oct 22 18:39:56 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|\*\*APPFW_BUFFEROVERFLOW_URL\*\*|6|src=10.217.253.62 geolocation=Unknown spt=19171 method=GET request=http://aaron.stratum8.net/FFC/sc11.html \*\*msg=URL length(39) is greater than maximum allowed(20).\*\* cn1=707 cn2=402 cs1=owa_profile cs2=PPE0 cs3=kW49GcKbnwKByByi3+jeNzfgWa80000 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*

Ejemplo de un mensaje de registro de formato nativo que muestra una infracción de BufferOverflowMaxHeaderLength en modo de bloque

Oct 22 18:44:00 <local0.info> 10.217.31.98 10/22/2015:18:44:00 GMT ns 0-PPE-2 : default APPFW \*\*APPFW_BUFFEROVERFLOW_HDR\*\* 155 0 :  10.217.253.62 374-PPE2 khhBEeY4DB8V2D3H2sMLkXmfWnA0002 owa_profile \*\*Header(User-Agent) length(82) is greater than maximum allowed(10)\*\* : http://aaron.stratum8.net/ \*\*<blocked>\*\*

Para acceder a los mensajes de registro mediante la interfaz gráfica de usuario

La GUI de Citrix incluye una herramienta útil (Visor de syslog) para analizar los mensajes de registro. Tiene varias opciones para acceder al Visor de Syslog:

  • Vaya a Servidor de seguridad de aplicaciones > Perfiles, seleccione el perfil de destino y haga clic en Comprobaciones de seguridad. Resalte la fila Desbordamiento de búfer y haga clic en Registros. Cuando accede a los registros directamente desde la comprobación de seguridad de desbordamiento de búfer del perfil, la GUI filtra los mensajes de registro y muestra solo los registros correspondientes a estas infracciones de comprobación de seguridad.

  • También puede acceder al Visor de Syslog navegando a NetScaler > Sistema > Auditoría. En la sección Mensajes de auditoría, haga clic en el vínculo Mensajes de syslog para mostrar el Visor de syslog, que muestra todos los mensajes de registro, incluidos otros registros de infracciones de comprobación de seguridad. Esto es útil para depurar cuando se pueden desencadenar varias infracciones de comprobación de seguridad durante el procesamiento de solicitudes.

  • Vaya a Servidor de seguridad de aplicaciones > Directivas > Auditoría. En la sección Mensajes de auditoría, haga clic en el vínculo Mensajes de syslog para mostrar el Visor de syslog, que muestra todos los mensajes de registro, incluidos otros registros de infracciones de comprobación de seguridad.

El Visor de Syslog basado en XML proporciona varias opciones de filtro para seleccionar solo los mensajes de registro que le interesan. Para seleccionar mensajes de registro para la comprobación Desbordamiento de búfer, filtre seleccionando APPFW en las opciones de la lista desplegable para Módulo. La lista Tipo de evento ofrece tres opciones, APTFW_BUFFEROVERFLOW_URL, APTFW_BUFFEROVERFLOW_COOKIE y APPFW_BUFFEROVERFLOW_HDR, para ver todos los mensajes de registro relacionados con la comprobación de seguridad de desbordamiento de búfer. Puede seleccionar una o varias opciones para refinar aún más la selección. Por ejemplo, si activa la casilla de verificación APPFW_BUFFEROVERFLO_COOKIE y hace clic en el botón Aplicar, solo aparecerán en el Visor de Syslog los mensajes de registro correspondientes a las infracciones de comprobación de seguridad de desbordamiento de búfer para el encabezado Cookie. Si coloca el cursor en la fila de un mensaje de registro específico, debajo del mensaje de registro aparecen varias opciones, como Módulo, Tipode evento, Id.de evento e IP de cliente. Puede seleccionar cualquiera de estas opciones para resaltar la información correspondiente en el mensaje de registro.

Hacer clic para implementar: La GUI proporciona funcionalidad de clic para implementar, que actualmente solo se admite para los mensajes de registro de desbordamiento de búfer relacionados con las infracciones de longitud de URL. Puede utilizar el Visor de Syslog no solo para ver las violaciones desencadenadas, sino también para ejecutar decisiones informadas basadas en la longitud observada de los mensajes bloqueados. Si el valor actual es demasiado restrictivo y está activando falsos positivos, puede seleccionar un mensaje e implementarlo para reemplazar el valor actual por el valor de longitud de URL que aparece en el mensaje. Los mensajes de registro deben estar en formato de registro CEF para esta operación. Si se puede implementar la relajación para un mensaje de registro, aparece una casilla de verificación en el borde derecho del cuadro Visor de Syslog en la fila. Active la casilla de verificación y, a continuación, seleccione una opción de la lista Acción para implementar la relajación. Modificar e implementar, Implementar e Implementar todoestán disponibles como opciones de acción. Puede utilizar el filtro APTFW_BUFFEROVERFLOW_URL para aislar todos los mensajes de registro relacionados con las infracciones de longitud de URL configuradas.

Si selecciona un mensaje de registro individual, estarán disponibles las tres opciones de acción Modificar eimplementar, Implementare Implementar todo. Si selecciona Modificar e implementar, se mostrará el diálogo de configuración de desbordamiento de búfer. La nueva longitud de URL que se observó en la solicitud se inserta en el campo de entrada Longitud máxima de URL. Si hace clic en Cerrar sin modificaciones, los valores configurados actuales permanecen sin cambios. Si hace clic en el botón Aceptar, el nuevo valor de la longitud de URL máxima sustituye al valor anterior.

Nota

Las casillas de verificación de acción de bloque, registro y estadísticasno están marcadas en el diálogo de configuración de desbordamiento de búferque se muestra y deben reconfigurarse si selecciona la opción Modificar e implementar. Asegúrese de habilitar estas casillas de verificación antes de hacer clic en Aceptar; de lo contrario, la nueva longitud de URL se configurará pero las acciones se establecerá en ninguna.

Si activa las casillas de verificación de varios mensajes de registro, puede utilizar la opción Implementar o Implementar todo. Si los mensajes de registro implementados tienen diferentes longitudes de URL, el valor configurado se sustituye por el valor de longitud de URL más alto observado en los mensajes seleccionados. Al implementar la regla solo se cambia el valor BufferOverflowMaxUrlLength. Las acciones configuradas se conservan y permanecen sin cambios.

Para utilizar la funcionalidad Click-to-Deploy en la GUI

  1. En el Visor de Syslog, seleccione APTFW en las opciones de Módulo.
  2. Active la casilla de verificación APTFW_BUFFEROVERFLOW_URL como Tipo de evento para filtrar los mensajes de registro correspondientes.
  3. Active la casilla de verificación para seleccionar la regla.
  4. Utilice la lista desplegable Acción de opciones para implementar la relajación.
  5. Vaya a Servidor de seguridad de aplicaciones > Perfiles, seleccione el perfil de destino y haga clic en Comprobaciones de seguridad para acceder al panel de configuración de desbordamiento de búfer para comprobar que se actualiza el valor Longitud máxima de URL.

Estadísticas de las infracciones de desbordamiento de búfer

Cuando la acción de estadísticas está habilitada, el contador de la comprobación de seguridad de desbordamiento de búfer se incrementa cuando el Web App Firewall realiza cualquier acción para esta comprobación de seguridad. Las estadísticas se recopilan para Rate and Total count para Tráfico, Violaciones y Registros. El tamaño de un incremento del contador de registro puede variar en función de la configuración configurada. Por ejemplo, si la acción de bloqueo está habilitada, una solicitud de una página que contiene tres infracciones de desbordamiento de búfer incrementa el contador de estadísticas en uno, porque la página se bloquea cuando se detecta la primera infracción. Sin embargo, si el bloque está inhabilitado, el procesamiento de la misma solicitud incrementa el contador de estadísticas para las infracciones porque cada infracción genera un mensaje de registro independiente.

Para mostrar las estadísticas de comprobación de seguridad de desbordamiento de búfer mediante la línea de comandos

En el símbolo del sistema, escriba:

> sh appfw stats

Para mostrar las estadísticas de un perfil específico, utilice el siguiente comando:

> stat appfw profile <profile name>

Para mostrar las estadísticas de desbordamiento de búfer mediante la interfaz gráfica de usuario

  1. Vaya a Sistema > Seguridad > Servidor de seguridad de aplicaciones.
  2. En el panel derecho, acceda al Enlace de estadísticas.
  3. Utilice la barra de desplazamiento para ver las estadísticas sobre las infracciones y los registros de desbordamiento de búfer. La tabla de estadísticas proporciona datos en tiempo real y se actualiza cada 7 segundos.

Resumen

  • La comprobación de seguridad de desbordamiento de búfer le permite configurar límites para imponer la longitud máxima de las URL permitidas, las cookies y los encabezados.

  • Las acciones debloqueo, registro y estadísticasle permiten supervisar el tráfico y configurar la protección óptima para su aplicación.

  • El visor de Syslog permite filtrar y ver todos los mensajes de registro relacionados con violaciones de desbordamiento de búfer.

  • La funcionalidadde clic para implementar es compatible con las infracciones de BufferOverflowMaxUrlLength. Puede seleccionar e implementar una regla individual, o bien puede seleccionar varios mensajes de registro para ajustar y relajar el valor configurado actual de la longitud máxima permitida de la URL. El valor más alto de la dirección URL del grupo seleccionado se establece como el nuevo valor, para permitir todas estas solicitudes que están actualmente marcadas como infracciones.

  • El Web App Firewall ahora evalúa las cookies individuales al inspeccionar la solicitud entrante. Si la longitud de cualquier cookie recibida en el encabezado Cookie excede el BufferOverflowMaxCookieLengthconfigurado, se desencadena la infracción de desbordamiento de búfer.

Importante

En la versión 10.5.e (en algunas compilaciones provisionales de mejoras anteriores a la compilación 59.13xx.e) y 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”.

Este cambio se ha revertido. El comportamiento de la versión 10.5.e ->59.13xx.e y posteriores versiones de mejora 10.5.e, además de la versión 11.0 65.x y versiones posteriores, 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.