Citrix ADC

Comprobación de scripts HTML entre sitios

La comprobación HTML Cross-Site Scripting (scripting entre sitios) examina tanto los encabezados como los cuerpos POST de las solicitudes de los usuarios para detectar posibles ataques de scripting entre sitios. Si encuentra un script entre sitios, modifica (transforma) la solicitud para hacer que el ataque sea inofensivo, o bloquea la solicitud.

Nota:

La comprobación HTML Cross-Site Scripting (scripting entre sitios) solo funciona para el tipo de contenido, la longitud del contenido, etc. No funciona para las cookies. Asegúrese también de tener habilitada la opción ‘CheckRequesTheaders’ en su perfil de Firewall de aplicaciones web.

Para evitar el uso indebido de los scripts de los sitios web protegidos para vulnerar la seguridad de los sitios web, la comprobación HTML Cross-Site Scripting bloquea los scripts que infrinjan la misma regla de origen, que establece que los scripts no deben acceder ni modificar el contenido de ningún servidor, excepto el servidor en el que se encuentran ubicado. Cualquier script que infrinja la misma regla de origen se denomina script entre sitios, y la práctica de utilizar scripts para acceder o modificar contenido en otro servidor se denomina script entre sitios. La razón por la que las scripts entre sitios son un problema de seguridad es que un servidor web que permite la creación de scripts entre sitios puede ser atacado con un script que no está en ese servidor web, sino en un servidor web diferente, como uno propiedad y controlado por el atacante.

Desafortunadamente, muchas empresas tienen una gran base instalada de contenido web mejorado por JavaScript que viola la misma regla de origen. Si habilita la comprobación HTML Cross-Site Scripting en dicho sitio, debe generar las excepciones adecuadas para que la comprobación no bloquee la actividad legítima.

El Web App Firewall ofrece varias opciones de acción para implementar la protección de scripts entre sitios HTML. Además de las acciones Bloquear, Registrar, Estadísticas y Aprender, también tiene la opción de Transformar scripts entre sitiospara hacer que un ataque sea inofensivo mediante la codificación de las etiquetas de script en la solicitud enviada. Puede configurar Comprobar direcciones URL completas para el parámetro de scripts entre sitios para especificar si quiere inspeccionar no solo los parámetros de consulta, sino toda la URL para detectar ataques de scripts entre sitios. Puede configurar el parámetro InspectQueryContentTypes para inspeccionar la parte de consulta de solicitud para el ataque de scripts entre sitios para los tipos de contenido específicos.

Puede implementar relajantes para evitar falsos positivos. El motor de aprendizaje de Web App Firewall puede proporcionar recomendaciones para configurar reglas de relajación.

Las siguientes opciones están disponibles para configurar una protección optimizada de scripts HTML entre sitios para su aplicación:

  • Bloquear: Si habilita el bloqueo, la acción de bloqueo se activa si se detectan las etiquetas de scripts entre sitios en la solicitud.
  • Log: Si habilita la función de registro, la comprobación HTML Cross-Site Scripting genera mensajes de registro que indican las acciones que realiza. Si el bloqueo está inhabilitado, se genera un mensaje de registro independiente para cada encabezado o campo de formulario en el que se detectó la infracción de scripts entre sitios. Sin embargo, solo se genera un mensaje cuando se bloquea la solicitud. Del mismo modo, se genera un mensaje de registro por solicitud para la operación de transformación, incluso cuando las etiquetas de scripts entre sitios se transforman en varios campos. Puede supervisar los registros para determinar si las respuestas a las solicitudes legítimas se están bloqueando. Un gran aumento en el número de mensajes de registro puede indicar intentos de lanzar un ataque.
  • Estadísticas: Si está activada, la función de estadísticas recopila estadísticas sobre infracciones y registros. Un aumento inesperado en el contador de estadísticas podría indicar que su aplicación está siendo atacada. Si se bloquean las solicitudes legítimas, es posible que tenga que revisar la configuración para ver si debe configurar nuevas reglas de relajación o modificar las existentes.
  • Aprender: Si no está seguro de qué reglas de relajación pueden ser ideales para su aplicación, puede utilizar la función de aprendizaje para generar recomendaciones de reglas de scripts en sitios HTML basadas en los datos aprendidos. El motor de aprendizaje de Web App Firewall supervisa el tráfico y proporciona recomendaciones de aprendizaje basadas en los valores observados. Para obtener un beneficio óptimo sin comprometer el rendimiento, es posible que quiera habilitar la opción de aprendizaje durante un corto tiempo para obtener una muestra representativa de las reglas y, a continuación, implementar las reglas e inhabilitar el aprendizaje.
  • Transformar scripts entre sitios: Si está habilitado, el Web App Firewall realiza los siguientes cambios en las solicitudes que coinciden con la comprobación de scripts entre sitios HTML:
    • Corchete de ángulo izquierdo (<) a entidad de caracteres HTML equivalente (<)
    • Corchete de ángulo recto (>) a entidad de caracteres HTML equivalente (>)

Esto garantiza que los exploradores no interpreten etiquetas html inseguras, como <script>, y por lo tanto ejecutan código malicioso. Si habilita tanto la comprobación de cabecera de solicitud como la transformación, los caracteres especiales encontrados en los encabezados de solicitud también se modifican como se describe anteriormente. Si las scripts de su sitio web protegido contienen funciones de scripts entre sitios, pero su sitio web no confía en que esas scripts funcionen correctamente, puede desactivar de forma segura el bloqueo y habilitar la transformación. Esta configuración garantiza que no se bloquee ningún tráfico web legítimo, al tiempo que detiene cualquier posible ataque de scripts entre sitios.

  • Comprobar direcciones URL completas para scripts entre sitios: Si la comprobación de direcciones URL completas está habilitada, el Web App Firewall examina direcciones URL completas para detectar ataques de scripts entre sitios HTML en lugar de comprobar solo las partes de consulta de las direcciones URL.
  • Comprobar encabezados de solicitud: Si la comprobación de encabezado de solicitud está habilitada, Web App Firewall examina los encabezados de las solicitudes de ataques de scripts HTML entre sitios, en lugar de solo direcciones URL. Si utiliza la GUI, puede habilitar este parámetro en la ficha Configuración del perfil de Web App Firewall.
  • InspectQueryContentTypes: Si está configurada la inspección de consulta de solicitud, App Firewall examina la consulta de solicitudes de ataques de scripts entre sitios para los tipos de contenido específicos. Si utiliza la GUI, puede configurar este parámetro en la ficha Configuración del perfil de App Firewall.

Importante

Como parte de los cambios de transmisión, el procesamiento de Web App Firewall de las etiquetas de scripts entre sitios ha cambiado. Este cambio es aplicable a las versiones 11.0 en adelante. Este cambio también es pertinente para las compilaciones de mejora de 10.5.e que admiten la transmisión del lado de solicitud. En versiones anteriores, la presencia de corchetes abiertos (<), corchetes cerrados (>) o ambos corchetes abiertos y cerrados (<>) se marcó como Violación de scripts entre sitios. El comportamiento ha cambiado en las compilaciones que incluyen soporte para la transmisión del lado de solicitud. Solo el carácter de corchete cercano (>) ya no se considera un ataque. Las solicitudes se bloquean incluso cuando hay un carácter de corchete abierto (<) y se considera un ataque. El ataque de scripts entre sitios se marca.

Scripting entre sitios Relajaciones de grano fino

El Web App Firewall le ofrece la opción de eximir a un campo de formulario específico, encabezado o Cookie de la comprobación de inspección de scripts entre sitios. Puede omitir completamente la inspección de uno o más de estos campos configurando reglas de relajación.

Web App Firewall le permite implementar una seguridad más estricta ajustando las reglas de relajación. Una aplicación puede requerir flexibilidad para permitir patrones específicos, pero la configuración de una regla de relajación para omitir la inspección de seguridad puede hacer que la aplicación sea vulnerable a ataques, ya que el campo de destino está exento de inspección para cualquier patrón de ataque de scripts entre sitios. La relajación de grano fino de scripts entre sitios proporciona la opción de permitir atributos, etiquetas y patrones específicos. El resto de los atributos, etiquetas y patrones están bloqueados. Por ejemplo, Web App Firewall tiene actualmente un conjunto predeterminado de más de 125 patrones denegados. Dado que los piratas informáticos pueden utilizar estos patrones en ataques de scripts entre sitios, el Web App Firewall los marca como amenazas potenciales. Puede relajar uno o más patrones que se consideran seguros para la ubicación específica. El resto de los patrones de scripts potencialmente peligrosos entre sitios se siguen comprobando para la ubicación de destino y continúan activando las infracciones de comprobación de seguridad. Ahora tienes un control mucho más estricto.

Los comandos utilizados en las relajaciones tienen parámetros opcionales para Tipo de valor y Expresión de valor. El tipo de valor se puede dejar en blanco o tiene la opción de seleccionar Etiqueta, Atributo o Patrón. Si deja el tipo de valor en blanco, el campo configurado de la dirección URL especificada queda exento de la inspección de comprobación Cross-Site Scripting. Si selecciona un tipo de valor, debe proporcionar una expresión de valor. Puede especificar si la expresión de valor es una expresión regular o una cadena literal. Cuando la entrada se compara con la lista de permitidos y denegados, solo se excluyen las expresiones especificadas configuradas en las reglas de relajación.

Web App Firewall tiene las siguientes listas integradas de scripts entre sitios:

  1. Atributos permitidos XSS: Hay 52 valores predeterminados permitidos atributos, como, abbr, accesskey, align, alt, axis, bgcolor, border, cell padding, cell spacing, char, charoff, charset etc.
  2. Etiquetas permitidas XSS: Hay 47 valores predeterminados permitidos, como, address, basefont, bgsound, big, blockquote, bg, br, caption, center, cite, dd, del y así sucesivamente
  3. Patrones denegados XSS: Hay 129 valores predeterminados de patrones denegados, como, FSCommand, javascript:, OnAbort, OnActivate, etc.

Advertencia

Las URL de acción de Web App Firewall son expresiones regulares. Al configurar reglas de relajación de scripts entre sitios HTML, puede especificar Nombre y Expresión de valorpara que sean literales o RegEx. 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 regla que quiere agregar como excepción, y nada más. El uso descuidado de los comodines, y especialmente de la combinación de metacarácter/comodín de puntos (.*), puede tener resultados que no quiere, como bloquear el acceso al contenido web que no tenía intención de bloquear o permitir un ataque que la comprobación de scripts de sitios HTML hubiera bloqueado de otro modo.

Puntos a considerar:

  • La expresión de valor es un argumento opcional. Es posible que un nombre de campo no tenga ninguna expresión de valor.
  • Un nombre de campo se puede enlazar a varias expresiones de valor.
  • Se debe asignar un tipo de valor a las expresiones de valor. El tipo de valor de scripting entre sitios puede ser: 1) Etiqueta, 2) Atributo o 3) Patrón.
  • Puede tener varias reglas de relajación por combinación nombre/URL de campo
  • Los nombres de los campos de formulario y las URL de acción no distinguen entre mayúsculas y minúsculas.

Uso de la línea de comandos para configurar la comprobación HTML Cross-Site Scripting

Para configurar las acciones de comprobación de scripts entre sitios HTML y otros parámetros mediante la línea de comandos

Si utiliza la interfaz de línea de comandos, puede introducir los siguientes comandos para configurar la comprobación de scripts entre sitios HTML:

  • establecer perfil appfw “Las descripciones de los parámetros se proporcionan en la parte inferior de la página.”)
  • <name> -crossSiteScriptingAction (([block] [learn] [log] [stats]) | [**none**])
  • establecer perfil appfw “Las descripciones de los parámetros se proporcionan en la parte inferior de la página.”)
  • <name> **-crossSiteScriptingTransformUnsafeHTML** (ON | OFF)
  • establecer perfil appfw Descripciones de parámetros proporcionadas en la parte inferior de la página.
  • <name> -crossSiteScriptingCheckCompleteURLs (ON | OFF)
  • establecer perfil appfw Descripciones de parámetros proporcionadas en la parte inferior de la página.
  • <name> - checkRequestHeaders (ON | OFF) Descripciones de parámetros proporcionadas en la parte inferior de la página”.
  • <name> - CheckRequestQueryNonHtml (ON | OFF) Descripciones de parámetros proporcionadas en la parte inferior de la página”.

Para configurar una regla de relajación de comprobación de scripts HTML entre sitios mediante la línea de comandos

Utilice el comando bind o unbind para agregar o eliminar enlaces, como se indica a continuación:

  • bind appfw profile <name> -crossSiteScripting <String> [isRegex (REGEX | NOTREGEX)] <formActionURL> [-location <location>] [-valueType (Tag|Attribute|Pattern) [<valueExpression>] [-isValueRegex (REGEX | NOTREGEX) ]]
  • unbind appfw profile <name> -crossSiteScripting <String> <formActionURL> [-location <location>] [-valueType (Tag |Attribute|Pattern) [<valueExpression>]]

Uso de la GUI para configurar la comprobación de scripts HTML entre sitios

En la GUI, puede configurar la comprobación HTML Cross-Site Scripting en el panel del perfil asociado a la aplicación.

Para configurar o modificar la comprobación HTML Cross-Site Scripting mediante la interfaz gráfica de usuario

  1. Desplácese hasta Application Firewall > 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 quiere habilitar o inhabilitar las acciones Bloquear, Registrar, Estadísticas y Aprender para las scripts HTML entre sitios, puede activar o desactivar las casillas de verificación de la tabla, hacer clic en Aceptar y, a continuación, en Guardar y cerrar a cierre el panel Comprobación de seguridad.

b. Si quiere configurar opciones adicionales para esta comprobación de seguridad, haga doble clic en HTML Cross-Site Scripting o seleccione la fila y haga clic en Configuración de acción para mostrar las siguientes opciones:

Transformar scripts entre sitios: Transformar etiquetas de scripts no seguras.

Comprobar direcciones URL completas para scripts entre sitios: En lugar de comprobar solo la parte de consulta de la URL, compruebe la URL completa para detectar infracciones de scripts entre sitios.

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.

Para habilitar o inhabilitar la configuración Comprobar encabezado de solicitud, en el panel Configuración avanzada, haga clic en Configuración del perfil. En Configuración común, active o desactive la casilla de verificación Comprobar encabezados de solicitud. Haga clic en Aceptar. Puede utilizar el icono X situado en la parte superior derecha del panel Configuración del perfil para cerrar esta sección o, si ha terminado de configurar este perfil, puede hacer clic en Listo para volver a Servidor de seguridad de aplicaciones > Perfil.

Para habilitar o inhabilitar la opción Comprobar consulta de solicitud no HTML, en el panel Configuración avanzada, haga clic en Configuración del perfil. En Configuración común, active o desactive la casilla de verificación Comprobar consulta de solicitud no HTML. Haga clic en Aceptar. Puede utilizar el icono X situado en la parte superior derecha del panel Configuración del perfil para cerrar esta sección o, si ha terminado de configurar este perfil, puede hacer clic en Listo para volver a App Firewall > Perfil.

Para configurar una regla de relajación HTML Cross-Site Scripting mediante la interfaz gráfica de usuario

  1. Desplácese hasta Application Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.
  2. En el panel Configuración avanzada, haga clic en Reglas de relajación.
  3. En la tabla Reglas de relajación, haga doble clic en la entrada HTML Cross-Site Scripting, o selecciónela y haga clic en Modificar.
  4. En el cuadro de diálogo Reglas de relajación de scripts entre sitios HTML, realice las operaciones Agregar, Modificar, Eliminar, Habilitar o Inhabilitar para las reglas de relajación.

Nota

Al agregar una regla nueva, el campo Expresión de valor no se muestra a menos que seleccione la opción Etiqueta, Atributo o Patrón en el campo Tipo de valor.

Para administrar las reglas de relajación de scripts entre sitios HTML mediante el visualizador

Para obtener una vista consolidada de todas las reglas de relajación, puede resaltar la fila HTML Cross-Site Scripting en la tabla Reglas de relajación y hacer clic en Visualizador. El visualizador para las relajaciones implementadas le ofrece la opción de Agregar una nueva regla o Modificar una existente. También puede habilitar o inhabilitar un grupo de reglas seleccionando un nodo y haciendo clic en los botones correspondientes en el visualizador de relajación.

Para ver o personalizar los patrones de scripts entre sitios mediante la interfaz gráfica de usuario

Puede utilizar la GUI para ver o personalizar la lista predeterminada de atributos permitidos de scripts entre sitios o etiquetas permitidas. También puede ver o personalizar la lista predeterminada de patrones denegados de scripts entre sitios.

Las listas predeterminadas se especifican en Firewall de aplicaciones > Firmas > Firmas predeterminadas. Si no vincula ningún objeto de firma a su perfil, el perfil utilizará la lista predeterminada de scripts entre sitios permitidas y denegadas especificada en el objeto Firmas predeterminadas para el procesamiento de la comprobación de seguridad de scripts entre sitios. Tags, Attributes y Patterns, especificados en el objeto de firmas predeterminado, son de solo lectura. No puede modificarlos ni modificarlos. Si quiere modificarlos o cambiarlos, realice una copia del objeto Signatures Default para crear un objeto Signatures definido por el usuario. Realice cambios en las listas permitidas o denegadas del nuevo objeto de firma definida por el usuario y utilice este objeto de firma en el perfil que está procesando el tráfico para el que quiere utilizar estas listas personalizadas permitidas y denegadas.

Para obtener más información acerca de Firmas, consulte el tema siguiente.

  1. Para ver los patrones predeterminados de scripts entre sitios:

a. Vaya a Servidor de seguridad de aplicaciones > Firmas, seleccione Firmas predeterminadas y haga clic en Modificar. A continuación, haga clic en Administrar patrones SQL/XSS.

La tabla Administrar rutas SQL/XSS muestra las tres filas siguientes relativas a scripts entre sitios:

xss/allowed/attribute

xss/allowed/tag

xss/denied/pattern

b. Seleccione una fila y haga clic en Administrar elementos para mostrar los Elementos de scripting entre sitios correspondientes (Etiqueta, Atributo, Patrón) utilizados por la comprobación de Scripting Cross-Site Web App Firewall.

  1. Para personalizar elementos XSS: Puede modificar el objeto de firma definida por el usuario para personalizar la etiqueta, los atributos permitidos y los patrones denegados permitidos. Puede agregar nuevas entradas o eliminar las existentes.

a. Vaya a Application Firewall > Firmas, resalte la firma definida por el usuario de destino y haga clic en Modificar. Haga clic en Administrar patrones SQL/XSS para mostrar la tabla Administrar rutas SQL/XSS.

b. Seleccione la fila de scripts entre sitios de destino.

i. Haga clic en Administrar elementos para agregar, modificar o quitar el elemento de scripts entre sitios correspondiente.

ii. Haga clic en Eliminar para eliminar la fila seleccionada.

Advertencia

Debe tener cuidado antes de quitar o modificar cualquier elemento predeterminado de scripts entre sitios, o eliminar la ruta de acceso XSS para quitar toda la fila. Las reglas de firma y la comprobación de seguridad Cross-Site Scripting se basan en estos elementos para detectar ataques y proteger sus aplicaciones. Personalizar los elementos XSS puede hacer que la aplicación sea vulnerable a los ataques de scripts entre sitios si se elimina el patrón requerido durante la edición.

Uso de la función Learn con la comprobación de scripts entre sitios HTML

Cuando la acción de aprendizaje está habilitada, el motor de aprendizaje de Web App Firewall supervisa el tráfico y descubre las infracciones desencadenadas. Puede inspeccionar periódicamente estas reglas aprendidas. Después de la debida consideración, puede implementar la regla aprendida como una regla de relajación HTML Cross-Site Scripting.

Mejora del aprendizaje de scripts entre sitios HTML: En la versión 11.0 del software Citrix ADC se introdujo una mejora de aprendizaje de Web App Firewall. Para implementar la relajación de scripts HTML multisitio de grano fino, el Web App Firewall ofrece un aprendizaje de scripts HTML multisitio de grano fino. El motor de aprendizaje hace recomendaciones sobre el Tipo de Valor observado (Etiqueta, Atributo, Patrón) y la expresión Valor correspondiente observada en los campos de entrada. Además de comprobar las solicitudes bloqueadas para determinar si la regla actual es demasiado restrictiva y necesita ser relajada, puede revisar las reglas generadas por el motor de aprendizaje para determinar qué tipo de valor y expresiones de valor están desencadenando infracciones y que deben abordarse en las reglas de relajación.

Nota

El motor de aprendizaje de Web App Firewall puede distinguir solo los primeros 128 bytes del nombre. Si un formulario tiene varios campos con nombres que coinciden con los primeros 128 bytes, es posible que el motor de aprendizaje no pueda distinguir entre ellos. Del mismo modo, la regla de relajación implementada podría relajar inadvertidamente todos estos campos de la inspección HTML Cross-Site Scripting. Sugerencia

Las etiquetas de scripts entre sitios que tienen más de 12 caracteres no se aprenden ni se registran correctamente.

Si necesita una longitud de etiqueta más grande para aprender, puede agregar una etiqueta grande que no aparece en AS_XSS_ALLOWED_TAGS_LIST para la longitud ‘x’.

Para ver o utilizar datos aprendidos mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba uno de los siguientes comandos:

  • show appfw learningdata <profilename> crossSiteScripting
  • rm appfw learningdata <profilename> -crossSiteScripting <string> <formActionURL> [<location>] [<valueType> <valueExpression>]
  • export appfw learningdata <profilename> **crossSiteScripting*

Para ver o utilizar datos aprendidos mediante la interfaz gráfica de usuario

  1. Desplácese hasta Application Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.
  2. En el panel Configuración avanzada, haga clic en Reglas aprendidas. Puede seleccionar la entrada HTML Cross-Site Scripting en la tabla Reglas aprendidas y hacer doble clic en ella para acceder a las reglas aprendidas. La tabla muestra las columnas Nombre de campo,Dirección URL de cocción, Tipo de valor, Valor y Hits. Puede implementar las reglas aprendidas o modificar una regla antes de implementarla como regla de relajación. Para descartar una regla, puede seleccionarla y hacer clic en el botón Omitir. Solo puede modificar una regla a la vez, pero puede seleccionar varias reglas para implementar u omitir.

También tiene la opción de mostrar una vista resumida de las relajantes aprendidas seleccionando la entrada HTML Cross-Site Scripting en la tabla Reglas aprendidas y haciendo clic en Visualizador para obtener una vista consolidada de todas las infracciones aprendidas. El visualizador facilita la gestión de las reglas aprendidas. Presenta una visión completa de los datos en una pantalla y facilita la acción en un grupo de reglas con un solo clic. La mayor ventaja del visualizador es que recomienda expresiones regulares para consolidar varias reglas. Puede seleccionar un subconjunto de estas reglas, basado en el delimitador y la URL de acción. Puede mostrar 25, 50 o 75 reglas en el visualizador seleccionando el número de una lista desplegable. El visualizador de reglas aprendidas ofrece la opción de modificar las reglas e implementarlas como relajaciones. O puede omitir las reglas para ignorarlas.

Uso de la función de registro con la comprobación de scripts entre sitios HTML

Cuando la acción de registro está habilitada, las infracciones de comprobación de seguridad de scripts HTML entre sitios se registran en el registro de auditoría como infracciones de APTFW_XSS. El Web App Firewall admite los formatos de registro nativo y CEF. También puede enviar los registros a un servidor syslog remoto.

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 correspondientes a las infracciones de scripts HTML entre sitios:

Shell tail -f /var/log/ns.log | grep APPFW_XSS

Ejemplo de un mensaje de registro de infracción de comprobación de seguridad entre sitios Scripting en formato de registro CEF

Jul 11 00:45:51 <local0.info> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|\*\*APPFW_XSS\*\*|6|src=10.217.253.62 geolocation=Unknown spt=4840 method=GET request=http://aaron.stratum8.net/FFC/CreditCardMind.html?abc=%3Cdef%3E msg=\*\*Cross-site script check failed for field abc="Bad tag: def"\*\* cn1=133 cn2=294 cs1=pr_ffc cs2=PPE1 cs3=eUljypvLa0BbabwfGVE52Sewg9U0001 cs4=ALERT cs5=2015 act=\*\*not blocked\*\*

Ejemplo de un mensaje de registro de infracción de comprobación de seguridad entre sitios Scripting en formato de registro nativo que muestra la acción de transformación

Jul 11 01:00:28 <local0.info> 10.217.31.98 07/11/2015:01:00:28 GMT ns 0-PPE-0 : default APPFW \*\*APPFW_XSS\*\* 132 0 :  10.217.253.62 392-PPE0 eUljypvLa0BbabwfGVE52Sewg9U0001 pr_ffc http://aaron.stratum8.net/FFC/login.php?login_name=%3CBOB%3E&passwd=&drinking_pref=on &text_area=&loginButton=ClickToLogin&as_sfid=AAAAAAVFqmYL68IGvkrcn2pzehjfIkm5E6EZ9FL8YLvIW_41AvAATuKYe9N7uGThSpEAxbb0iBx55jyvqOZNiVK_XwEPstMYvWHxfUWl62WINwRMrKsEDil-FC4llF \*\*Cross-site script special characters seen in fields <transformed>\*\*

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 HTML Cross-Site Scripting y haga clic en Registros. Cuando accede a los registros directamente desde la comprobación HTML Cross-Site Scripting 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 Citrix ADC > 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 HTML proporciona varias opciones de filtro para seleccionar solo los mensajes de registro que le interesan. Para seleccionar mensajes de registro para la comprobación HTML Cross-Site Scripting, filtre seleccionando APTFW en las opciones desplegables del módulo. La lista Tipo de evento ofrece un amplio conjunto de opciones para refinar aún más su selección. Por ejemplo, si activa la casilla de verificación APTFW_XSS y hace clic en el botón Aplicar, solo los mensajes de registro relacionados con las infracciones de comprobación de seguridad de scripts HTML entre sitios aparecerán en el Visor de Syslog.

Si coloca el cursor en la fila de un mensaje de registro específico, aparecen varias opciones, como Módulo, Tipode evento, IDde evento, IP de cliente, etc. debajo del mensaje de registro. Puede seleccionar cualquiera de estas opciones para resaltar la información correspondiente en el mensaje de registro.

La funcionalidadClick to Deploy solo está disponible en la interfaz gráfica de usuario. Puede utilizar el Visor de Syslog no solo para ver los registros, sino también para implementar reglas de relajación de scripts en sitios HTML basadas en los mensajes de registro para las infracciones de comprobación de seguridad de Web App Firewall. Los mensajes de registro deben estar en formato de registro CEF para esta operación. Haga clic para implementar la funcionalidad solo está disponible para los mensajes de registro generados por la acción de bloque (o no bloque). No se puede implementar una regla de relajación para un mensaje de registro sobre la operación de transformación.

Para implementar una regla de relajación desde el Visor de Syslog, seleccione el mensaje de registro. Aparece una casilla de verificación en la esquina superior derecha del cuadro Visor de Syslog de la fila seleccionada. Active la casilla de verificación y, a continuación, seleccione una opción de la lista Acción para implementar la regla de relajación. Modificar e implementar, Implementar e Implementar todoestán disponibles como opciones de acción.

Las reglas HTML Cross-Site Scripting que se implementan mediante la opción Hacer clic para implementar no incluyen las recomendaciones de relajación de grano fino.

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. Seleccione APP_XSS como Tipo de evento para filtrar los mensajes de registro correspondientes.
  3. Active la casilla de verificación para identificar la regla que se va a implementar.
  4. Utilice la lista desplegable Acción de opciones para implementar la regla de relajación.
  5. Compruebe que la regla aparece en la sección correspondiente de regla de relajación.

Estadísticas de las infracciones HTML Cross-Site Scripting

Cuando la acción de estadísticas está habilitada, el contador de la comprobación HTML Cross-Site Scripting aumenta 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, la solicitud de una página que contiene 3 infracciones de scripts HTML entre sitios aumenta el contador de estadísticas en uno, 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 HTML Cross-Site Scripting, compruebe las estadísticas 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 estadísticas HTML Cross-Site Scripting mediante la interfaz gráfica de usuario

  1. Vaya a Seguridad > Servidor de seguridad de aplicaciones > Perfiles > Estadísticas.
  2. En el panel derecho, acceda al Enlace de estadísticas.
  3. Utilice la barra de desplazamiento para ver las estadísticas sobre infracciones y registros de scripts entre sitios HTML. La tabla de estadísticas proporciona datos en tiempo real y se actualiza cada 7 segundos.

Resumen

Tenga en cuenta los siguientes puntos acerca de la comprobación HTML Cross-Site Scripting:

  • Compatibilidad integrada para la protección contra ataques de scripts entre sitios HTML: Citrix Web App Firewall protege contra ataques de scripts entre sitios mediante la supervisión de una combinación de atributos y etiquetas permitidos, así como patrones denegados en la carga útil recibida. Todas las etiquetas permitidas predeterminadas incorporadas, los atributos permitidos y los patrones denegados utilizados por la comprobación de scripts entre sitios se especifican en el archivo /netscaler/default_custom_settings.xml.
  • Personalización N: Puede cambiar la lista predeterminada de etiquetas, atributos y patrones para personalizar la inspección de comprobación de seguridad Cross-Site Scripting según las necesidades específicas de la aplicación. Realice una copia del objeto de firma predeterminado, modifique las entradas existentes o agregue otras nuevas. Enlazar este objeto de firma a su perfil para hacer uso de la configuración personalizada.
  • Modelo de seguridad híbrido: Tanto las firmas como las protecciones de seguridad profundas utilizan los patrones SQL/XSS especificados en el objeto de firma enlazado al perfil. Si no hay ningún objeto de firma enlazado al perfil, se utilizan los patrones SQL/XSS presentes en el objeto de firma predeterminado.
  • Transformar: Tenga en cuenta lo siguiente acerca de la operación de transformación:

La operación de transformación funciona independientemente de la otra configuración de acción Cross-Site Scripting. Si la transformación está habilitada y el bloqueo, el registro, las estadísticas y el aprendizaje están inhabilitados, las etiquetas de scripts entre sitios se transforman.

Si la acción de bloqueo está habilitada, tiene prioridad sobre la acción de transformación.

  • Relajación y aprendizaje de grano fino: Afina la regla de relajación para relajar un subconjunto de elementos de scripting de sitios cruzados de la inspección de seguridad, pero detecta el resto. El motor de aprendizaje recomienda un tipo de valor específico y expresiones de valor basadas en los datos observados.
  • Haga clic para implementar: Seleccione uno o varios mensajes de registro de infracciones de scripts entre sitios en el visor de syslog e implemente como reglas de relajación.
  • Charset—El juego de caracteres predeterminado para el perfil se debe establecer en función de la necesidad de la aplicación. De forma predeterminada, el juego de caracteres de perfil se establece en Inglés EE. UU. (ISO-8859-1). Si se recibe una solicitud sin el juego de caracteres especificado, Web App Firewall procesa la solicitud como si fuera ISO-8859-1. El carácter de corchete abierto (<) o de corchete cerrado (>) no se interpretará como etiquetas XSS si estos caracteres están codificados en otros conjuntos de caracteres. Por ejemplo, si una solicitud contiene una cadena de caracteres UTF-8 “%uff1cscript%uff1epero el juego de caracteres no se especifica en la página de solicitud, es posible que la infracción de scripts entre sitios no se active a menos que el juego de caracteres predeterminado para el perfil se especifique como Unicode.