Une attaque Spectre à distance a permis d’extraire un JWT d’un Cloudflare Worker colocalisé, montrant comment des canaux auxiliaires du processeur peuvent franchir les frontières entre locataires dans des environnements serverless mutualisés.
Les chercheurs ont extrait le jeton délibérément implanté à un débit pouvant atteindre 12 bits par seconde dans l’environnement de production de Cloudflare. L’équipe de recherche contrôlait les deux Workers et avait délibérément placé le jeton dans le Worker victime. Cloudflare a déclaré n’avoir trouvé aucun indice d’une exploitation active de la technique et avoir neutralisé l’attaque démontrée.
Cette attaque est remarquable, car elle ne nécessitait ni exécution de code natif, ni exploitation logicielle de V8, ni évasion conventionnelle du bac à sable. Elle tirait plutôt parti de la façon dont des Workers colocalisés peuvent partager un processus du système d’exploitation.
Comment l’attaque Spectre à distance a exfiltré un JWT
La plateforme Cloudflare Workers utilise des isolats V8 pour exécuter le code de nombreux locataires au sein d’un même processus du système d’exploitation. Chaque Worker dispose de son propre tas JavaScript, ce qui permet à Cloudflare de maintenir des temps de démarrage faibles tout en évitant la surcharge liée au placement de chaque locataire dans un processus distinct. Cloudflare a reconnu qu’une lecture arbitraire au sein d’un processus Worker partagé pouvait tout de même ouvrir la voie à une fuite entre locataires.
Spectre exploite l’exécution spéculative des processeurs modernes. Même si le processeur abandonne le résultat d’une opération spéculative incorrecte, des traces peuvent subsister dans le cache. Un attaquant peut mesurer ces traces pour déduire des données qui devraient autrement rester inaccessibles.
Cloudflare avait déjà restreint les minuteurs locaux haute résolution, la mémoire partagée et le multithreading au sein des Workers. Les chercheurs ont contourné cet obstacle en utilisant des communications WebSocket comme source de mesure temporelle à distance.
GIGAZINE a indiqué que l’attaque utilisait également une technique Pseudo Least Recently Used pour amplifier d’infimes différences de temps d’accès au cache jusqu’à ce qu’elles puissent être distinguées sur une connexion réseau bruitée. Les Durable Objects ont permis de maintenir un isolat Worker actif pendant cinq heures à plus de 20 heures, le temps de recueillir les mesures.
Les chercheurs ont finalement récupéré le JWT délibérément implanté bit par bit, à un débit pouvant atteindre 12 bits par seconde et avec une précision de 99,16 %. The Hacker News a rapporté que ce débit était environ 360 fois supérieur à celui d’une démonstration réalisée en 2021, qui atteignait à peine 120 bits par heure.
Pourquoi le détecteur Spectre de Cloudflare ne l’a pas repérée
Le système Dynamic Process Isolation de Cloudflare, connu sous le nom de DyPrIs, surveille les compteurs de performance matériels et déplace les scripts ressemblant à des attaques Spectre vers des processus distincts.
Deux caractéristiques de la nouvelle attaque ont échappé à cette défense.
Premièrement, DyPrIs attendait auparavant la fin d’une invocation avant de l’isoler. Les messages de maintien de connexion WebSocket permettaient à une invocation Durable Object de se poursuivre pendant des heures, donnant aux chercheurs le temps d’achever l’exfiltration avant l’isolement.
Deuxièmement, un trafic WebSocket intense augmentait l’activité de l’iTLB. Cela abaissait le signal normalisé de mauvaise prédiction des branchements utilisé par DyPrIs sous son seuil de détection, faisant ressembler l’attaque à un Worker normal fortement sollicité en entrées-sorties.
Cloudflare renforce l’isolement autour des Workers
Cloudflare a décrit trois mécanismes de défense qui se recoupent : l’amélioration de DyPrIs, l’intégration du V8 Sandbox et l’utilisation d’un isolement au sein du processus assisté par le matériel.
Le V8 Sandbox réduit l’exposition aux pointeurs 64 bits bruts, ce qui rend plus difficile la réutilisation du gadget spéculatif spécifique utilisé dans la recherche. Cloudflare a toutefois averti que le bac à sable ne constituait pas une protection complète contre Spectre, car d’autres gadgets ou variantes d’attaque pourraient rester possibles.
Cloudflare utilise également les Memory Protection Keys pour placer les tas des Workers derrière des frontières mémoire imposées par le matériel. L’accès à une mémoire protégée par la mauvaise clé est refusé par le processeur, ce qui bloque la lecture inter-isolats directe démontrée par les chercheurs. Les MPK réduisent la surface de fuite disponible, même si Cloudflare a précisé qu’elles n’éliminaient pas entièrement le risque Spectre.
DyPrIs considère désormais les charges de travail longues et lourdes en entrées-sorties comme des cas de sécurité, et Cloudflare cherche à déterminer si une activité réseau répétée ressemblant à celle d’un minuteur peut également aider à identifier les attaques par canal auxiliaire.
Pour les équipes de sécurité qui évaluent les services serverless, cette étude rappelle qu’il faut aller au-delà de la simple vérification de l’isolation technique des charges de travail. Dans les environnements mutualisés, les frontières entre processus, l’isolation mémoire imposée par le matériel, la surveillance de l’environnement d’exécution et les défenses contre les canaux auxiliaires jouent toutes un rôle pour empêcher le code d’un locataire d’accéder aux données d’un autre.
À lire aussi : Pour les équipes de sécurité qui suivent les vulnérabilités récemment divulguées et activement exploitées, le Patch Tuesday d’août de Microsoft a également apporté des correctifs pour plus de 400 vulnérabilités, dont une faille zero-day de Windows déjà exploitée.





