¿Sabes qué es el Cross-site Scripting (XSS)? Son fallas de seguridad web. Estas con resultado de que ciberdelincuentes ejecuten Cross-site Scripting maliciosas en sitios web que antes se sentían legítimos y confiables.
El uso de ataques XSS suele ser parte de un ciberataque más grande y avanzado.
Los ataques XSS comprometen las interacciones de los usuarios con aplicaciones vulnerables. Se transmiten mediante el envío de código malicioso a través de páginas web. Estos ataques suelen ocurrir ante fallas comunes en una aplicación web. A partir de ello, un mal actor tiene acceso a todos los datos y la capacidad de hacerse cargo de la identidad de un usuario.
Un atacante puede obtener el control total de las aplicaciones con un acceso privilegiado.
Cuando un script malicioso explota una vulnerabilidad en una aplicación, el navegador del usuario no puede detectar que el script proviene de una fuente poco confiablea.
El atacante puede acceder a cookies, tokens de sesión y demás información confidencial recopilada por el navegador, o incluso reescribir el código HTML.
Los atacantes usan sitios web o aplicaciones para enviar scripts a los navegadores de los usuarios. Un objetivo común para los ataques XSS es cualquier sitio web que permita comentarios de los usuarios, como un tablero de mensajes o un foro.
Un sitio web devuelve un código JavaScript malicioso cuando se explota una vulnerabilidad. Un atacante puede comprometer la interacción de la víctima con el sitio mediante por medio de un código malicioso dentro del navegador.
Se puede lanzar un ataque XSS contra cualquier página web o aplicación web que permita la entrada del usuario sin desinfectar. Múltiples lenguajes de Cross-site Scripting y marcos de software son susceptibles a los ataques XSS:
Hay dos etapas en un ataque XSS. Primero inyectan código malicioso en el sitio web de la víctima (carga útil). Pero el sitio web de destino debe permitir la entrada directa del usuario en sus páginas para que esto funcione.
Cuando un usuario visita el sitio de un cliente, el atacante inyecta el código malicioso. que luce como código fuente. Luego, se visita el sitio inyectado con la carga útil.
Las técnicas de ingeniería social y los ataques de phishing son métodos comunes que utilizan los atacantes para enviar a las víctimas a sitios web maliciosos.
Muchos navegadores web utilizan JavaScript, que generalmente tiene acceso limitado a los archivos y sistemas operativos del usuario. Así, se percibe que las vulnerabilidades XSS no son tan peligrosas como la inyección SQL, con capacidad de destruir bases de datos enteras.
Sin embargo, existe el modo de que los atacantes exploten JavaScript dentro del contenido malicioso para causar efectos peligrosos:
Los piratas informáticos aprovechan vulnerabilidades web mediante varios tipos de ataques XSS.
La forma más común y simple de ataque XSS, también conocido como XSS no persistente.
Aquí, es necesario que los piratas informáticos envíen su carga útil como parte de una solicitud a un servidor web y luego se incluye en la respuesta HTTP. Los atacantes utilizan enlaces maliciosos y correos electrónicos de phishing para atraer a las víctimas y realizar solicitudes a los servidores.
Como un ataque no persistente, el atacante envía XSS reflejado directamente a las víctimas, a través de redes sociales o correo electrónico.
El método de ataque XSS más dañino es el XSS almacenado. Se inyecta una carga útil en la aplicación de destino utilizando este enfoque. Sin validación de entrada, la aplicación podría almacenar código malicioso de forma permanente en una base de datos.
Así, un atacante inserta scripts maliciosos en los campos de entrada del usuario, como secciones de comentarios en blogs y foros.
De la misma manera que aparecería un comentario legítimo en el navegador del usuario, la carga útil del atacante se envía a su navegador cuando abra la página infectada. Cuando una víctima ve la página en su navegador, sin darse cuenta, ejecuta el script malicioso.
Los ataques XSS basados en DOM son formas más avanzadas de ataques XSS. Sólo son posibles cuando la aplicación web escribe los datos del usuario en el DOM. La aplicación lee estos datos y los envía al navegador del usuario. A menos que los datos se manejen correctamente, el atacante puede inyectar su carga útil.
Cuando se leen datos del DOM, se ejecuta la carga útil.
Por lo general, es difícil detectar estos ataques XSS a través de firewalls o registros del servidor, ya que son del lado del cliente y no envían la carga útil al servidor. Estos objetos incluyen localizadores uniformes de recursos (URL) o direcciones web, así como sus anclas y referentes.
Las vulnerabilidades XSS son difíciles de encontrar. La entrada del usuario, los marcos de programación y los lenguajes de secuencias de comandos pueden afectar la forma en que explotan una vulnerabilidad XSS.
Un escáner de vulnerabilidades web puede detectar la mayoría de las vulnerabilidades XSS.
Los desarrolladores pueden introducir vulnerabilidades debidas a XSS en cualquier momento o al agregar nuevos módulos, bibliotecas o software.
Las anomalías, las actividades inusuales o las vulnerabilidades potenciales deben analizarse periódicamente en busca de aplicaciones web.
Los sitios web pueden mantenerse seguros para los usuarios siguiendo algunos principios generales:
Los sitios web y las aplicaciones web a menudo se ven comprometidos por secuencias de comandos entre sitios (XSS). Se inyectan scripts maliciosos en sitios web legítimos, y comprometen las interacciones de los usuarios con ellos.
El atacante puede explotar un sitio web para enviar código malicioso a otros visitantes si la aplicación web no valida de manera efectiva la entrada del usuario antes de usarla en la salida para futuros usuarios. Las vulnerabilidades XSS permiten a los atacantes tomar el control de la máquina de un usuario, acceder a sus datos y robar sus identidades.
Cuando se ingresan datos en una aplicación web desde una fuente que no es de confianza, como una solicitud web, se lo denomina ataque de Cross-site Scripting. Una vez que se recopilan los datos, se incluyen en el contenido que se envía a un usuario sin analizarlos en busca de contenido malicioso.
En los ataques XSS, se transmiten datos privados, las víctimas son enviadas a páginas web maliciosas y se atacan sus computadoras.
Un escáner de vulnerabilidad web es la forma más efectiva de descubrir XSS. Se puede desencadenar un ataque XSS al escanear y rastrear sitios en busca de vulnerabilidades.
Es necesario que los usuarios sean conscientes de los riesgos de ciberseguridad a los que se enfrentan, las vulnerabilidades comunes que buscan los ciberdelincuentes y las tácticas que utilizan los hackers para atacarlas.
Todas las entradas de los usuarios deben tratarse como si provinieran de una fuente no confiable para cualquier organización que ejecute sitios web. Las políticas de seguridad de contenido, los desinfectantes HTML, las banderas HttpOnly para cookies y las técnicas de escape y codificación son vitales para mitigar las consecuencias de las vulnerabilidades XSS.
XSS se puede prevenir si reconoces tus vulnerabilidades, sigues las mejores prácticas, utilizas las herramientas de seguridad adecuadas y aplicas parches al software y al código con regularidad.
Sigue leyendo en Web Geeks sobre seguridad y desarrollo web: