Pasar al contenido principal

XSS

Los ataques de Cross-Site Scripting (XSS) son un tipo de ataque de inyección, en el que se ejecutan scripts maliciosos en sitios web que, de otro modo, serían benignos y de confianza. Los ataques XSS se producen cuando un atacante utiliza una aplicación web para enviar código malicioso, generalmente en forma de script del lado del navegador, a un usuario final diferente. Los fallos que permiten que estos ataques tengan éxito están bastante extendidos y se pueden producir en cualquier función de una página web que requiera la entrada por parte de un usuario.

Un atacante puede utilizar XSS para enviar un script malicioso a un usuario desprevenido. El navegador del usuario final no tiene forma de saber que el script no es de confianza, y lo ejecutará. Como cree que el script proviene de una fuente de confianza, el script malicioso puede acceder a cualquier cookie, testigo de sesión u otra información sensible gestionada por el navegador y utilizada con ese sitio. Estos scripts pueden incluso reescribir el contenido de la página HTML.

En un principio, se identificaron dos tipos principales de XSS, el XSS almacenado y el XSS reflejado. En 2005, se definió un tercer tipo de XSS, el basado en el DOM:

El XSS almacenado (también conocido como persistente, de tipo I o Stored XSS) generalmente ocurre cuando la entrada del usuario se almacena en el servidor de destino, como en una base de datos, en un foro de mensajes, registro de visitantes, campo de comentarios, etc. Tras la introducción de datos por parte de un atacante, la víctima es capaz de recuperar los datos almacenados de la aplicación web sin que esos datos sean seguros para ser renderizados en el navegador. Con la llegada de HTML5 y otras tecnologías es posible prevenir que la carga útil del ataque se ejecute en el navegador de la víctima.

El XSS reflejado (también conocido como no persistente, de tipo II o Reflected XSS) se produce cuando la entrada del usuario es devuelta por una aplicación web en un mensaje de error, un resultado de búsqueda o cualquier otra respuesta que incluya parte o la totalidad de la entrada proporcionada por el usuario como parte de la solicitud, sin que los datos sean seguros para el usuario. A diferencia del XSS almacenado, no es necesario que los datos de la petición estén almacenados en el servidor.

XSS basado en el DOM (también conocido como Tipo-0 o DOM Based XSS) consiste en una forma de XSS en la que el todo el flujo de datos contaminados tiene lugar en el navegador de la víctima. Por ejemplo, el origen podría ser la URL de la página o un elemento HTML, y el disparador una llamada a un método sensible que provoca la ejecución maliciosa.