Une nouvelle attaque de type cross-cache sur le noyau Linux, dénommée SLUBStick, affiche un taux de réussite de 99 % pour transformer une vulnérabilité de tas limitée en une capacité de lecture et d’écriture arbitraire en mémoire, permettant ainsi aux chercheurs d’élever leurs privilèges ou de s’échapper des conteneurs.
Cette découverte émane d’une équipe de chercheurs de l’Université de Technologie de Graz, qui a démontré l’attaque sur les versions 5.9 et 6.2 du noyau Linux (la plus récente) en utilisant neuf CVE existants sur des systèmes 32 bits et 64 bits, ce qui témoigne d’une grande polyvalence.
De plus, l’attaque a réussi à contourner toutes les défenses modernes du noyau, telles que la prévention d’exécution en mode superviseur (SMEP), la prévention d’accès en mode superviseur (SMAP) et la randomisation de l’espace d’adressage du noyau (KASLR).
SLUBStick sera présenté en détail lors du prochain symposium de sécurité Usenix qui se tiendra plus tard ce mois-ci. Les chercheurs y démontreront l’escalade de privilèges et l’évasion de conteneurs sur la dernière version de Linux avec des défenses à la pointe de la technologie activées.
En attendant, le document technique publié contient tous les détails concernant l’attaque et les scénarios d’exploitation potentiels.
Détails de la technologie SLUBStick
Le noyau Linux gère la mémoire de manière efficace et sécurisée en allouant et désallouant des blocs de mémoire, appelés « slabs », pour différents types de structures de données.
Des défauts dans ce processus de gestion de la mémoire peuvent permettre aux attaquants de corrompre ou de manipuler des structures de données, ce qui est connu sous le nom d’attaques cross-cache. Cependant, ces attaques ne réussissent qu’environ 40 % du temps et entraînent généralement des plantages du système à un moment donné.
SLUBStick exploite une vulnérabilité de tas, telle qu’un double libération, un utilisateur après libération, ou une écriture hors limites, pour manipuler le processus d’allocation de mémoire.
Ensuite, il utilise un canal latéral temporel pour déterminer le moment exact de l’allocation/désallocation des blocs de mémoire, permettant à l’attaquant de prédire et de contrôler la réutilisation de la mémoire.
En utilisant ces informations temporelles, le taux de réussite de l’exploitation cross-change atteint 99 %, rendant SLUBStick très pratique.
La conversion de la faille de tas en primitives de lecture et d’écriture arbitraires en mémoire se fait en trois étapes :
- Désallouer des blocs de mémoire spécifiques et attendre que le noyau les réutilise.
- Réallouer ces blocs de manière contrôlée, en s’assurant qu’ils soient réaffectés à des structures de données critiques comme les tables de pages.
- Une fois récupérés, l’attaquant écrase les entrées de la table de pages, obtenant ainsi la capacité de lire et d’écrire à n’importe quel emplacement mémoire.
Impact de la technologie dans le monde réel
Comme c’est souvent le cas avec les attaques utilisant un canal latéral, SLUBStick nécessite un accès local à la machine cible avec des capacités d’exécution de code. De plus, l’attaque nécessite la présence d’une vulnérabilité de tas dans le noyau Linux, qui sera ensuite exploitée pour obtenir un accès en lecture et écriture à la mémoire.
Bien que cela puisse donner l’impression que l’attaque est peu pratique, elle offre certains avantages aux attaquants.
Même pour les attaquants ayant des capacités d’exécution de code, SLUBStick permet d’atteindre une élévation de privilèges, de contourner les défenses du noyau, de réaliser des évasions de conteneurs ou de l’utiliser comme partie d’une chaîne d’attaques complexe.
L’élévation de privilèges peut être utilisée pour obtenir des privilèges root, permettant ainsi des opérations illimitées, tandis que l’évasion de conteneurs peut permettre de sortir d’environnements isolés et d’accéder au système hôte.
De plus, dans la phase post-exploitation, SLUBStick pourrait modifier des structures ou des hooks du noyau pour maintenir une persistance, rendant ainsi le malware plus difficile à détecter pour les défenseurs.
Pour ceux qui souhaitent approfondir leurs connaissances sur SLUBStick et expérimenter les exploits utilisés par les chercheurs de Graz, ils peuvent les trouver dans le dépôt GitHub des chercheurs.