¿Qué es Cross-site Scripting (XSS)?

Cross-site Scripting (XSS) es un ataque de inyección de código del lado del cliente. El atacante tiene como objetivo ejecutar scripts maliciosos en un navegador web de la víctima al incluir código malicioso en una página web o aplicación web legítima. El ataque real ocurre cuando la víctima visita la página web o la aplicación web que ejecuta el código malicioso. La página web o la aplicación web se convierte en un vehículo para entregar el script malicioso al navegador del usuario. Los vehículos vulnerables que se usan comúnmente para los ataques de cross-site scripting son foros, tableros de mensajes y páginas web que permiten comentarios.

Una página web o aplicación web es vulnerable a XSS si utiliza una entrada de usuario no higiénica en la salida que genera. Esta entrada del usuario debe ser analizada por el navegador de la víctima. Los ataques XSS son posibles en VBScript, ActiveX, Flash e incluso CSS. Sin embargo, son más comunes en JavaScript, principalmente porque JavaScript es fundamental para la mayoría de las experiencias de navegación.

¿Qué puede hacer el atacante con JavaScript?
Las vulnerabilidades XSS se perciben como menos peligrosas que, por ejemplo, las vulnerabilidades de inyección SQL. Las consecuencias de la capacidad de ejecutar JavaScript en una página web pueden no parecer terribles al principio. La mayoría de los navegadores web ejecutan JavaScript en un entorno estrictamente controlado. JavaScript tiene acceso limitado al sistema operativo y a los archivos del usuario.

Sin embargo, JavaScript puede ser peligroso si se usa incorrectamente como parte del contenido malicioso:

  • JavaScript malicioso tiene acceso a todos los objetos a los que tiene acceso el resto de la página web. Esto incluye el acceso a las cookies del usuario. Las cookies se usan a menudo para almacenar tokens de sesión. Si un atacante puede obtener la cookie de sesión de un usuario, puede hacerse pasar por ese usuario, realizar acciones en nombre del usuario y obtener acceso a los datos confidenciales del usuario.
  • JavaScript puede leer el DOM del navegador y realizar modificaciones arbitrarias en él. Afortunadamente, esto solo es posible dentro de la página donde se ejecuta JavaScript.
  • JavaScript puede usar el objeto XMLHttpRequest para enviar solicitudes HTTP con contenido arbitrario a destinos arbitrarios.
  • JavaScript en los navegadores modernos puede usar API HTML5. Por ejemplo, puede obtener acceso a la geolocalización del usuario, la cámara web, el micrófono e incluso a archivos específicos del sistema de archivos del usuario. La mayoría de estas API requieren la aceptación del usuario, pero el atacante puede usar la ingeniería social para sortear esa limitación.

Lo anterior, en combinación con la ingeniería social, permite a los delincuentes realizar ataques avanzados que incluyen el robo de cookies, la siembra de troyanos, Keylogging, el phishing y el robo de identidad. Las vulnerabilidades XSS proporcionan el terreno perfecto para escalar los ataques a los más graves. Cross-site scripting también se pueden usar junto con otros tipos de ataques, por ejemplo, falsificación de solicitudes entre sitios (CSRF).

Contamos con herramientas y soluciones que protegen tus aplicaciones y equipos de la inyección de código XSS o SQL, contáctanos ahora.

Cyberseguridad México ©