Verificar que las fuentes de scripts de terceros sean de confianza es importante. Pero eso por sí solo puede no ser suficiente.
Eso es lo que el mundo aprendió en 2021, cuando se detectó una vulnerabilidad masiva en el cdnjs de Cloudflare. Aquí está el resumen de qué ocurrió y cómo sucedió.
Cdnjs es una de las redes de distribución de contenido (CDN) de JavaScript más utilizadas hoy en día. Más del 12% de todos los sitios web en internet inyectan al menos un script a través de cdnjs. Un investigador con el nombre de pantalla 'RyotaK' compartió una vulnerabilidad de cadena de suministro en cdnjs que permitía a cualquier persona en internet realizar cambios en las bibliotecas de cdnjs siguiendo una secuencia de pasos específicos. Aquí están sus hallazgos completos.
La vulnerabilidad existía dentro del servidor de actualización de bibliotecas de cdnjs. Este módulo específico ayuda a los desarrolladores a integrar de forma segura paquetes populares en sus sitios.
La vulnerabilidad en detalle
Al publicar un archivo .tgz en el registro de npm con un nombre de archivo diseñado para explotar este fallo de path traversal, un atacante podía provocar que el servidor de actualización de bibliotecas de cdnjs procesara el archivo malicioso. Esto sobreescribiría un archivo de script ejecutado de forma periódica, lo que llevaría a la ejecución arbitraria de comandos en los servidores de Cloudflare.
Para demostrar la explotabilidad, se planificó una demostración. Consistía en crear un archivo .tgz que, al ser procesado por el mecanismo de actualización de cdnjs, sobreescribiera un script inofensivo con código malicioso. Sin embargo, antes de ejecutar este plan, el investigador descubrió otro potente vector de ataque a través de las actualizaciones del repositorio de Git, que involucraba enlaces simbólicos capaces de leer archivos arbitrarios del servidor de actualización.
Un error no intencionado durante el proceso de demostración llevó a un descubrimiento significativo. Un enlace simbólico destinado a apuntar a un archivo inofensivo fue dirigido por error a /proc/self/environ, exponiendo variables de entorno sensibles, entre ellas GITHUB_REPO_API_KEY y WORKERS_KV_API_TOKEN. Este error reveló cómo un atacante podría obtener acceso a la mayor parte de la infraestructura de cdnjs, lo que suponía un riesgo de seguridad masivo.
Los problemas potenciales
Esto podría haber resultado en ejecución remota de código en los servidores de Cloudflare y en la posibilidad de ejecutar código malicioso en los scripts utilizados por todos los usuarios finales. Esto elude los Web Application Firewalls (WAFs) y cualquier otro mecanismo de filtrado, ya que se ejecuta directamente en el propio navegador.
Como se mencionó anteriormente, esto habría expuesto a más del 12% de los sitios web y a todos sus visitantes a un peligro inmediato si se hubiera explotado (una vez expiradas las cachés).
Cloudflare respondió con rapidez y tomó las medidas adecuadas antes de que alguien pudiera aprovechar el exploit. Son conocidos por sus análisis post-mortem detallados y muy transparentes sobre incidentes. Los detalles completos se pueden leer aquí.
La forma más segura de hacerlo
Todo esto demuestra que no basta con confiar en las fuentes.
Incluso los mejores del mundo son propensos a cometer errores. Una forma más segura es verificar lo que esas fuentes entregan.
Por eso existe cside. Ofrecemos un pequeño script para añadir a una página web, que hace 2 cosas:
- Reescribir las fuentes de los scripts para enrutarlos a través de cside. Esto coloca a cside en el flujo de la solicitud entre el usuario y el script de terceros, permitiendo una visibilidad completa de los scripts servidos. No nos limitamos a incluir fuentes en una lista blanca, sino que analizamos en profundidad cada script, en el 100% de las sesiones. En algunos casos, incluso se pueden realizar optimizaciones mediante el almacenamiento en caché de scripts estáticos.
- Realizar comprobaciones de comportamiento en el lado del navegador.
cside también monitoriza más de 60 atributos y utiliza IA para detectar en tiempo real cualquier indicador de intención maliciosa. Nuestra solución tiene en cuenta el contexto histórico, lo que significa que los cambios a lo largo del tiempo se consideran, facilitando la detección de secuestros. Además, cside utiliza IA para analizar el código del script de terceros. La combinación de nuestros mecanismos de detección en constante evolución nos permite identificar el intento en milisegundos y bloquearlo antes de que se produzca cualquier operación maliciosa, o emitir una alerta si surge un comportamiento peligroso.




