Citrix ADC

Comprobación de scripts entre sitios HTML

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 (scripts entre sitios) solo funciona para el tipo de contenido, la longitud del contenido, etc. No funciona para la cookie. Asegúrese también de tener habilitada la opción ‘CheckRequesTheaders’ en su perfil de Firewall de aplicaciones web.

Puede evitar el uso indebido de los scripts en los sitios web protegidos mediante scripts HTML Cross-Site Scripting que infrinjan la misma regla de origen, que establece que los scripts no deben tener acceso ni modificar el contenido de ningún servidor que no sea el servidor en el que se encuentren. 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 los 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.

Para configurar una protección optimizada de HTML Cross-Site Scripting para la aplicación, configure una de las acciones siguientes:

  • 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 1 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 web no interpreten etiquetas html inseguras, como <script>, y por lo tanto ejecuten código malicioso. Si habilita tanto la verificación de encabezado de solicitud como la transformación, también se modifican los caracteres especiales que se encuentren en los encabezados de solicitud. Si los scripts de su sitio web protegido contienen funciones de scripts entre sitios, pero su sitio web no confía en que dichos scripts funcionen correctamente, puede inhabilitar 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.

  • Compruebe las URL completas para la creación de scripts entre sitios. Si se habilita la comprobación de direcciones URL completas, Web App Firewall examina direcciones URL completas para los ataques de scripts entre sitios HTML en lugar de comprobar solo las partes de consulta de las URL.
  • Compruebe los encabezados de solicitud. Si la comprobación de encabezado de solicitud está habilitada, el Web App Firewall examina los encabezados de las solicitudes de ataques de scripts entre sitios HTML, 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 la inspección de consulta de solicitud está configurada, el Firewall de aplicaciones 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 (<), or close bracket (>) o de ambos corchetes abiertos y cerrados (<>) se marcó como infracción de scripting 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. scripts entre sitios Atributos permitidos: Hay 52 valores predeterminados atributos permitidos, tales como, abbr, accesskey, align, alt, axis, bgcolor, border, rellenode celdas, cell espaciado, char, charoff, charset y así sucesivamente
  2. Etiquetas permitidas de scripting entre sitios: Hay 47 etiquetas permitidas por defecto, tales como, address, basefont, bgsound, big, blockquote, bg, br, caption, center, cite, dd, del y así sucesivamente
  3. Patrones denegados de scripting entre sitios: Hay 129 patrones predeterminados denegados, como, FSCommand, javascript:, OnAbort, OnActivate y así sucesivamente

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.
  • A las expresiones de valor se les debe asignar un tipo 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 cruzados de sitios HTML 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 entre sitios HTML

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 los 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 más opciones para esta comprobación de seguridad, haga doble clic en HTML Cross-Site Scriptingo seleccione la fila y haga clic en Configuración de acciónpara 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 al Firewall 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.

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

a. Vaya a Firewall de aplicaciones > Firmas, seleccione Firmas predeterminadas y haga clic en Modificar. A continuación, haga clic en Administrar patrones de scripts SQL/entre sitios.

La tabla Administrar rutas de scripts SQL/entre sitios muestra las siguientes tres filas pertenecientes 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 de scripts entre sitios: Puede modificar el objeto de firma definido por el usuario para personalizar la etiqueta permitida, los atributos permitidos y los patrones denegados. 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 de scripts SQL/entre sitios para mostrar la tabla Administrar rutas de scripting SQL/sitios cruzados.

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 scripts entre sitios 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. La personalización de los elementos de scripts entre sitios puede hacer que la aplicación sea vulnerable a ataques de scripts entre sitios si se elimina el patrón necesario durante la edición.

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

Cuando se habilita la acción “aprender”, el motor de aprendizaje de Citrix Web App Firewall supervisa el tráfico y aprende las infracciones de URL de scripts entre sitios. Puede inspeccionar periódicamente las reglas de URL de scripts entre sitios e implementarlas para casos de falsos positivos.

Nota:

En una configuración de clúster, todos los nodos deben tener la misma versión para implementar las reglas de URL de scripts entre sitios.

Mejora del aprendizaje de scripts en sitios cruzados 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 violaciones y 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 mayor para el aprendizaje, puede agregar una etiqueta grande que no aparezca en AS_Cross-Site Scripting_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,URL de una ction, Tipode valor, Valory 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 HTML Cross-Site Scripting

Cuando se habilita la acción de registro, las infracciones de comprobación de seguridad de scripts entre sitios HTML se registran en el registro de auditoría como infracciones de scripts de AppFW_cross-site. 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 reproduzcan los ns.logs de la /var/log/ carpeta para acceder a los mensajes de registro correspondientes a las infracciones HTML Cross-Site Scripting:

Shell tail -f /var/log/ns.log | grep APPFW_cross-site scripting

Ejemplo de un mensaje de registro de infracciones de comprobación de seguridad de scripts cruzados 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_cross-site scripting\*\*|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_cross-site scripting\*\* 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>\*\*

Acceder a los mensajes de registro mediante la GUI

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 Firewall 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 Firewall 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 APPFW en las opciones de lista desplegable para 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 AppFW_Secuencias de comandos entre sitios y hace clic en el botón Aplicar, solo aparecen los mensajes de registro correspondientes a las infracciones de comprobación de seguridad de scripts cruzados de sitios HTML 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.

Configurar clic para implementar la función mediante la interfaz gráfica de usuario

  1. En el Visor de syslog, seleccione APPFW en las opciones del módulo.
  2. Seleccione el script App_cross-site 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>

Mostrar estadísticas de scripts HTML entre sitios mediante la GUI

  1. Vaya a Seguridad > Firewall 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

  • Compatibilidad integrada para la protección contra ataques de scripts cruzados de 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 y 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íbrida: tanto las firmas como las protecciones de seguridad profundas utilizan los patrones de scripts SQL/entre sitios especificados en el objeto de firma enlazado al perfil. Si no hay ningún objeto de firma enlazado al perfil, se utilizan los patrones de scripts SQL/Cross Site 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. Ajuste con precisión la regla de relajación para relajar un subconjunto de elementos de scripts entre sitios de la inspección de comprobación de seguridad, pero detectar 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 (<) or the close bracket character (>) no se interpretará como etiquetas de scripts entre sitios 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.