Comprobación de secuencias de comandos XML entre sitios
La comprobación Scripting entre sitios XML examina las solicitudes de los usuarios de posibles ataques de scripting entre sitios en la carga XML. Si encuentra un posible ataque de scripting entre sitios, bloquea la solicitud.
Para evitar un uso indebido de los scripts de sus servicios web protegidos para infringir la seguridad de sus servicios web, la comprobación de secuencias de comandos entre sitios XML 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. Cualquier script que infrinja la misma regla de origen se denomina scripting entre sitios y la práctica de utilizar scripts para acceder o modificar el contenido de otro servidor se denomina scripting entre sitios. La razón por la que los scripts de sitios son un problema de seguridad es que un servidor web que permite el scripting entre sitios puede ser atacado con un script que no esté en ese servidor web, sino en un servidor web diferente, como uno que sea propiedad y esté controlado por el atacante.
El Web App Firewall ofrece varias opciones de acción para implementar la protección de secuencias de comandos entre sitios XML. Tiene la opción de configurar las acciones de bloqueo, registroy estadísticas .
La comprobación de secuencias de comandos 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 mediante secuencias de comandos entre sitios en el elemento y en los valores de los atributos . Puede aplicar medidas de relajación para eludir la inspección de los controles de seguridad en condiciones específicas. Los registros y las estadísticas pueden ayudarle a identificar las relajaciones necesarias.
La sección CDATA de la carga XML podría ser un área de enfoque atractiva para los piratas informáticos, ya que los scripts no se pueden ejecutar fuera de la sección CDATA. Se utiliza una sección CDATA para el contenido que debe tratarse exclusivamente como datos de caracteres. Los delimitadores de etiquetas de marcado HTML <, **y **/ no harán que el analizador interprete el código como elementos HTML. El siguiente ejemplo muestra una sección de CDATA con una cadena de ataque mediante secuencias de comandos 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 secuencias de comandos entre sitios de XML detecta un ataque de secuencias de comandos entre sitios en la solicitud. Están disponibles las siguientes opciones para optimizar la protección de XML Cross-Site Scripting para su aplicación:
- Bloquear: la acción de bloqueo se activa si se detectan las etiquetas de secuencias de comandos entre sitios en la solicitud.
- Registro: genere mensajes de registro que indiquen las acciones realizadas por la comprobación de secuencias de comandos entre sitios XML. Si el bloque está desactivado, se genera un mensaje de registro independiente para cada ubicación (ELEMENTO, ATRIBUTO) en la que se detecte la infracción de las secuencias de comandos 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 la cantidad de mensajes de registro puede indicar intentos de lanzar un ataque.
- 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 las solicitudes legítimas se bloquean, es posible que tenga que volver a revisar la configuración para ver si necesita configurar nuevas reglas de relajación o modificar las existentes.
Reglas de relajación
Si su aplicación requiere que omita la comprobación de secuencias de comandos entre sitios para detectar un ELEMENTO o ATRIBUTO específico en la carga XML, puede configurar una regla de relajación. Las reglas de relajación de comprobaciones de secuencias de comandos multisitios XML tienen los siguientes parámetros:
-
Nombre: 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 por el nombre de la cadena_ seguido de una cadena de letras mayúsculas o minúsculas, o números, de al menos dos y no más de quince caracteres:
^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 en 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:
XMLcross-site scripting: ABC IsRegex: NOTREGEX
Location: ATTRIBUTE State: ENABLED
XMLcross-site scripting: ABC IsRegex: NOTREGEX
Location: ELEMENT State: ENABLED
XMLcross-site scripting: abc IsRegex: NOTREGEX
Location: ELEMENT State: ENABLED
XMLcross-site scripting: abc IsRegex: NOTREGEX
Location: ATTRIBUTE State: ENABLED
- Ubicación: puede especificar la ubicación de la excepción de verificación de secuencias de comandos entre sitios en su carga XML. La opción ELEMENT está seleccionada por defecto. Puede cambiarlo a ATTRIBUTE.
- Comentario: este es un campo opcional. Puede utilizar una cadena de hasta 255 caracteres para describir el propósito de esta regla de relajación.
Advertencia
Las expresiones regulares son potentes. Especialmente si no está familiarizado con las expresiones regulares en formato PCRE, compruebe las expresiones regulares que escriba. Asegúrese de que definan exactamente el nombre que desea agregar como excepción y nada más. El uso descuidado de las expresiones regulares puede tener resultados que usted no desea, como bloquear el acceso a contenido web que no pretendía bloquear o permitir un ataque que la comprobación de secuencias de comandos entre sitios en XML habría bloqueado de otro modo.
Uso de la línea de comandos para configurar la comprobación de secuencias de comandos entre sitios XML
Para configurar las secuencias de comandos multisitio XML, 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 secuencias de comandos entre sitios XML:
> set appfw profile <name> -XMLcross-site scriptingAction (([block] [log] [stats]) | [none])
Para configurar un script XML entre sitios, compruebe la regla de relajación mediante la línea de comandos
Puede agregar reglas de relajación para evitar la inspección de la inspección de ataques de scripts entre sitios en una ubicación específica. Utilice el comando vincular o desvincular para agregar o eliminar el enlace de la regla de relajación, de la siguiente manera:
> 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
Tras 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 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 interfaz gráfica de usuario para configurar la comprobación de secuencias de comandos XML Cross-Site
En la GUI, puede configurar la verificación de secuencias de comandos XML Cross-Site en el panel para el perfil asociado a su aplicación.
Para configurar o modificar las secuencias de comandos XML entre sitios, compruebe mediante la interfaz gráfica de usuario
- Vaya a Web App Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.
- 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 de configuración:
a) Si solo desea habilitar o inhabilitar las acciones de bloqueo, registroy estadísticas para la comprobación de secuencias de comandos entre sitios XML, puede seleccionar o desmarcar las casillas de verificación de la tabla, hacer clic en Aceptary, a continuación, hacer clic en Guardar y cerrar para cerrar el panel de comprobación de seguridad.
b) Puede hacer doble clic en XML Cross-Site Scriptingo seleccionar la fila y hacer clic en Configuración de accionespara mostrar las opciones de acción. Tras cambiar cualquiera de las opciones de acción, haga clic en Aceptar para guardar los cambios y volver a la tabla de 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 Verificación de seguridad.
Para configurar una regla de relajación de secuencias de comandos entre sitios XML mediante la interfaz gráfica de usuario
- Vaya a Web App Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.
- En el panel Configuración avanzada, haga clic en Reglas de relajación.
- En la tabla Reglas de relajación, haga doble clic en la entradaXML Cross-Site Scriptingo selecciónela y haga clic en Modificar.
- En el cuadro de diálogo Reglas de relajación de secuencias de comandos multisitios XML, realice las operaciones Agregar, modificar, eliminar, habilitaro inhabilitar para las reglas de relajación.
Para gestionar las reglas de relajación de las secuencias de comandos multisitios XML mediante el visualizador
Para obtener una vista consolidada de todas las reglas de relajación, puede resaltar la fila desecuencias de comandos XML entre sitiosen la tabla de 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 de sitios mediante la interfaz gráfica de usuario
Puede utilizar la interfaz gráfica de usuario para ver o personalizar la lista predeterminada de atributos o etiquetas permitidas de scripts de sitios. También puede ver o personalizar la lista predeterminada de patrones denegados de scripts de sitios.
Las listas predeterminadas se especifican en Web App Firewall > Firmas > Firmaspredeterminadas. Si no enlaza ningún objeto de firma a su perfil, el perfil utilizará la lista predeterminada de secuencias de comandos entre sitios permitidas y denegadas especificada en el objeto Firmas predeterminadas para procesar las comprobaciones de seguridad de las secuencias de comandos entre sitios. Las etiquetas, atributos y patrones, especificados en el objeto de firmas predeterminado, son de solo lectura. No puede modificarlos ni modificarlos. Si quiere modificarlos o cambiarlos, haga una copia del objeto Firmas predeterminadas para crear un objeto de firma definido por el usuario. Realice cambios en las listas de permitidos o denegados del nuevo objeto de firma definido por el usuario y utilice este objeto de firma en el perfil que procesa el tráfico para el que desea utilizar estas listas personalizadas de permitidos y denegados.
Para obtener más información sobre las firmas, consulte http://support.citrix.com/proddocs/topic/ns-security-10-map/appfw-signatures-con.html.
Para ver los patrones de scripts de sitios predeterminados:
- Vaya a Web App Firewall > Firmas, seleccione *Firmas predeterminadas yhaga clic en Modificar. A continuación, haga clic en Administrar patrones de scripts SQL/de sitios.
La tabla Administrar rutas de secuencias de comandos entre sitios muestra las tres filas siguientes relacionadas con las secuencias de comandos 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 secuencias de comandos entre sitios correspondientes (etiqueta, atributo, patrón) utilizados en la comprobación de secuencias de comandos entre sitios de Web App Firewall .
Para personalizar los elementos de secuencias de comandos 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.
- 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/de sitios para mostrar la tabla Administrar rutas de scripts SQL/de sitios.
- Seleccione la fila de secuencias de comandos entre sitios de destino.
a) Haga clic en Administrar elementospara agregar, modificar o eliminar el elemento de secuencias de comandos entre sitios correspondiente.
b) Haga clic en Eliminar para eliminar la fila seleccionada.
Advertencia
Tenga mucho cuidado al quitar o modificar cualquier elemento de secuencias de comandos entre sitios predeterminado o al eliminar la ruta de secuencias de comandos entre sitios para eliminar toda la fila. Las firmas, la comprobación de seguridad de las secuencias de comandos entre sitios en HTML y la verificación de seguridad de las secuencias de comandos entre sitios en XML se basan en estos elementos para detectar ataques y proteger sus aplicaciones. Personalizar los elementos de scripts de sitios puede hacer que su aplicación sea vulnerable a los ataques de scripts de sitios si se elimina el patrón requerido durante la edición.
Uso de la función de registro con la comprobación de secuencias de comandos entre sitios XML
Cuando la acción de registro está habilitada, las infracciones de verificación de seguridad de XML Cross-Site Scripting se registran en el registro de auditoría como infracciones de las secuencias de comandos de AppFW_XML_CrossSite . 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 pasos ns.logs de la carpeta /var/log/ para acceder a los mensajes de registro relacionados con las infracciones de las secuencias de comandos entre sitios XML:
> \*\*Shell\*\*
> \*\*tail -f /var/log/ns.log | grep APPFW_XML_cross-site scripting\*\*
<!--NeedCopy-->
Ejemplo de un mensaje de registro de infracciones de comprobación de seguridad de XML Cross-Site Scripting 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 infracciones de verificación de seguridad de 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|NetScaler|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 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 de secuencias decomandos XML entre sitiosy haga clic en Registros. Al acceder a los registros directamente desde la comprobación de secuencias de comandos multisitios XML del perfil, la GUI filtra los mensajes de registro y muestra solo los registros relacionados con estas infracciones de las comprobaciones de seguridad.
-
También puede acceder al Visor de Syslog navegando a NetScaler > Sistema > Auditoría. En la sección Mensajes de auditoría, haga clic en el enlace de mensajes de Syslog para mostrar el Visor de Syslog, que muestra todos los mensajes de registro, incluidos otros registros de infracciones de control de seguridad. Esto resulta útil para depurar cuando se pueden desencadenar varias infracciones de comprobación de seguridad durante el procesamiento de solicitudes.
-
Vaya a Web App Firewall > directivas > Auditoría. En la sección Mensajes de auditoría, haga clic en el enlace de mensajes de Syslog para mostrar el Visor de Syslog, que muestra todos los mensajes de registro, incluidos otros registros de infracciones de control de seguridad.
El visor de registros basado en XML ofrece varias opciones de filtro para seleccionar únicamente los mensajes de registro que le interesen. Para seleccionar los mensajes de registro para lacomprobación de secuencias de comandos entre sitios XML, filtre seleccionandoAPPFWen 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 selecciona la casilla de verificación de secuencias de comandos APPFW_XML_Cross-Site y hace clic en el botón Aplicar, solo aparecerán en el visor de Syslog los mensajes de registro relacionados con las infracciones de seguridad de los scripts multisitios XML.
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 sobre las infracciones de las secuencias de comandos entre sitios XML
Cuando la acción de estadísticas está habilitada, el contador de la comprobación de secuencias de comandos entre sitios XML se incrementa cuando el Web App Firewall realiza alguna acción para esta comprobación de seguridad. Las estadísticas se recopilan para Rate and Total count para Tráfico, Infracciones 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, si se solicita una página que contenga tres infracciones relacionadas con la creación de scripts entre sitios XML, el contador de estadísticas se incrementa en una, ya que la página se bloquea en cuanto 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 XML 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, use el siguiente comando:
> **stat appfw profile** <profile name>
Para mostrar las estadísticas de secuencias de comandos XML entre sitios mediante la interfaz gráfica de usuario
- Vaya a Sistema > Seguridad > Web App Firewall.
- En el panel derecho, acceda al enlace de Estadísticas.
- Utilice la barra de desplazamiento para ver las estadísticas sobre las infracciones y los registros de las secuencias de comandos XML entre sitios. La tabla de estadísticas proporciona datos en tiempo real y se actualiza cada 7 segundos.
En este artículo
- Opciones de acción
- Reglas de relajación
- Uso de la línea de comandos para configurar la comprobación de secuencias de comandos entre sitios XML
- Uso de la interfaz gráfica de usuario para configurar la comprobación de secuencias de comandos XML Cross-Site
- Uso de la función de registro con la comprobación de secuencias de comandos entre sitios XML
- Estadísticas sobre las infracciones de las secuencias de comandos entre sitios XML