¿Que es el Cross-Site Scripting o XSS?

Publicado el en la categoría General, Seguridad

xssUna de las vulnerabilidades más comunes en las aplicaciones web como WordPress, Joomla!, etc, es el Cross-Site Scripting o XSS, de hecho si nos fijamos, en cada parche que sacan aprovechan para corregir más una vulnerabilidad de este tipo.

Pero, ¿en qué consiste exactamente el Cross-Site Scripting? Una vulnerabilidad XSS básicamente permite a un atacante inyectar código malicioso que es ejecutado en el lado del cliente cuando otros usuarios acceden a la web vulnerada.

Dicho código puede estar diseñado para robar información privada, manipular o robar cookies, crear peticiones web ilegítimas de forma que parece que provienen del usuario real, descargar código malicioso para atacar el propio ordenador del usuario, etcétera.

Para realizar un ataque de este tipo no es necesario romper la seguridad del servidor, ni robar contraseñas de acceso, o modificar archivos de la web, y por ello es uno de los ataques más efectivos y por tanto comunes.

Hoy en día, la mayoría de páginas webs no son contenido estático, si no que se nutren de información de diferentes fuentes, información que puede ser peligrosa si no es tratada adecuadamente. Por ejemplo, basta con que falle la seguridad de la sección de comentarios de una web para que un hacker inyecte código malicioso y este se ejecute en cada visitante que vea los comentarios. Este código inyectado, normalmente javascript, tiene acceso al parámetro document.cookie, el cual contiene la información de las cookies del visitante, y enviarla a un servidor externo donde el atacante obtiene la cookie y puede hacerse pasar por la víctima. Este tipo de ataque XSS es de tipo “permanente” o directo, ya que permanece en la web hasta que es borrado por un administrador.

El otro tipo de ataque es el “reflejado” o indirecto, consiste en modificar valores en la URL, cookie o cabeceras HTTP donde se inyecta el código malicioso, por ejemplo si tenemos un buscador en nuestra web, una dirección de búsqueda típica podría ser algo así:

http://www.ejemplo.com/buscar.php?palabra=evitar%20ataques

Si no tenemos una seguridad adecuada, un atacante puede sustituir el valor de palabra por un código malicioso, enviar dicho enlace a alguien y al abrirlo el código es ejecutado.

Para prevenir que los ataques XSS funcionen en nuestra web, siempre hay que filtrar y validar tanto la información que puede enviar un usuario hacia la web y que es guardada en nuestra base de datos para desmontar el ataque antes de que sea guardada, como también hay que filtrar la información que nuestra página muestra cuya fuente es externa. Dicho filtro, básicamente, lo que hace es que la información no sea en ningún caso interpretada como código, si no simplemente como texto. Debemos no confiar nunca en la información que entra hacia nuestra web, y también no confiar en la información dinámica que nuestra web muestra a nuestros visitantes.

Podemos obtener más información sobre estas técnicas en el siguiente enlace:
https://es.wikipedia.org/wiki/Cross-site_scripting

Facebooktwittergoogle_plus