CVE-2023-2163 : découverte et correction d’une vulnérabilité du noyau Linux eBPF
Contexte
- eBPF est une technologie qui permet d’étendre les fonctionnalités du noyau Linux à l’exécution sans écrire de modules noyau complexes.
- Les programmes eBPF s’exécutent lorsqu’un événement spécifique se produit et doivent faire l’objet d’une vérification de sécurité avant d’être chargés.
- Le vérificateur (
verifier) est composé d’un code complexe, et de nombreuses vulnérabilités y ont été découvertes.
- Google a développé Buzzer, un fuzzer qui audite automatiquement le vérificateur eBPF.
Stratégie d’arithmétique de pointeurs de Buzzer
- Buzzer est un nouveau fuzzer pour eBPF qui utilise une stratégie visant à provoquer des bugs logiques.
- La stratégie d’arithmétique de pointeurs se compose des étapes suivantes :
- Génération d’un en-tête qui initialise les registres avec des valeurs arbitraires
- Génération d’instructions arithmétiques et de saut arbitraires
- Sélection d’un registre arbitraire et exécution d’une addition avec un pointeur vers un élément de map eBPF
- Écriture d’une valeur magique dans cet élément
Élagage de chemins eBPF
- Le vérificateur eBPF a pour rôle de vérifier qu’un programme peut s’exécuter en toute sécurité.
- Lorsqu’il y a des conditions, il simule tous les états possibles.
- Lorsqu’il existe de nombreux sauts conditionnels, il utilise une stratégie d’élagage de chemins pour améliorer les performances.
Le bug
- CVE-2023-2163 a rendu l’élagage de chemins plus efficace en introduisant le concept de « suivi précis ».
- Le bug est survenu parce que la contribution du registre
r9 à la précision de r6 a été ignorée.
Exploit
- CVE-2023-2163 permet d’obtenir des lectures/écritures arbitraires, puis de réaliser une LPE et une évasion de conteneur.
- Étapes principales :
- Obtenir une lecture/écriture arbitraire
- Trouver les identifiants du processus et élever les privilèges
Correctif
- Pour corriger CVE-2023-2163, les registres imprécis sont marqués comme précis lors des opérations qui affectent des registres précis.
- L’impact sur les performances reste incertain, mais aucun autre problème supplémentaire n’a été identifié.
Idées pour la suite
- Garantir la sécurité des programmes eBPF est difficile en raison de la complexité du processus de vérification.
- Google cherche à résoudre ce problème avec Buzzer et accueille volontiers les contributions de la communauté open source.
Récapitulatif GN⁺
- Cet article explique le processus de découverte et de correction d’une vulnérabilité dans le vérificateur eBPF.
- eBPF est une technologie importante pour la recherche en sécurité du noyau, mais il est difficile d’en garantir la sûreté.
- Google a développé un fuzzer appelé Buzzer pour auditer automatiquement les vulnérabilités du vérificateur eBPF.
- Cet article est utile aux chercheurs en sécurité comme aux développeurs et aide à garantir la sécurité de systèmes complexes comme eBPF.
- Parmi les projets proposant des fonctionnalités similaires, on trouve d’autres outils de fuzzing liés à eBPF.
Aucun commentaire pour le moment.