¿Qué es un ataque XSS?

El Cross Site Scripting o XSS es un tipo de ciberataque por el cual se buscan vulnerabilidades en una aplicación web para introducir un script dañino y atacar su propio sistema, partiendo de un contexto fiable para el usuario. Los scripts son archivos de comandos o programas escritos en lenguajes de programación −como JavaScript− que se ejecutan en el navegador web. En su versión más inocua se ejecutan ventanas emergentes y, en el peor de los casos, son utilizados por atacantes para acceder a información sensible o al equipo del usuario.

¿Qué es la secuencia de comandos entre sitios (XSS)?

La secuencia de comandos entre sitios (también conocida como XSS) es una vulnerabilidad de seguridad web que permite a un atacante comprometer las interacciones que los usuarios tienen con una aplicación vulnerable. Permite a un atacante eludir la misma política de origen, que está diseñada para segregar diferentes sitios web entre sí. Las vulnerabilidades de secuencias de comandos entre sitios normalmente permiten que un atacante se haga pasar por un usuario víctima, lleve a cabo cualquier acción que el usuario pueda realizar y acceda a cualquiera de los datos del usuario. Si el usuario víctima tiene acceso privilegiado dentro de la aplicación, entonces el atacante podría obtener el control total sobre toda la funcionalidad y los datos de la aplicación.

¿Cómo funciona XSS?

Las secuencias de comandos entre sitios funcionan manipulando un sitio web vulnerable para que devuelva JavaScript malicioso a los usuarios. Cuando el código malicioso se ejecuta dentro del navegador de una víctima, el atacante puede comprometer completamente su interacción con la aplicación.

¿Para qué se puede utilizar XSS?

Un atacante que aprovecha una vulnerabilidad de secuencias de comandos entre sitios suele ser capaz de:

  • Hacerse pasar por el usuario víctima o hacerse pasar por él.
  • Realizar cualquier acción que el usuario pueda realizar.
  • Leer todos los datos a los que el usuario pueda acceder.
  • Capturar las credenciales de inicio de sesión del usuario.
  • Realizar desfiguración virtual del sitio web.
  • Inyectar funcionalidad troyana en el sitio web.

Ejemplos de ataques de XSS

Para aclarar qué puede significar en concreto el Cross Site Scripting para un administrador web o para un usuario, presentamos a continuación una lista con los distintos tipos de XSS.

XSS indirecto o reflejado

Cuando abrimos una URL manipulada o rellenamos un formulario adulterado se envía el script dañiño al servidor web, que es devuelto al cliente sin ser comprobado. El código malicioso no se almacena en el servidor, sino que existe de forma temporal cuando el cliente abre la página web. Las páginas webs dinámicas y las aplicaciones de correo son especialmente vulnerables a este tipo de ataque.

Ejemplo: el atacante aloja el script en un enlace preparado que reenvía, por regla general, por correo electrónico. El código dañino se libera cuando el usuario abre el enlace, y es entonces cuando se abre una pantalla de registro en su navegador, que reproduce por ejemplo, la página de su banco online. Cuando el usuario introduce sus datos de registro, el script se encarga de reenviarlos a la dirección que el atacante ha establecido previamente.

XSS directo o persistente

En este caso, los archivos maliciosos se almacenan en el servidor web y son liberados cada vez que se accede a una página desde un navegador. Con este objetivo se eligen aquellas aplicaciones web que guardan datos de usuario en su propio servidor y los transfieren sin métodos de control o codificación. Los blogs y los foros son especialmente vulnerables para este tipo de ataques.

Ejemplo: Las intervenciones de los usuarios en un foro se guardan en una base de datos, generalmente sin un control suficiente. Los atacantes aprovechan esta oportunidad y añaden su script dañino en un post aparentemente normal. Un usuario que no sospecha nada recibe el enlace al post por correo electrónico o va a parar a él por casualidad, y en el momento en que lo abre se activa el script.

XSS basado en DOM

También llamado XSS local, en este caso el daño se provoca por medio de los scripts que están en el lado del cliente. Al abrir una página infectada, el código malicioso puede aprovechar un agujero en la seguridad para instalarse en un archivo del explorador web y ser ejecutado allí sin ninguna comprobación previa. Al contrario de lo que ocurre en las dos variantes anteriores, en este caso el servidor web no está implicado, por lo que este ataque también afecta a las páginas estáticas que implementan este tipo de lenguaje de programación.

Ejemplo: Como el XSS reflejado, el Cross Site Scripting basado en DOM requiere que el usuario abra el enlace. Cuando esto sucede, un script de la página web selecciona la variable de la URL y ejecuta el código que contiene. Es así como se pueden usurpar cookies de sesión, por ejemplo.

Cómo prevenir ataques XSS

La prevención de secuencias de comandos entre sitios es trivial en algunos casos, pero puede ser mucho más difícil según la complejidad de la aplicación y las formas en que maneja los datos controlables por el usuario.

En general, es probable que la prevención eficaz de las vulnerabilidades XSS implique una combinación de las siguientes medidas:

  • Filtrar la entrada a la llegada. En el punto donde se recibe la entrada del usuario, filtre lo más estrictamente posible según lo que se espera o la entrada válida.
  • Codifica los datos en la salida. En el punto en el que los datos controlables por el usuario se envían en respuestas HTTP, codifica la salida para evitar que se interprete como contenido activo. Dependiendo del contexto de salida, esto puede requerir la aplicación de combinaciones de codificación HTML, URL, JavaScript y CSS.
  • Utiliza encabezados de respuesta adecuados. Para evitar XSS en las respuestas HTTP que no tienen la intención de contener HTML o JavaScript, puede utilizar los encabezados Content-Type y X-Content-Type-Options para asegurarte de que los navegadores interpretan las respuestas de la forma deseada.
  • Política de seguridad de contenido. Como última línea de defensa, puede utilizar la Política de seguridad de contenido (CSP) para reducir la gravedad de las vulnerabilidades XSS que aún se presenten.

Comentarios

Todos nuestros Precios son expresados en Pesos Mexicanos a los que hay que agregar el 16% de I.V.A.