❤️ Adquiere tu membresía:  Contenidos protegidos, manuales y videos >> Ver Más

Vulnerabilidad crítica de Cloudflare afectaba a millones de sitios web

Cloudflare solucionó una vulnerabilidad crítica en su CDNJS gratuito y de código abierto que habría afectado al 12,7% de todos los sitios web en Internet.

CDNJS es utilizado por millones de sitios web con más de 4000 bibliotecas de JavaScript y CSS almacenadas públicamente en GitHub. Esto lo convierte en el segundo CDN (red de distribución de contenidos) de JavaScript más grande.

Las vulnerabilidades comprendían la publicación de paquetes en CDNJS de Cloudflare utilizando GitHub y npm. La publicación permitía desencadenar una vulnerabilidad de path traversal (recorrido de ruta)y, finalmente, la ejecución remota de código.

En caso de ser explotada, la vulnerabilidad conduciría a un compromiso completo de la infraestructura CDNJS.

De “ZIP Slip” a la ejecución remota de código

Esta semana, el investigador de seguridad RyotaK explicó cómo encontró un método para comprometer completamente la red CDNJS de Cloudflare. Él realizó el descubrimiento mientras investigaba ataques a la cadena de suministro.

Las redes de distribución de contenido (CDN) desempeñan un papel fundamental en la defensa de la seguridad, la integridad y la disponibilidad de Internet. Esto porque la gran mayoría de los sitios web confían en estos servicios para cargar bibliotecas JavaScript y scripts CSS populares.

Las CDNs pueden convertirse en una opción de objetivos para los atacantes. Si logran comprometerlos, el ataque puede tener consecuencias de gran alcance para muchos sitios web, tiendas en línea y sus clientes.

Mientras analizaba cdnjs.com, RyotaK notó que para las bibliotecas que aún no existían en CDNJS, podría sugerir la adición de una nueva biblioteca a través del repositorio GitHub de CDNJS.

Los usuarios pueden solicitar que se publique un paquete en el repositorio de GitHub de CDNJS

El investigador descubrió la vulnerabilidad después de explorar ese repositorio de GitHub y los repositorios adyacentes que juntos hacen que el ecosistema CDNJS funcione. RyotaK descubrió una manera de engañar a los servidores para que ejecutaran código arbitrario.

En particular, el investigador estudió los scripts presentes en cdnjs/bot-ansible y cdnjs/tolos. Además, analizó un script de actualización automática que facilitó la recuperación automática de las actualizaciones de la biblioteca.

Estos scripts actualizarían periódicamente el servidor CDNJS con versiones más recientes de las bibliotecas de software publicadas por sus autores en el registro npm correspondiente.

En otras palabras, para cada biblioteca publicada en el repositorio de GitHub de CDNJS, su versión más reciente se descargaría del registro npm vinculado, y el autor de la biblioteca también mantendría la versión npm.

Ataque

RyotaK se preguntó qué pasaría si una biblioteca que había publicado en CDNJS tuviera su correspondiente versión npm con un exploit de Path Traversal.

Ten en cuenta que los paquetes npm se publican como archivos TGZ (.tar.gz) que pueden crearse fácilmente con exploits de ruta de acceso ocultos.

El investigador primero publicó una biblioteca de prueba llamada hey-sven para CDNJS usando GitHub. Posteriormente comenzó a lanzar versiones más nuevas de “hey-sven” en el registro npm.

En las versiones más nuevas “hey-sven” publicadas en npm, que eventualmente serían  procesadas por los bots de actualización de CDNJS, el investigador inyectó scripts Bash en rutas de aspecto extraño.

Estas rutas distintas no son más que exploits Path Traversal ocultos dentro de archivos ZIP/TGZ, un concepto popularizado en 2018 como “ZIP Slip”.

Una vez que los servidores CDNJS procesaron los archivos npm “hey-sven” creados, el contenido de estos scripts Bash se ejecutaría en el servidor.

Pero, el investigador no quería sobrescribir accidentalmente un script existente, por lo que primero utilizó una vulnerabilidad de enlace simbólico. Esto para leer el contenido del archivo que estaba a punto de sobrescribir durante la prueba de prueba de concepto (PoC).

“Git admite enlaces simbólicos de forma predeterminada. Entonces es posible leer archivos arbitrarios del servidor de actualización de la biblioteca cdnjs agregando un enlace simbólico en el repositorio de Git”.

Si el archivo de secuencia de comandos que se ejecuta regularmente se sobrescribe para ejecutar comandos arbitrarios, la función de actualización automática puede fallar. Por lo tanto, decidí verificar primero la lectura del archivo arbitrario.

PoC

Tan pronto como su PoC diseñado llegó al servidor, RyotaK pudo obtener inesperadamente secretos sensibles como GITHUB_REPO_API_KEY y WORKERS_KV_API_TOKEN en scripts servidos por el CDN en https://cdnjs.cloudflare.com/…

La salida de la PoC del enlace simbólico inicial proporcionó al investigador claves secretas

GITHUB_REPO_API_KEY es una clave API que otorga permisos de escritura. Esta API permite a un atacante alterar cualquier biblioteca en el CDNJS o manipular el sitio web cdnjs.com.

WORKERS_KV_API_TOKEN, por otro lado, podría usarse para manipular las bibliotecas presentes en el caché de Cloudflare Workers.

“Combinando estos permisos, la parte central de CDNJS, como los datos de origen de CDNJS, la caché de KV e incluso el sitio web de CDNJS, podrían ser manipulados por completo”.

Cloudflare emitió muchas correcciones para eliminar la vulnerabilidad

El investigador informó esta vulnerabilidad a Cloudflare a través del programa de divulgación de vulnerabilidades de HackerOne el 6 de abril de 2021. El equipo de Cloudflare aplicó una solución intermitente en cuestión de horas.

La solución inicial tuvo como objetivo resolver la vulnerabilidad del enlace simbólico:

Corrección inicial aplicada para CDNJS de Cloudflare

Sin embargo, debido a la complejidad del ecosistema CDNJS, durante las siguientes semanas se aplicaron una serie de arreglos más concretos a diferentes repositorios.

RyotaK dijo que, si bien la primera solución se centró en rechazar enlaces simbólicos (symlinks) en los repositorios de Git, solo solucionó una parte del problema.

Primero intentaron rechazar los enlaces simbólicos, pero se dieron cuenta de que el diseño actual del bot es demasiado peligroso. Así que aislaron las características más peligrosas, afirmó.

“Y para otras funciones, aplicaron AppArmors”, dijo el investigador.

Application Armor o AppArmor es una función de seguridad que restringe las capacidades de los programas que se ejecutan en entornos basados ​​en Unix. La función utiliza perfiles predefinidos para que los programas no excedan inadvertidamente su alcance de acceso previsto.

El investigador también compartió una serie de correcciones implementadas por Cloudflare para asegurar el bot automatizado que procesa las bibliotecas actualizadas:

Cloudflare realizó varios cambios en CDNJS para resolver la vulnerabilidad

“La vulnerabilidad podría haberse explotado sin ninguna habilidad especial, pero podría haber afectado a muchos sitios web”.

Causa mucho miedo saber que hay muchas vulnerabilidades en la cadena de suministro que son fáciles de explotar y tienen un gran impacto”.

RyotaK

Respuesta rápida de Cloudflare

El investigador elogió a los rápidos equipos de respuesta a incidentes de Cloudflare.  A los pocos minutos de recibir el informe del investigador, trabajaron con él para estudiar las vulnerabilidades de PoC.

Algunos medios cuestionaron a Cloudflare para comprender si esta vulnerabilidad había sido ampliamente explotada.

Un portavoz de Cloudflare que la vulnerabilidad no ha sido explotada y que están agradecidos con el investigador por informar del problema.

“Como puede verse en el informe, los sistemas automatizados detectaron el trabajo [del investigador] y revocaron las credenciales de inmediato”.

El investigador nos informó de los hallazgos el 6 de abril y solucionamos el problema en 24 horas”.

“Además, es importante tener en cuenta que veremos más y más investigadores publicando cosas como esta. Especialmente a medida que expandimos nuestro programa de recompensas”

“Estamos felices de ver a los investigadores hacer este tipo de pruebas, y de que lo compartan con nosotros. Queremos ver más de eso”, concluyó Cloudflare.”

Deja un comentario

Adquiere tu Membresía Anual Wiser

Adquiere tu Membresía Anual Wiser y adquiere grandes beneficios

Más información