ADC

Comprobación de scripts XML entre sitios

La comprobación XML Cross-Site Scripting examina las solicitudes de los usuarios para posibles ataques de scripts entre sitios en la carga útil XML. Si encuentra un posible ataque de scripts entre sitios, bloquea la solicitud.

Para evitar el uso indebido de los scripts de los servicios web protegidos para infringir la seguridad de sus servicios web, la comprobación XML Cross-Site Scripting bloquea los scripts que infrinjan la misma regla de origen, lo que indica que los scripts no deben tener acceso ni modificar el contenido de ningún servidor excepto el servidor en el que se encuentran. 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.

El Web App Firewall ofrece varias opciones de acción para implementar la protección de scripts XML entre sitios. Tiene la opción de configurar acciones Bloquear, Registrar y Estadísticas.

La comprobación de scripts entre sitios XML de Web App Firewall se realiza en la carga útil de las solicitudes entrantes y las cadenas de ataque se identifican incluso si están distribuidas en varias líneas. La comprobación busca cadenas de ataque de scripts entre sitios en el elemento y los valores de atributo. Puede aplicar relajantes para eludir la inspección de comprobación de seguridad bajo condiciones especificadas. Los registros y las estadísticas pueden ayudarle a identificar las relajantes necesarias.

La sección CDATA de la carga útil XML podría ser un área de enfoque atractiva para los hackers porque los scripts no son ejecutables fuera de la sección CDATA. Una sección CDATA se utiliza para el contenido que se va a tratar completamente como datos de caracteres. Los delimitadores de etiquetas de marca HTML <, > y />no harán que el analizador interprete el código como elementos HTML. El siguiente ejemplo muestra una sección CDATA con cadena de ataque de scripts entre sitios:

    <![CDATA[rn
    <script language="Javascript" type="text/javascript">alert ("Got you")</script>rn
    ]]>
<!--NeedCopy-->

Opciones de acción

Se aplica una acción cuando la comprobación de scripts entre sitios XML detecta un ataque de scripts entre sitios en la solicitud. Las siguientes opciones están disponibles para optimizar la protección de scripts XML entre sitios para su aplicación:

  • Bloquear: la acción de bloqueo se desencadena si se detectan las etiquetas de scripts entre sitios en la solicitud.
  • Registro: Genera mensajes de registro que indican las acciones realizadas por la comprobación XML Cross-Site Scripting. Si el bloque está inhabilitado, se genera un mensaje de registro independiente para cada ubicación (ELEMENT, ATTRIBUTE) en la que se detecta la infracción de scripts entre sitios. Sin embargo, solo se genera un mensaje cuando se bloquea la solicitud. 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: Permite recopilar 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 las solicitudes legítimas se bloquean, es posible que tenga que volver a visitar la configuración para ver si necesita configurar nuevas reglas de relajación o modificar las existentes.

Reglas de relajación

Si la aplicación requiere que omita la comprobación Cross-Site Scripting para un ELEMENT o ATTRIBUTE específico en la carga útil XML, puede configurar una regla de relajación. Las reglas de relajación de comprobación XML Cross-Site Scripting tienen los siguientes parámetros:

  • Name—Puede utilizar cadenas literales o expresiones regulares para configurar el nombre del ELEMENTO o del Atributo. La siguiente expresión exime a todos los ELEMENTOS que comiencen con la cadena name_ seguida de una cadena de letras mayúsculas o minúsculas, o números, que tenga al menos dos y no más de quince caracteres de longitud:

    ^name_[0-9A-Za-z]{2,15}$

Nota

Los nombres distinguen mayúsculas de minúsculas. No se permiten entradas duplicadas, pero puede utilizar mayúsculas y minúsculas de los nombres y las diferencias de ubicación para crear entradas similares. Por ejemplo, cada una de las siguientes reglas de relajación es única:

  1. XMLcross-site scripting: ABC IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  2. XMLcross-site scripting: ABC IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  3. XMLcross-site scripting: abc IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  4. XMLcross-site scripting: abc IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  • Ubicación: Puede especificar la ubicación de la excepción Comprobación de scripts entre sitios en la carga XML. La opción ELEMENT está seleccionada de forma predeterminada. Puede cambiarlo a ATRIBUTO.
  • Comentario: Se trata de un campo opcional. Puede utilizar hasta una cadena de 255 caracteres para describir el propósito de esta regla de relajación.

Advertencia

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 el nombre que quiere agregar como excepción, y nada más. El uso descuidado de expresiones regulares puede tener resultados que no quiera, 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 XML entre sitios habría bloqueado de otro modo.

Comprobación Uso de la línea de comandos para configurar el script XML entre sitios

Para configurar XML Cross-Site Scripting, compruebe las acciones 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 XML:

> set appfw profile <name> -XMLcross-site scriptingAction (([block] [log] [stats]) | [none])

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

Puede agregar reglas de relajación para omitir la inspección de ataques de scripts entre sitios en una ubicación específica. Utilice el comando bind o unbind para agregar o eliminar el enlace de la regla de relajación, como se indica a continuación:

> bind appfw profile <name> -XMLcross-site scripting <string> [isRegex (REGEX | NOTREGEX)] [-location ( ELEMENT | ATTRIBUTE )] –comment <string> [-state ( ENABLED | DISABLED )]

> unbind appfw profile <name> -XMLcross-site scripting <String>

Ejemplo:

> bind appfw profile test_pr -XMLcross-site scripting ABC

Después de ejecutar el comando anterior, se configura la siguiente regla de relajación. La regla está habilitada, el nombre se trata como un literal (NOTREGEX) y ELEMENT se selecciona como la ubicación predeterminada:

1)      XMLcross-site scripting:  ABC             IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

`> unbind appfw profile test_pr -XMLcross-site scripting abc`

ERROR: No such XMLcross-site scripting check

`> unbind appfw profile test_pr -XMLcross-site scripting ABC`

 Done
<!--NeedCopy-->

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

En la GUI, puede configurar la comprobación de scripts XML entre sitios en el panel del perfil asociado a la aplicación.

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

  1. Vaya a Web App 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 solo quiere habilitar o inhabilitar las acciones Bloquear, Registrar y Estadísticas para la verificación XML Cross-Site Scripting, 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 el panel Comprobación de seguridad.

b) Puede hacer doble clic en XML Cross-Site Scripting, o seleccionar la fila y hacer clic en Configuración de acción, para mostrar las opciones de acción. Después de cambiar cualquiera de las opciones de acción, 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 configurar una regla de relajación de scripts XML entre sitios mediante la interfaz gráfica de usuario

  1. Vaya a Web App 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 XML 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 XML, realice las operaciones Agregar, Modificar, Eliminar, Habilitar o Inhabilitar para las reglas de relajación.

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

Para obtener una vista consolidada de todas las reglas de relajación, puede resaltar la fila XML 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 Web App Firewall > Firmas > Firmas predeterminadas. Si no enlaza ningún objeto de firma al perfil, el perfil utilizará la lista predeterminada de scripts entre sitios permitidos y denegados especificada en el objeto Firmas predeterminadas para el procesamiento de 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 definido 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 las firmas, consulte http://support.citrix.com/proddocs/topic/ns-security-10-map/appfw-signatures-con.html.

Para ver los patrones predeterminados de scripts entre sitios:

  1. Vaya a Web App Firewall > 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
<!--NeedCopy-->

Seleccione una fila y haga clic en Administrar elementos para mostrar los elementos de scripts entre sitios correspondientes (etiqueta, atributo, patrón) utilizados por la comprobación de scripts entre sitios del Web App Firewall.

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.

  1. Vaya a Web App 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.
  2. Seleccione la fila de scripts entre sitios de destino.

a) Haga clic en Administrar elementos, para Agregar, Modificar o Quitar el elemento de scripting entre sitios correspondiente.

b) Haga clic en Eliminar para eliminar la fila seleccionada.

Advertencia

Tenga mucho cuidado al quitar o modificar cualquier elemento predeterminado de scripts entre sitios, o elimine la ruta de scripts entre sitios para eliminar toda la fila. Las firmas, la comprobación de seguridad HTML Cross-Site Scripting y la comprobación de seguridad XML Cross-Site Scripting se basan en estos elementos para detectar ataques con el fin de proteger las 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 de registro con la comprobación de scripts XML entre sitios

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

> \*\*Shell\*\*

> \*\*tail -f /var/log/ns.log | grep APPFW_XML_cross-site scripting\*\*
<!--NeedCopy-->

Ejemplo de un mensaje de registro de infracción de comprobación de seguridad de scripts XML entre sitios en formato de registro nativo que muestra la acción <blocked>

Oct  7 01:44:34 <local0.warn> 10.217.31.98 10/07/2015:01:44:34 GMT ns 0-PPE-1 : default APPFW APPFW_XML_cross-site scripting 1154 0 :  10.217.253.69 3466-PPE1 - owa_profile http://10.217.31.101/FFC/login.html Cross-site script check failed for field script="Bad tag: script" <\*\*blocked\*\*>
<!--NeedCopy-->

Ejemplo de un mensaje de registro de infracción de comprobación de seguridad XML Cross-Site Scripting en formato de registro CEF que muestra la acción <not blocked>

Oct  7 01:46:52 <local0.warn> 10.217.31.98 CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_XML_cross-site scripting|4|src=10.217.30.17 geolocation=Unknown spt=33141 method=GET request=http://10.217.31.101/FFC/login.html msg=Cross-site script check failed for field script="Bad tag: script" cn1=1607 cn2=3538 cs1=owa_profile cs2=PPE0 cs4=ERROR cs5=2015 act=\*\*not blocked\*\*
<!--NeedCopy-->

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 Web App Firewall > Perfiles, seleccione el perfil de destino y haga clic en Comprobaciones de seguridad. Resalte la fila XML Cross-Site Scripting y haga clic en Registros. Cuando accede a los registros directamente desde la comprobación XML 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.

  • Desplácese hasta Web App Firewall > Directivas > Auditoría. En la sección Mensajes de auditoría, haga clic en el enlace 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 XML 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 Appfw_XML_cross-site scripting y hace clic en el botón Aplicar, solo aparecerán los mensajes de registro correspondientes a las infracciones de comprobación de seguridad de scripts entre sitios XML 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, Tipo de evento, Id.de 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.

Estadísticas de las infracciones de scripts entre sitios XML

Cuando la acción de estadísticas está habilitada, el contador de la comprobación XML Cross-Site Scripting 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 scripts XML 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 las estadísticas de comprobación de scripts XML entre sitios 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 XML Cross-Site Scripting mediante la interfaz gráfica de usuario

  1. Vaya a Sistema > Seguridad > Web App Firewall.
  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 scripts entre sitios XML. La tabla de estadísticas proporciona datos en tiempo real y se actualiza cada 7 segundos.