Kernel-hack-drill and a new approach to exploiting CVE-2024-50264 in the Linux kernel
Mis à jour :
Voici une analyse de la vulnérabilité CVE-2024-50264 dans le noyau Linux, ainsi que l’approche utilisée pour l’exploiter.
Exploitation de CVE-2024-50264 : une nouvelle approche
Cette recherche détaille l’exploitation de CVE-2024-50264, une vulnérabilité du noyau Linux reconnue pour sa difficulté d’exploitation, ayant valu un Pwnie Award. L’article présente le projet kernel-hack-drill et son application pour surmonter les complexités de cette vulnérabilité.
Points Clés :
- Découverte de la Vulnérabilité : La vulnérabilité a été trouvée lors d’une campagne de fuzzing sur le sous-système
AF_VSOCK. Elle a été identifiée comme une condition de concurrence (race condition) entre l’appel systèmeconnect()et les signaux POSIX, conduisant à un use-after-free (UAF). - Complexité et Limitations : La vulnérabilité présente de nombreuses contraintes rendant l’exploitation ardue, notamment : des objets alloués conjointement perturbant les attaques inter-caches, une condition de concurrence instable, un déréférencement de pointeur nul (null-ptr-deref) post-UAF, et un blocage potentiel du noyau en cas d’utilisation d’un spinlock.
- Technique d’Exploitation : Une méthode innovante a été développée pour exploiter cette vulnérabilité, impliquant une technique de “race condition dans la race condition” pour stabiliser l’exploitation, et l’utilisation de
kernel-hack-drillpour créer des primitives d’exploitation plus simples. - Attaque Cross-Cache : Pour contourner les protections du noyau (comme
CONFIG_RANDOM_KMALLOC_CACHES), une attaque cross-cache a été employée. Elle consiste à réutiliser une zone mémoire allouée pour un type d’objet par un autre, permettant ainsi à l’UAF d’écraser des structures mémoire différentes commemsg_msgoupipe_buffer. - Dirty Pipe et AARW : L’exploitation finale utilise une combinaison d’attaques. Après avoir ralenti le traitement du noyau pour gagner du temps, le système écrase une structure
pipe_buffer. En manipulant les champspipe_buffer.pageetpipe_buffer.flags, une capacité d’écriture et de lecture arbitraire (AARW) est obtenue. Cette capacité est ensuite utilisée pour modifier les privilèges du processus et obtenir un accès root. - Contournement du KASLR : Bien que le KASLR randomise les adresses physiques, la technique a réussi à le contourner en calculant les adresses nécessaires et en effectuant un bruteforce sur quelques bits pour déterminer la valeur correcte du pointeur
pipe_buffer.page.
Vulnérabilité :
- CVE : CVE-2024-50264
- Composant affecté :
AF_VSOCKdans le noyau Linux. - Type de vulnérabilité : Use-after-free (UAF) causé par une condition de concurrence.
- Introduction de la vulnérabilité : Commit
06a8fc78367den août 2016 (Linux v4.8).
Recommandations :
- Mise à jour du noyau : Appliquer les correctifs de sécurité disponibles pour le noyau Linux afin de pallier la vulnérabilité CVE-2024-50264.
- Prudence avec les allocations mémoire : Les développeurs du noyau devraient faire preuve d’une vigilance accrue lors de la gestion des structures mémoire partagées, en particulier dans les contextes multithreadés et asynchrones, pour éviter les conditions de concurrence susceptibles de mener à des UAF.
- Analyse des risques : Les administrateurs système devraient évaluer le risque lié à l’exploitation de cette vulnérabilité en fonction de la version du noyau et de la configuration du système.
