¿Cómo puede una política de seguridad de contenido prevenir XSS y otras vulnerabilidades?
Luke Watts
9 de febrero de 2020
0 minutos de lecturaMantener el código seguro en la era del ciberdelito no es tarea fácil, y muchas tácticas de hace años siguen siendo tan eficaces hoy como hace 20 años. En cuanto al hacking web, los navegadores modernos han avanzado mucho en seguridad. Medidas como una política de seguridad de contenido pueden prevenir muchos de los trucos más antiguos que siguen siendo sorprendentemente comunes hoy en día.
Los ataques de inyección existen desde los primeros días de Internet y siguen siendo un problema en 2020. Aquí analizamos más de cerca la infame vulnerabilidad XSS y cómo implementar una política de seguridad de contenido sólida puede contribuir mucho a evitar que un sitio se convierta en un vector para código malicioso.
¿Qué es una vulnerabilidad XSS?
El cross-site scripting (XSS) es un ataque que aprovecha una vulnerabilidad común en las aplicaciones web. En este ataque, un hacker usa la aplicación web para transmitir malware a otro usuario mediante código que se «inyecta» en el sitio web. Ese malware puede realizar muchas acciones distintas, pero la más común es robar las cookies de otros usuarios.
El robo de cookies permite que los hackers se hagan pasar por sus víctimas cuando acceden a un sitio. Para robarlas, se inserta código JavaScript en el sitio a través de un formulario capaz de leer HTML, como una lista de artículos, un comentario web o una barra de búsqueda. Cualquier persona que acceda al enlace del comentario, la lista o el resultado de búsqueda que tenga el código malicioso integrado recibirá automáticamente el malware en su computadora.
Luego, el malware extrae las cookies de la sesión del usuario y las envía al hacker. El hacker puede cargar esas cookies en su navegador. Una vez en el sitio objetivo, el sitio autentica al hacker como si fuera su víctima. A partir de ahí, solo tiene que encontrar la información de facturación del usuario o cambiar la contraseña de su cuenta.
XSS existe desde los primeros días de HTML. Se ha usado contra el correo electrónico, los sitios de comercio electrónico, la banca en línea y los sitios de subastas. El problema llegó a ser tan generalizado que incluso Facebook, Twitter y YouTube estuvieron entre los sitios afectados. Sin embargo, pese a los importantes avances en seguridad, sigue siendo un problema. Se estima que el 84 por ciento de todos los sitios web seguían siendo vulnerables a XSS mediante jQuery en 2019.
Cómo usar una política de seguridad de contenido para protegerse contra XSS
Una política de seguridad de contenido (CSP) es una capa de seguridad diseñada específicamente para detectar y mitigar ataques de inyección, incluidos los que se realizan mediante XSS. Dificulta considerablemente que un hacker inyecte código malicioso para sustraer datos o cookies de los usuarios legítimos de un sitio.
Con una CSP, un desarrollador:
Especifica los recursos permitidos y sus orígenes mediante una lista segura: En otras palabras, se permiten los scripts y el código necesarios para ejecutar la aplicación web, siempre que provengan de orígenes específicos. Todo lo demás se bloquea.
Define la directiva de CSP: De forma predeterminada, esta política usa default-src, pero se puede cambiar. Hay varias directivas para controlar elementos específicos de la CSP según sea necesario.
Determina si se permiten los scripts en línea o eval(): De forma predeterminada, un encabezado CSP bloquea tanto los scripts en línea como la función eval() por considerarlos maliciosos.
Determina si se permiten los atributos de estilo en HTML: Como se puede explotar CSS, la configuración predeterminada de CSP no permite bloques ni el atributo dentro de HTML.
Permite informar al servidor sobre las infracciones de la política: Esto ayuda a dar seguimiento a los casos de uso indebido.
Por lo general, una CSP se implementa en el servidor, y el proceso puede variar considerablemente. Sin embargo, si un proveedor de servicios no permite controlar la configuración del servidor, es posible habilitar la CSP en el encabezado del sitio mediante etiquetas meta.
Además, un desarrollador puede analizar y probar su sitio web para detectar el uso de encabezados de seguridad HTTP y determinar su estado actual, o usar CSP Evaluator como herramienta para reforzar una configuración de CSP.
¿Por qué usar una política de seguridad de contenido?
Usar una CSP es una buena idea para cualquier sitio web que incluya aplicaciones web complejas, funciones de inicio de sesión y cookies de usuario.
1. XSS es omnipresente y dañino
XSS aprovecha la forma en que están diseñados los navegadores, en particular el hecho de que no pueden distinguir por sí solos entre el código legítimo y el código inyectado. En la práctica, es una puerta trasera para acceder a los datos de los usuarios y otra información confidencial.
2. Brinda protección contra vulnerabilidades XSS difíciles de detectar
Cualquier aplicación web que dependa de cookies para ofrecer funciones de inicio de sesión puede ser vulnerable a XSS, aunque esté bien diseñada en otros aspectos. Como los hackers son persistentes, es posible que una base de código aparentemente segura aún tenga otras vulnerabilidades que los desarrolladores no detecten.
3. Una CSP complementa otras prácticas recomendadas de seguridad
La CSP ayuda a aplicar las prácticas recomendadas de seguridad al restringir muchas acciones y reducir la lista de orígenes. Por eso, funciona mejor en combinación con otras prácticas recomendadas de seguridad, como los sistemas de plantillas, el análisis de vulnerabilidades y las revisiones manuales de seguridad.
No dejes el sitio desprotegido
Con tanto énfasis en la seguridad empresarial y de DevOps, muchas personas podrían pasar por alto que los sitios web aún pueden sufrir ataques, y de hecho los sufren. XSS es una vulnerabilidad de hace años que todavía puede afectar a sitios que no cuentan con una política de seguridad de contenido adecuada. Por suerte, implementar una CSP es relativamente fácil. Toma medidas ahora para asegurarte de que el sitio web tenga el mismo nivel de seguridad que el resto de la empresa.
Mejora tus habilidades de programación segura
Capacitación gratuita y de alta calidad en seguridad para desarrolladores, cuando y donde quieras.
