Cloudflare corrige un bogue d'exécution de code CDN qui affectait 12,7 % de tous les sites

  • Principal
  • Nouvelles
  • Cloudflare corrige un bogue d'exécution de code CDN qui affectait 12,7 % de tous les sites

Cloudflare a corrigé une vulnérabilité critique potentiellement choquante dans son CDNJS gratuit et open source 12,7 % de tous les sites Web Dans Internet.

CDNJS dessert des millions de sites Web avec plus de 4 000 bibliothèques JavaScript et CSS stockées publiquement sur GitHub, ce qui en fait le deuxième plus grand CDN JavaScript.

Les exploits de la vulnérabilité comprenaient la publication de packages sur le CDNJS de Cloudflare à l'aide de GitHub et de npm, pour déclencher une vulnérabilité Path Traversal et, finalement, l'exécution de code à distance.

Si elle était exploitée, la vulnérabilité conduirait à un compromis complet de l'infrastructure CDNJS.

Du 'ZIP Slip' à l'exécution de code à distance

Cette semaine, chercheur en sécurité RyotaK explique comment il a pu trouver une méthode pour compromettre complètement le réseau CDNJS de Cloudflare tout en recherchant les attaques de la chaîne d'approvisionnement.

Les réseaux de diffusion de contenu (CDN) jouent un rôle essentiel dans la prise en charge de la sécurité, de l'intégrité et de la disponibilité d'Internet, car la grande majorité des sites Web s'appuient sur ces services pour charger les bibliothèques JavaScript et les scripts CSS populaires.

Les CDN peuvent devenir une option de ciblage pour les adversaires car, s'ils sont compromis, l'attaque peut avoir des conséquences considérables pour de nombreux sites Web, magasins en ligne et leurs clients.

En regardant cdnjs.com, RyotaK a remarqué que pour les bibliothèques qui n'existaient pas déjà dans CDNJS, il pourrait suggérer d'ajouter une nouvelle bibliothèque via CDNJS Archives GitHub .

Paquet Cdnjs introuvable

Les utilisateurs peuvent demander qu'un package soit publié dans le référentiel CDNJS GitHub

Après avoir exploré ce référentiel GitHub et ceux adjacents qui, ensemble, font fonctionner l'écosystème CDNJS, RyotaK a trouvé un moyen de tromper les serveurs pour qu'ils exécutent du code arbitraire.

En particulier, le chercheur a étudié les scripts trouvés dans cdnjs / bot-ansible c'est cdnjs/outils , dont un mise à jour automatique script qui a facilité la récupération automatique des mises à jour de la bibliothèque.

Ces scripts mettraient périodiquement à jour le serveur CDNJS avec les dernières versions des bibliothèques logicielles publiées par leurs auteurs respectifs dans le registre npm correspondant.

En d'autres termes, pour chaque bibliothèque publiée dans le référentiel CDNJS GitHub, sa version la plus récente serait téléchargée à partir du registre npm lié, et la version npm serait également maintenue par l'auteur de la bibliothèque.

RyotaK s'est demandé ce qui se passerait si une bibliothèque qu'il publiait sur CDNJS avait une version npm correspondante contenant un Carrefour souffler.

Notez que les packages npm sont publiés sous forme d'archives TGZ (.tar.gz) qui peuvent être facilement créées avec des exploits de traversée de chemin cachés à l'intérieur.

Le chercheur a d'abord publié une bibliothèque de tests appelée salut-sven à CDNJS en utilisant GitHub, puis a commencé à publier de nouvelles versions de 'hey-sven' sur le registre npm.

Dans les nouvelles versions 'hey-sven' publié à npm, qui serait finalement être poursuivi des robots de mise à jour CDNJS, le chercheur a injecté des scripts Bash dans des chemins étranges.

Ces chemins distincts ne sont rien de plus que des exploits Path Traversal cachés dans les fichiers ZIP/TGZ, un concept popularisé en 2018 sous le nom de 'ZIP Slip'.

Le paquet npm avait un exploit de traversée de chemin

Les versions 1.0.1 et 1.0.2 de Npm de la bibliothèque 'hey-sven' contenaient des exploits Path Traversal
La source: BleepingComputer

Une fois les fichiers npm 'hey-sven' créés traités par les serveurs CDNJS, le contenu de ces scripts Bash serait exécuté sur le serveur.

Mais le chercheur ne voulait pas écraser accidentellement un script existant, alors il a d'abord utilisé un vulnérabilités des liens symboliques pour lire le contenu du fichier qu'il était sur le point d'écraser, lors de ce test de preuve de concept (PoC).

'Étant donné que Git prend en charge les liens symboliques par défaut, il est possible de lire des fichiers arbitraires à partir du serveur de mise à jour de la bibliothèque cdnjs en ajoutant un lien symbolique dans le référentiel Git.'

'Si le fichier de script en cours d'exécution régulier est écrasé pour exécuter des commandes arbitraires, la fonction de mise à jour automatique peut être interrompue, j'ai donc décidé de vérifier d'abord la lecture du fichier arbitraire', a déclaré le chercheur.

Dès que votre PoC créé a atteint le serveur, RyotaK a pu télécharger de manière inattendue des secrets sensibles tels que GITHUB_REPO_API_KEY et WORKERS_KV_API_TOKEN dans des scripts fournis par CDN sur https://cdnjs.cloudflare.com/...

La sortie PoC du lien symbolique initial a fourni au chercheur des clés secrètes
La source: BleepingComputer

GITHUB_REPO_API_KEY est une clé API qui accorde des autorisations d'écriture, permettant à un attaquant modifier n'importe quelle bibliothèque dans le CDNJS, ou modifier le cdnjs.com site Web lui-même !

WORKERS_KV_API_TOKEN secret pourrait à la place être utilisé pour modifier les bibliothèques présentes dans le cache Cloudflare Workers.

«En combinant ces autorisations, la partie centrale de CDNJS, telle que les données sources CDNJS, le cache KV et même le site Web CDNJS, pourrait être complètement manipulée. [avec]', explique le chercheur.

Cloudflare publie de nombreux correctifs pour éliminer l'erreur

Le chercheur a signalé cette vulnérabilité à Cloudflare via le programme de divulgation des vulnérabilités HackerOne le 6 avril 2021 et a vu l'équipe Cloudflare appliquer un correctif intermittent en quelques heures.

Le correctif initial vu par BleepingComputer vise à résoudre la vulnérabilité du lien symbolique :

Correctif initial appliqué par CDNJS. par Cloud Flare ( GitHub )

Cependant, en raison de la complexité de l'écosystème CDNJS, plusieurs correctifs plus spécifiques ont été appliqués à différents référentiels dans les semaines suivantes, selon le chercheur.

RyotaK a partagé avec BleepingComputer que si le premier correctif se concentrait sur l'interdiction des liens symboliques (symlinks) dans les référentiels Git, il ne résolvait qu'une partie du problème.

«Ils ont d'abord essayé d'interdire les liens symboliques, mais ont réalisé que la conception actuelle du bot était trop dangereuse. Ils ont donc isolé les éléments les plus dangereux.

'Et pour d'autres fonctionnalités, appliqué AppArmors », a déclaré le chercheur à BleepingComputer dans une interview par e-mail.

Application Armor ou AppArmor est une fonctionnalité de sécurité qui limite les capacités des programmes s'exécutant dans des environnements basés sur Unix avec des profils prédéfinis afin que les programmes ne dépassent pas par inadvertance leur portée d'accès prévue.

Le chercheur a également partagé un certain nombre de correctifs avec BleepingComputer distribué par Cloudflare pour protéger le bot automatisé qui traite les bibliothèques mises à jour :

Cloudflare apporte plusieurs modifications à CDNJS pour corriger le bogue

'Bien que cette vulnérabilité puisse être exploitée sans compétences particulières, elle pourrait affecter de nombreux sites Web.'

'Comme il existe de nombreuses vulnérabilités dans la chaîne d'approvisionnement, qui sont faciles à exploiter mais ont un impact énorme, je pense que c'est très effrayant', déclare RyotaK dans son article de blog .

Comme indiqué précédemment par BleepingComputer, une attaque de la chaîne d'approvisionnement Magecart qui a touché des milliers de magasins en ligne a résulté de la compromission de l'infrastructure CDN de Volusion.

Le chercheur a fait l'éloge des équipes de réponse aux incidents ultra-rapides de Cloudflare, qui, quelques minutes après avoir reçu le rapport du chercheur, ont fait pivoter les secrets divulgués et ont travaillé avec lui pour étudier les vulnérabilités PoC.

BleepingComputer a contacté Cloudflare avec quelques questions, notamment si cette vulnérabilité était largement exploitée. Nous attendons votre réponse.

Qu'est-ce que tu penses?