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 el Web App Firewall detecta que la URL, las cookies o el encabezado son más largos que la longitud máxima especificada en una solicitud, bloquea esa solicitud porque podría ser un intento de provocar un desbordamiento de 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, Registroy 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

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

Si utiliza la interfaz de línea de comandos, puede agregar los siguientes argumentos Comprobación de desbordamiento de búfer al comando <profileName> set appfw profile:

  • -bufferOverflowAction [[ block] [ log] [stats]] | [none]
  • -bufferOverflowMaxURLLength <positiveInteger>
  • -bufferOverflowMaxCookieLength <positiveInteger>
  • -bufferOverflowMaxHeaderLength <positiveInteger>

Uso de la GUI para configurar la comprobación de seguridad de desbordamiento de búfer

En la GUI, puede configurar la comprobación de seguridad de desbordamiento de búfer en el panel del perfil asociado a la aplicación.

Para configurar o modificar la comprobación de seguridad de desbordamiento de búfer mediante la interfaz gráfica de usuario

  1. Vaya a Servidor de seguridad de aplicaciones > Perfiles, resalte el perfil de destino y haga clic en Modificar.
  2. En el panel Configuración avanzada, haga clic en Comprobaciones de seguridad.

La tabla de comprobación de seguridad muestra los valores de acción configurados actualmente para todas las comprobaciones de seguridad. Tiene 2 opciones para la configuración:

a. Si solo quiere habilitar o inhabilitar las acciones Bloquear, Registrar y Estadísticas para desbordamiento de búfer, puede activar o desactivar las casillas de verificación de la tabla, hacer clic en Aceptar y, a continuación, en Guardar y cerrar para cerrar la comprobación de seguridad panel.

b. Si quiere configurar opciones adicionales para esta comprobación de seguridad, haga doble clic en Desbordamiento de búfer o seleccione la fila y haga clic en Configuración de acción para mostrar las siguientes opciones:

Longitud máxima de URL.

Longitud máxima de la cookie. Longitud máxima del encabezado.

Después de cambiar cualquiera de los parámetros anteriores, haga clic en Aceptar para guardar los cambios y volver a la tabla Comprobaciones de seguridad. Puede proceder a configurar otras comprobaciones de seguridad si es necesario. Haga clic en Aceptar para guardar todos los cambios realizados en la sección Comprobaciones de seguridad y, a continuación, haga clic en Guardar y cerrar para cerrar el panel Comprobación de seguridad.

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_COOKIEy 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 siga los ns.logs en la carpeta /var/log/ para acceder a los mensajes de registro relacionados con 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 (Syslog Viewer) 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 de desbordamiento de búfer, filtre seleccionando APTFW en las opciones desplegables del 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 APTFW_BUFFEROVERFLOW_COOKIE y hace clic en el botón Aplicar, solo aparecerán mensajes de registro relacionados con las infracciones de comprobación de seguridad de desbordamiento de búfer para el encabezado Cookie en el Visor de Syslog. 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 la relajación se puede implementar 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 de URL máxima. 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, registroy 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án 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 dependiendo 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 aumenta el contador de estadísticas en una, porque la página se bloquea tan pronto como se detecta la primera infracción. Sin embargo, si el bloque está inhabilitado, el procesamiento de la misma solicitud aumenta en tres el contador de estadísticas para infracciones y los registros, ya que 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 direcciones URL permitidas, cookies y encabezados.

  • Las acciones debloqueo, registroy 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 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.**