¿Qué es el «cross-site scripting (XSS)»?

Imagina que, de repente, no puedes iniciar sesión en tu tienda online favorita. Además, alguien empieza a poner comentarios extraños en tu nombre y hace algunas compras. ¿Recuerdas aquella vez que hiciste clic en un enlace en la sección de comentarios de un sitio web para ver esa chaqueta que alguien te recomendó? Parece que estás ante un caso de «cross-site scripting (XSS)». Consulta a continuación por qué es peligroso y por qué es tan fácil convertirse en una víctima.

¿Qué es el «cross-site scripting (XSS)»?

Un ataque «cross-site scripting» (o XSS) ocurre cuando un hacker introduce código malicioso en un sitio web o aplicación de confianza. Se aprovecha de las debilidades de HTML, JavaScript o cualquier otro lenguaje compatible con un navegador. Dicho código opera en el lado del cliente en lugar del lado del servidor, por lo que no daña directamente el sitio web, sino que afecta a los usuarios. Dependiendo del tipo de XSS, los usuarios pueden activar el código malicioso haciendo clic en un enlace o visitando un sitio web comprometido.

Una vez activado, un ataque de «cross-site scripting» puede filtrar una gran cantidad de datos de los usuarios a los hackers, introducir un troyano, realizar redirecciones maliciosas, robar las credenciales de los usuarios y hacerse pasar por ellos, etc.

Tipos de «cross-site scripting»

XSS indirecto

El XSS indirecto ocurre cuando un usuario hace clic en un enlace malicioso a un sitio web vulnerable. A continuación, la página web refleja el script en el navegador de la víctima, que lo ejecuta. Un ciberdelincuente puede «secuestrar» las cookies de sesión del usuario y robar sus datos de autorización.

Es posible que algunos sitios web no limpien correctamente las solicitudes entrantes, lo que permite a los ciberdelincuentes introducir secuencias de «cross-site scripting» en un enlace. También es posible que sus propietarios no sean conscientes de que alguien utiliza su sitio para tales fines.

Por ejemplo, María tiene una tienda online, que Laura utiliza mucho. Laura inicia sesión en el sitio introduciendo su nombre de usuario y contraseña, que se almacenan en una cookie de autorización. Tomás es el malo. Se entera de que el sitio web de María contiene una vulnerabilidad, crea una URL maliciosa y se la envía a Laura en un correo electrónico disfrazado de oferta atractiva. Laura hace clic en el enlace y ejecuta el script. El script infecta el navegador de Laura y envía todos los detalles de inicio de sesión asociados con la cookie de inicio de sesión del sitio web a Tomás. Tomás puede iniciar sesión en la tienda online como Alicia, robar su información de facturación y cambiar las contraseñas.

XSS almacenado

En el XSS almacenado, los hackers no solo introducen secuencias de comandos maliciosas en un solo enlace, sino que lo plantan en el servidor de un sitio web. Ocultan el script en una sección específica del sitio, donde puede acechar por un tiempo indefinido (por ejemplo, la sección de comentarios). De esta forma, cada vez que los usuarios acceden a esta sección, los hackers pueden obtener todas sus credenciales asociadas con esa sesión. Si un ataque indirecto recuerda a la pesca con caña, una operación XSS almacenada es más como una red, ya que afecta a más usuarios.

Por ejemplo, Alicia descubre una vulnerabilidad en el sitio web de Juan e inyecta una etiqueta HTML maliciosa en su sección de comentarios, que se queda allí. Ahora, cuando los visitantes van a la sección de comentarios, la etiqueta activa el script del hacker alojado en un sitio web diferente. Le envía todos los datos de sus cookies de autorización. A continuación, puede iniciar sesión en el sitio y hacerse pasar por cualquiera de los usuarios comprometidos.

XSS basado en DOM

Cuando cargas un sitio web, tu navegador crea un modelo de objeto de documento (o DOM, por sus siglas en inglés) de la página. Es como un mediador entre la página HTML y JavaScript, lo que hace que la página sea dinámica y fácil de modificar. En el caso de XSS basado en Dom, el código JavaScript comprometido escribe los datos en el DOM. Al igual que en el XSS independiente, un usuario lo inicia haciendo clic en un enlace comprometido. En este caso, los hackers ocultan el código malicioso a mayor profundidad en el código, por lo que no se puede rastrear simplemente verificando la URL. Tendrías que comprobar el código del sitio web para identificarlo.

Self-XSS

El ataque self-XSS no se basa en un sitio web vulnerable, sino que engaña a los usuarios para que introduzcan un script malicioso en sus propios navegadores. Por lo general, los ciberdelincuentes emplean tácticas ingeniería social para lograrlo. Por ejemplo, pueden persuadir a un usuario para que introduzca código en su navegador prometiéndole que le permitirá acceder a otra cuenta con beneficios adicionales. Sin embargo, eso permite que el hacker robe la cuenta de la víctima.

Prevención del «cross-site scripting»

Los ataques XSS están bien ocultos en el nivel de código, por lo que es posible que no notes uno durante mucho tiempo. Lo peor es que los propietarios de sitios web vulnerables también identifican con frecuencia los ataques XSS demasiado tarde. Sin embargo, como siempre, existen algunas medidas para prevenirlos:

  • Utiliza siempre el software de seguridad más actualizado y fiable, que podría bloquear de forma automática el acceso a sitios web maliciosos.

  • Actualiza constantemente tu navegador para asegurarte de que estás utilizando la última versión. Asegúrate de que tu navegador tiene funciones de seguridad anti-XSS.

  • No abras ningún enlace sospechoso aunque parezca legítimo a primera vista. Revisa siempre la URL para ver si hay algo que no acaba de encajar.

  • Ponte en contacto con las personas que dirigen un sitio web si notas algo sospechoso (por ejemplo, no puedes iniciar sesión con tus credenciales habituales, ves algunas compras que no has hecho, etc.).

Suscríbete a las noticias de NordPass

Recibe las últimas noticias y consejos de NordPass directamente en tu bandeja de entrada.