Qué son los ataques XSS y cómo prevenirlos

 



¿Qué es XSS?

Cross-site scripting (XSS) es una táctica en la que un atacante inyecta código malicioso a través de uno o más scripts web en un sitio web o aplicación web legítimos. Cuando un usuario carga el sitio web o ejecuta la aplicación web, estos scripts se ejecutan en el navegador del usuario.

¿Cuáles son los tipos de ataques XSS?

Los dos tipos más destacados de ataques XSS son el XSS reflejado (no persistente) y el XSS almacenado (persistente).

XSS reflejado (no persistente) Los ataques XSS reflejados pueden ocurrir cuando un sitio web legítimo no puede validar o sanear la entrada del usuario. Estos ataques suelen empezar con ingeniería social, en la que el atacante envía correos electrónicos de phishing o deja mensajes en foros en línea con un enlace que incita a los usuarios a hacer clic en este. Normalmente, el enlace incluye la URL de un sitio web legítimo junto con un código malicioso. Cuando un usuario hace clic en el enlace, su navegador envía una solicitud al sitio web legítimo, que refleja el código inyectado de vuelta al navegador del usuario. Dado que el sitio web no sanea adecuadamente la entrada, el script malicioso se ejecuta en el navegador del usuario.

XSS almacenado (persistente)

Los ataques XSS almacenados son más graves que los ataques XSS reflejados. Con el XSS almacenado, un script malicioso se almacena de forma permanente en el servidor de destino.

Los atacantes suelen llevar a cabo esta forma de XSS incorporando un script malicioso dentro de un campo de formulario, como un cuadro de comentarios, un perfil de usuario o cualquier campo de entrada que acepta y almacena contenidos del usuario.

 Una vez que se envía la publicación, se inyecta en la aplicación web y se guarda en la base de datos de la aplicación web. Cuando otros usuarios cargan la página afectada, el script almacenado se ejecuta en sus navegadores. 

¿Cómo pueden los usuarios prevenir los ataques XSS?

1.Identificar correos electrónicos y mensajes sospechosos Dado que muchos ataques XSS comienzan con estafas de phishing u otras tácticas de ingeniería social, los usuarios deben aprender a identificar correos electrónicos y mensajes sospechosos. Si notifican a los equipos informáticos o de seguridad adecuados, los usuarios pueden ayudar a detener los ataques XSS.

2.Examinar los enlaces Si los usuarios ven un enlace en un foro en línea o en una publicación social de alguien que no conocen o en el que no confían, deben pensarlo dos veces antes de hacer clic en el mismo. Muchos enlaces que desencadenan ataques XSS parecen legítimos porque contienen URL legítimas. Sin embargo, los usuarios deben examinar el enlace completo, incluido todo lo que aparece después del .com, .org, .gov u otro sufijo. El texto inesperado después de la dirección de la página puede ser código malicioso.

¿Cómo pueden los desarrolladores prevenir los ataques XSS?

1.Validar entradas

Los desarrolladores pueden implementar reglas que impidan que los usuarios publiquen datos en una página o en un formulario a menos que cumplan ciertos criterios.

Los desarrolladores también pueden evitar que los usuarios utilicen HTML en comentarios, publicaciones y entradas de formularios. El contenido HTML puede ser un medio para publicar scripts maliciosos u ocultar enlaces a URL que incluyan código malicioso.

Si las organizaciones quieren permitir que los usuarios publiquen contenido enriquecido, como texto con formato o imágenes, podrían incorporar Markdown (un lenguaje de marcado ligero) o habilitar el formato de texto enriquecido dentro de un editor "lo que ves es lo que obtienes" (WYSIWYG).

Saneamiento de datos Los desarrolladores pueden ayudar a prevenir los daños de los ataques XSS implementando un proceso para examinar los datos después de que se hayan publicado en el servidor web, pero antes de que se muestren a otro usuario.

La codificación de salida y el "escapado" siguen un enfoque similar. La idea es transformar los scripts maliciosos u otro código que se encuentre en la entrada del usuario en texto normal antes de que se escriba algo en una página. 

La codificación de salida convierte el código a un formato diferente; el escape añade caracteres especiales al código (como barras invertidas o comillas). Mientras que el saneamiento filtra el código, la codificación de salida y el escape preservan el código y lo hacen inofensivo.

Revisa y prueba el código Los desarrolladores deben integrar la seguridad en todo el desarrollo de aplicaciones web. Por ejemplo, deben realizar revisiones de código, centrándose especialmente en las áreas en las que se aceptan y muestran las entradas de los usuarios. También deben modelar y probar amenazas para identificar vulnerabilidades antes de que la aplicación se implemente.

¿Cómo pueden los equipos de seguridad prevenir y responder a los ataques XSS?

Garantizar las configuraciones de seguridad adecuadas del servidor web y de la aplicación Implementar una política de seguridad de contenido: los desarrolladores y los equipos de seguridad deben trabajar juntos para definir políticas de seguridad de contenido (CSP) sólidas para el sitio web y la aplicación web, e implementarlas en los servidores web. Una CSP es una capa adicional de seguridad que puede detectar y mitigar ciertos tipos de ataques.

Cookies seguras: los equipos de seguridad pueden establecer reglas especiales sobre cómo los servidores web manejan las cookies para reducir la probabilidad de robo de cookies.


Implementar un firewall de aplicación web Un firewall de aplicación web (WAF, funciona como un proxy inverso situado en un servidor delante de aplicaciones web, protege a esas aplicaciones supervisando y filtrando el tráfico HTTP entre las aplicaciones e Internet.

Centrarse en la detección y respuesta al phishing Además de capacitar a los usuarios para reconocer mensajes sospechosos, los equipos de seguridad pueden bloquear correos no deseados, usar aislamiento de navegador, implementar puertas de enlace web seguras (SWG) y herramientas que detecten y bloqueen intentos de phishing en tiempo real.

Ejecutar pruebas de seguridad en aplicaciones Los equipos de seguridad deben probar las vulnerabilidades en los entornos de producción. Los equipos pueden ejecutar pruebas de penetración manuales o utilizar escáneres XSS automatizados.

Desarrollar un plan de respuesta a incidentes Tener un plan de respuesta a incidentes es esencial para una recuperación rápida. Tal plan debe incluir estrategias para supervisar las actividades de las aplicaciones web y tomar medidas cuando se produzcan eventos sospechosos. A continuación, los equipos deben analizar las causas fundamentales e identificar los métodos de ataque. Cuando termine el ataque, deben aplicar las lecciones aprendidas para aumentar las capacidades de seguridad, actualizar las políticas y revisar las vulnerabilidades en las aplicaciones web.

Artículo traducido y adaptado de Cloudflare.