Vulnerabilidad XSS (Cross Site Scripting): Qué es y cómo solucionarla

Vulnerabilidad XSS (Cross Site Scripting): Qué es y cómo solucionarla

XSS (Cross Site Scripting) es una vulnerabilidad que permite a un atacante insertar scripts o secuencias de código malicioso en el navegador web de un usuario.

Por lo tanto, el ataque se produce en el código del sitio web que se ejecuta en el navegador, y no en el servidor del sitio. 

Los ataques de tipo XSS pueden tener diversas consecuencias para los usuarios, entre ellas:

  • Recopilacion de datos personales
  • Robo de credenciales (usuarios y contraseñas)
  • Robo de cookies
  • Redireccionamiento a sitios maliciosos
  • Acceso al control del equipo de la víctima
  • Cambio de la apariencia visual del sitio

Tipo de ataques XSS (Cross Site Scripting)

1. XSS Reflejado

La secuencia de comandos reflejada entre sitios surge cuando una aplicación recibe datos maliciosos en una solicitud HTTP y los incluye dentro de la respuesta inmediata.

Ejemplo

Supongamos que un sitio web tiene una función de búsqueda (la cual no realiza ningún procesamiento de los datos) y el usuario proporciona un término en un parámetro de URL: 

La aplicación mostrará el resultado de la búsqueda:

Si el usuario visita la URL construida por el atacante, entonces el script del atacante se ejecutará en el navegador del usuario. 

En ese momento, el script podrá realizar cualquier acción y acceder a los datos a los que el usuario tiene acceso.

2. XSS Almacenado

Las secuencias de comandos almacenadas entre sitios (o XSS persistentes) surgen cuando una aplicación recibe datos de una fuente que no es de confianza y los incluye en sus respuestas HTTP posteriores.

Ejemplo

Supongamos que tenemos un sitio web en el que los usuarios pueden comentar los artículos de un blog. Estos comentarios se enviarán mediante una solicitud HTTP.

Suponiendo que la aplicación no realiza ningún otro procesamiento de los datos, un atacante podría crear una sentencia de código malicioso e insertarla (de forma encriptada) dentro de la solicitud. 

Para que la solicitud la guarde como un comentario en la base de datos.

Cualquier usuario que visite la publicación del blog ahora recibirá el script dentro de la respuesta de la aplicación:

Y la secuencia de comandos del atacante se ejecutará en el navegador del usuario.

3. XSS Basado en DOM

El XSS basado en DOM surge cuando una aplicación que tiene código JavaScript del lado del cliente procesa datos de una fuente maliciosa, generalmente escribiendo los datos en el DOM.

El atacante puede modificar el DOM utilizando código JavaScript añadiendo nuevas etiquetas, modificando o eliminando otras, cambiando sus atributos HTML, añadiendo clases, cambiando el contenido de texto, entre otras muchas acciones más, incluyendo la inserción de código malicioso.

Consejos para prevenir la vulnerabilidad XSS

  1. Utiliza antivirus y comprueba que detecta malware correctamente. 
  2. Mantén las aplicaciones y sistemas (navegadores web, antivirus, sistema operativo) actualizados. Los navegadores, por ejemplo, utilizan distintos filtros que analizan las solicitudes HTTP, el código HTML y las URLs para advertir o eliminar funciones sospechosas que se ejecutarán en el navegador.
  3. Utiliza frameworks que codifiquen el contenido para prevenir ataques XSS, como Ruby 3.0 o React JS.
  4. Filtra la entrada de datos del usuario lo más específicamente posible.
  5. Codifica los datos de salida para los usuarios (HTML, URLs, JavaScript y CSS).
  6. Aplica políticas de seguridad de contenido (CSP).
  7. Implementa un WAF (Web Application Firewall). Al igual que con las inyecciones SQL, un firewall de aplicaciones web ayuda a impedir la ejecución de ataques XSS, filtrando y monitoreando el tráfico HTTP entre una aplicación e Internet.
web application firewall

Hackmetrix Insight: Si buscas un WAF, encontramos una relación precio-calidad bastante decente con CloudflareZone Lockdown de Cloudflare.

Un pentest nunca está de más

Recuerda que una vulnerabilidad XSS no es la única que amenaza tu plataforma, por lo tanto, es recomendable hacer un ejercicio de ethical hacking (del tipo penetration testing, pruebas de intrusión o pentest) periódicamente para detectar estas vulnerabilidades y otras fallas de seguridad que pudieran estar presentes tanto en la aplicación como en las redes de tu empresa. 

En Hackmetrix contamos con pentesters calificados que simulan ataques reales, reportan las vulnerabilidades encontradas y te brindan soporte durante todo el proceso de mitigación. 

Conclusión

XSS puede que sea una vulnerabilidad muy fácil de solucionar, pero es relativamente complicado identificarla ya que requiere entender el funcionamiento de la aplicación infectada y tener ciertos conocimientos sobre programación.

Para solucionar el problema de los ataques XSS guarda este artículo como favorito para que puedas consultarlo más adelante que decidas remediarlo. 

Si necesitas una consultoría más profunda, escríbenos para asesorarte con un experto en las top 10 vulnerabilidades de OWASP.

Backed by

Hackmetrix startup chile