Es sabido que muchos cibercriminales aprovechan vulnerabilidades en diferentes servidores, en cualquier lugar del planeta, con la finalidad de alojar sus campañas de phishing o malware. Sin embargo, muchas veces se explotan vulnerabilidades ya conocidas, que se encuentran presentes desde hace algunos años en el top 10 de OWASP. La vulnerabilidad conocida como Cross Site Scripting (XSS) o ejecución de comandos en sitios cruzados es una de las más habituales, por lo que en esta entrada nos centraremos en cómo funciona, cómo afecta a sus víctimas y la forma de prevenirla.

¿Cómo funciona un XSS?

En primer lugar es importante tener en cuenta que con esta vulnerabilidad, los atacantes explotan la confianza que un usuario tiene en un sitio en particular, y esto nos da una dimensión del impacto que puede tener.

Este tipo de vulnerabilidad puede ser explotada de dos maneras: de forma reflejada y de forma almacenada. A continuación, haré una breve explicación de cada una.

  • Reflejada

Consiste en modificar valores que la aplicación web usa para pasar variables entre dos páginas. Un clásico ejemplo de esto es hacer que a través de un buscador se ejecute un mensaje de alerta en JavaScript. Con XSS reflejado, el atacante podría robar las cookies para luego robar la identidad, pero para esto, debe lograr que su víctima ejecute un determinado comando dentro de su dirección web.

Para esto, los cibercriminales suelen enviar correos engañosos para que sus víctimas hagan clic en un enlace disfrazado y así se produzca el robo.

Consiste en insertar código HTML (programación web) peligroso en sitios que lo permitan; de esta forma quedará visible a los usuarios que ingresen en el sitio modificado.

¿Qué significa que un sitio web es vulnerable a XSS?

Si un sitio web contiene esta vulnerabilidad, un atacante puede realizar diversos tipos de ataques basándose en la confianza que inspira la plataforma en el usuario. Desde redirigir a otro sitio para robar información mediante phishing, hasta hacer que se descargue alguna amenaza y se ejecute en el sistema.

En última instancia, un Cross-site Scripting puede volver peligroso para sus usuarios a un sitio legítimo.

¿Por qué o como se produce esta vulnerabilidad?

Normalmente se debe a la falta o poca frecuencia de los controles necesarios en el sitio, pensados para evitar la ejecución de comandos desde la misma página web. A raíz de esto, un ciberdelincuente puede lograr ejecutar scripts (pequeños programas) en lenguajes como Java Script o HTML, entre otros.

Los scripts son una serie de instrucciones a ejecutar, que pueden estar programados en Java, HTML o cualquier otro lenguaje siempre y cuando el entorno donde se vaya a ejecutar sea compatible. Si bien el uso de scripts ayuda a automatizar muchas tareas a los administradores, también son utilizados por atacantes para automatizar sus ataques, haciendo que estos pequeños programas trabajen por sí solos robando información cuando la víctima accede al sitio vulnerado.

XSS en la práctica

Para comprender cómo funciona, lo trasladaremos a una situación que puede ser cotidiana a modo de ejemplo. Suponemos el siguiente escenario:

  • Por un lado, el servidor “A” que pertenece a “mibanco.com”, el cual es vulnerable a XSS
  • Por el otro lado, un atacante que consigue inyectar código malicioso en “mibanco.com” mediante la explotación de XSS. El código que inyecta hace que, una vez que el usuario accede, sea enviado a otro sitio web exactamente igual a “mibanco.com”
  • El usuario víctima accede desde su navegador a “mibanco.com”; sin embargo, al ejecutar el código malicioso inyectado por el atacante (sin saberlo), estará registrando sus datos en sitio clon del original. Por supuesto que esto compromete por completo su información financiera

Este solo es un ejemplo de una de las consecuencias de esta falta de controles, aunque también podría pasar que el sitio descargue malware o algún tipo de exploit que se aproveche de alguna vulnerabilidad en el sistema de su víctima, para lograr obtener acceso a su equipo personal.

¿Cómo puedes evitar ser víctima de XSS?

En primer lugar es fundamental, como siempre mencionamos, que cuentes con una solución de seguridad instalada y actualizada. Esto es importante ya que ante la ejecución de alguna aplicación maliciosa sin tu consentimiento, tal como malware o exploits, automáticamente será bloqueada.

Además, si se trata de una redirección a algún sitio de phishing, se cuenta con la protección del antivirus y el bloqueo proactivo por parte de los navegadores.

En segundo lugar, es muy importante que estés siempre atento a dónde ingresas: siempre es bueno mirar la dirección URL a la que se está accediendo. Ya hemos visto ejemplos de esto, como por ejemplo las redirecciones de Facebook, que pueden ser aprovechadas por atacantes, si no se tienen en cuenta algunos consejos, como ya hemos visto anteriormente, aquí dejamos 7 consejos para todos aquellos que les guste explorar Internet.

Por otro lado, existen complementos para los navegadores que se encarga de bloquear estos scripts en sitios web. Uno de ellos es NoScript, que permite realizar configuraciones personalizadas (y es gratuito).

Finalmente, nunca es una mala opción utilizar navegadores alternativos, quizás no tan populares, como Opera, Comodo o Chromium, entre otros. De esta forma, si un atacante lanza un ataque que intenta explotar alguna vulnerabilidad en uno de los navegadores más conocidos a través de un exploit, al no cumplirse las condiciones para la explotación exitosa de la vulnerabilidad, esto denegará el acceso al sistema.

A veces algunas de estas vulnerabilidades exceden a los usuarios, ya que puede tratarse de un problema que no se resuelve instalando actualizaciones en el equipo. Por otra parte, para resolver este tipo de cuestiones, es necesario que el administrador del sitio agregue los controles necesarios, para que nada pueda ser modificado por un tercero.