La falla crítica de Cloudflare CDN va permetre que el 12% de tots els llocs es veiessin compromesos


Cloudflare va solucionar una vulnerabilitat crítica potencialment impactant al seu CDNJS de codi obert i gratuït 12,7% de tots els llocs web A Internet.

CDNJS dóna servei a milions de llocs web amb més de 4.000 biblioteques de JavaScript i CSS emmagatzemades públicament a GitHub, el que el converteix en el segon CDN de JavaScript més gran.

Els exploits de la vulnerabilitat inclouen la publicació de paquets al CDNJS de Cloudflare mitjançant GitHub i npm, per activar una vulnerabilitat de Path Traversal i, finalment, l'execució de codi remota.



Si s'aprofita, la vulnerabilitat comportaria un compromís total de la infraestructura CDNJS.

Des de 'ZIP Slip' fins a l'execució de codi remota

Aquesta setmana, investigador de seguretat RyotaK explica com va poder trobar un mètode per comprometre completament la xarxa CDNJS de Cloudflare mentre buscava atacs a la cadena de subministrament.

Les xarxes de lliurament de contingut (CDN) juguen un paper vital a l'hora de donar suport a la seguretat, la integritat i la disponibilitat d'Internet, ja que la gran majoria de llocs web depenen d'aquests serveis per carregar biblioteques de JavaScript i scripts CSS populars.

Els CDN poden esdevenir una opció d'orientació per als adversaris, ja que, si es veuen compromesos, l'atac pot tenir conseqüències de gran abast per a molts llocs web, botigues en línia i els seus clients.

Fent una ullada a cdnjs.com, RyotaK es va adonar que per a les biblioteques que encara no existien a CDNJS, podria suggerir afegir una biblioteca nova mitjançant CDNJS. Arxiu GitHub .

No s'ha trobat el paquet Cdnjs

Els usuaris poden sol·licitar que es publiqui un paquet al repositori GitHub de CDNJS

Després d'explorar aquest dipòsit de GitHub i els adjacents que junts fan que l'ecosistema CDNJS funcioni, RyotaK ha trobat una manera d'enganyar els servidors perquè executin codi arbitrari.

En particular, l'investigador va estudiar els guions que es troben cdnjs / bot-ansible és cdnjs/eines , inclòs a actualització automàtica script que va facilitar la recuperació automàtica de les actualitzacions de la biblioteca.

Aquests scripts actualitzaran periòdicament el servidor CDNJS amb les últimes versions de les biblioteques de programari publicades pels seus respectius autors al registre npm corresponent.

És a dir, per a cada biblioteca publicada al dipòsit de GitHub de CDNJS, la seva versió més recent es baixaria del registre npm enllaçat i la versió npm també la mantindria l'autor de la biblioteca.

RyotaK es va preguntar què passaria si una biblioteca que va publicar a CDNJS tingués una versió npm corresponent que contingués un Cruïlla cop.

Tingueu en compte que els paquets npm s'alliberen com a arxius TGZ (.tar.gz) que es poden crear fàcilment amb exploits de travessa de camins ocults a l'interior.

L'investigador va publicar per primera vegada una biblioteca de proves anomenada hola-sven a CDNJS mitjançant GitHub, i després va començar a publicar versions més noves de 'hey-sven' al registre npm.

A les versions més recents 'hey-sven' publicat a npm, que finalment seria ser processat dels bots d'actualització de CDNJS, l'investigador va injectar scripts Bash en camins d'aspecte estrany.

Aquests camins diferents no són més que exploits de Path Traversal ocults als fitxers ZIP/TGZ, un concepte popularitzat el 2018 com a 'ZIP Slip'.

El paquet npm tenia una explotació de travessa de camí

Les versions 1.0.1 i 1.0.2 de Npm de la biblioteca 'hey-sven' contenien exploits de Path Traversal
Font: BleepingComputer

Un cop els servidors CDNJS processin els fitxers npm 'hey-sven' creats, el contingut d'aquests scripts Bash s'executaria al servidor.

Però l'investigador no volia sobreescriure accidentalment un script existent, així que primer va utilitzar a vulnerabilitats dels enllaços simbòlics per llegir el contingut del fitxer que estava a punt de sobreescriure, durant aquesta prova de prova de concepte (PoC).

'Com que Git admet enllaços simbòlics per defecte, és possible llegir fitxers arbitraris des del servidor d'actualització de la biblioteca cdnjs afegint un enllaç simbòlic al repositori de Git'.

'Si el fitxer de script que s'executa habitualment se sobreescriu per executar ordres arbitràries, la funció d'actualització automàtica es pot interrompre, així que vaig decidir comprovar primer la lectura del fitxer arbitrari', va dir l'investigador.

Tan bon punt el vostre PoC creat hagi arribat al servidor, RyotaK va poder baixar inesperadament secrets sensibles com GITHUB_REPO_API_KEY i WORKERS_KV_API_TOKEN en scripts proporcionats per CDN a https: //cdnjs.cloudflare.com / ...

La sortida PoC de l'enllaç simbòlic inicial va proporcionar a l'investigador claus secretes
Font: BleepingComputer

GITHUB_REPO_API_KEY és una clau d'API que atorga permisos d'escriptura, permetent un atacant editar qualsevol biblioteca al CDNJS, o alterar el cdnjs.com lloc web en si!

WORKERS_KV_API_TOKEN secret es podria utilitzar per alterar les biblioteques presents a la memòria cau de Cloudflare Workers.

'En combinar aquests permisos, la part bàsica de CDNJS, com ara les dades d'origen de CDNJS, la memòria cau de KV i fins i tot el lloc web de CDNJS, es podria manipular completament. [amb]', explica l'investigador.

Cloudflare emet moltes solucions per eliminar l'error

L'investigador va informar d'aquesta vulnerabilitat a Cloudflare a través del Programa de divulgació de vulnerabilitats HackerOne el 6 d'abril de 2021 i va veure que l'equip de Cloudflare aplicava una solució intermitent en poques hores.

La correcció inicial vista per BleepingComputer té com a objectiu abordar la vulnerabilitat de l'enllaç simbòlic:

Correcció inicial aplicada per CDNJS. de Cloudflare ( GitHub )

Tanmateix, a causa de la complexitat de l'ecosistema CDNJS, es van aplicar diverses correccions específiques a diferents dipòsits durant les setmanes següents, segons l'investigador.

RyotaK va compartir amb BleepingComputer que, mentre que la primera correcció es va centrar a no permetre els enllaços simbòlics (enllaços simbòlics) als dipòsits Git, només va solucionar una part del problema.

'Primer van intentar no permetre els enllaços simbòlics, però es van adonar que el disseny actual del bot és massa perillós. Així que van aïllar les característiques més perilloses.

'I per a altres característiques, aplicat AppArmors', va dir l'investigador a BleepingComputer en una entrevista per correu electrònic.

Application Armor o AppArmor és una característica de seguretat que limita les capacitats dels programes que s'executen en entorns basats en Unix amb perfils predefinits, de manera que els programes no superin sense voler l'abast d'accés previst.

L'investigador també va compartir una sèrie de solucions amb BleepingComputer distribuït per Cloudflare per protegir el bot automatitzat que processa biblioteques actualitzades:

Cloudflare fa diversos canvis a CDNJS per solucionar l'error

'Tot i que aquesta vulnerabilitat es pot explotar sense habilitats especials, podria afectar molts llocs web'.

'Com que hi ha moltes vulnerabilitats a la cadena de subministrament, que són fàcils d'explotar però tenen un impacte enorme, crec que fa molta por', diu RyotaK al seu entrada al blog .

Tal com va informar anteriorment BleepingComputer, un atac a la cadena de subministrament de Magecart que va afectar milers de botigues en línia va ser el resultat del compromís de la infraestructura CDN de Volusion.

L'investigador va elogiar els equips de resposta a incidents ràpids de Cloudflare, que, pocs minuts després de rebre l'informe de l'investigador, van girar els secrets filtrats i van treballar amb ell per estudiar les vulnerabilitats de PoC.

BleepingComputer va contactar amb Cloudflare per esbrinar si aquesta vulnerabilitat s'estava explotant àmpliament.

Un portaveu de Cloudflare va dir a BleepingComputer que la vulnerabilitat no es va explotar i que estan agraïts a l'investigador per informar del problema.

'Tal com es pot veure a l'informe, els sistemes automatitzats han detectat la feina [de l'investigador] i les credencials han estat revocades immediatament'.

'L'investigador ens va informar dels resultats el 6 d'abril i vam solucionar el problema en 24 hores'.

'A més, és important tenir en compte que veurem que cada cop més investigadors publiquen coses com aquesta, sobretot a mesura que ampliem el nostre programa de recompenses i el fem més públic amb el temps'.

'Estem contents de veure investigadors fent aquest tipus de proves i de compartir-ho amb nosaltres. Volem veure més', va dir Cloudflare a BleepingComputer.

Actualització 13:47 ET: declaració afegida de Cloudflare.

Què penses?