
Anpassung von CVE-2023-6241 für Google Pixel 7 von Google Pixel 8 entnommen aus securitylab/SecurityExploits/Android/Mali/CVE_2023_6241
Dieses Repository zeigt, wie man den von securitylab in seinem GitHub-Repository veröffentlichten Exploit, der für Google Pixel 8 funktioniert, für ein Google Pixel 7 anpasst.
Bevor mit der Modifikation des Exploits begonnen wurde, wurde die Annahme, dass der ursprüngliche Exploit auch für Google Pixel 7 Geräte funktioniert (nach den erforderlichen Patches), auf der Grundlage des Artikels zu CVE-2023-6241 getroffen. Dies war notwendig, da sich die beiden Geräte (hardwareseitig) zu unterscheiden scheinen (Vergleich).
Hier die Werkzeuge, die für die Analyse und die Extraktion von Informationen oder Dateien verwendet wurden.
Im Folgenden wird beschrieben, wie das Ziel von Anfang an erreicht wurde.
Aktivieren Sie die Entwickleroptionen auf dem Gerät.
Spielen Sie das Gerät mit dem richtigen Sicherheitspatch (in diesem Fall einem zwischen UP1A.231105.003, Nov 2023 und UQ1A.240205.002, Feb 2024 beide eingeschlossen), verwenden Sie dazu möglichst Google Chrome und das Android flash tool und klicken Sie auf "Flash" im gewünschten Eintrag auf der Seite Factory Images for Nexus and Pixel Devices.
Hinweis 1: Die Verwendung des Android flash tool zum Flashen der Geräte kann helfen, Probleme im Zusammenhang mit der Bootloader-Version zu lösen. Diese Probleme können während eines Flash-Vorgangs auftreten, wenn das Skript verwendet wird, das mit der komprimierten Datei geliefert wird, die durch Klicken auf "Link" auf der Seite Factory Images for Nexus and Pixel Devices heruntergeladen wurde.
Hinweis 2: Vor dem Flashen des Geräts aktivieren Sie im Android flash tool die Option "Force Flash all partition", um das gleiche Ergebnis wie mit dem Skript zu erzielen.
Laden Sie das gewünschte Android-Image durch Klicken auf "Link" herunter und extrahieren Sie die Datei boot.img aus der komprimierten Datei "image-panther.zip" innerhalb der Haupt-ZIP-Datei "panther-<release>-factory-<erste 8 Zeichen von SHA-256>.zip"
Führen Sie ./imjtool.ELF64 boot.img extract aus. Der neue Ordner "extracted" wird mit zwei darin enthaltenen Dateien erstellt. 
Führen Sie vmlinux-to-elf ./extracted/kernel.decompressed <filename>.elf aus (für spätere Referenz wird <filename>.elf als bezeichnet). Eine neue Datei mit dem angegebenen Namen wird erstellt.
Weitere Informationen finden Sie im GitHub-Artikel und im GitHub-Repository, das am Anfang erwähnt wurde.
Pixel7-kernel.elf
Öffnen Sie "Pixel7-kernel.elf" mit Ghidra. Es ist nicht notwendig, die automatische Analyse durchzuführen, da sie viel Zeit in Anspruch nimmt und die Informationen dennoch extrahiert werden können.
Öffnen Sie das Fenster "Symboltabelle" und suchen Sie nach den interessierenden Feldern (in diesem Fall avc_den|sel_read_enforce$|init_cred|^commit_creds$). Das Ergebnis sollte etwa so aussehen: 
Gehen Sie zur Adresse des Speicherorts und ermitteln Sie den "Imagebase Offset" für alle gesuchten Felder. 
Setzen Sie alle Offsets im Exploit entsprechend den gefundenen Werten.

Berechnen Sie den Wert von ADD_COMMIT_2311 und ADD_INIT_2311, indem Sie den HEX-Wert der folgenden Operationen add x8, x8, #0xXXX bzw. add x0, x0, #0xYYY mit dem Online Assembler and Disassembler ermitteln. Um die Werte von XXX und YYY zu finden, genügt es, die niedrigsten 12 Bits von COMMIT_CREDS_2311 bzw. ADD_INIT_2311 zu kopieren (z.B. wenn ADD_COMMIT_2311 gleich 0x17f0c8 ist, dann ist der HEX-Code von add x8, x8, #0x0c8 0x91032108).
Beachten Sie, dass die Werte im Big-Endian-Format angegeben sind, daher müssen die resultierenden Bytes umgekehrt werden.
Kopieren Sie die GLES_mali.so von /vendor/lib64/egl/libGLES_mali.so (d.h. adb pull /vendor/lib64/egl/libGLES_mali.so) und kompilieren Sie alles mit /home/gobbo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android34-clang -g -DSHELL -DCL_TARGET_OPENCL_VERSION=300 -I. -L. mali_jit_csf.c mem_read_write.c mempool_utils.c -lGLES_mali -o mali_jit_csf.
Hinweis: Nur um zeitlich konsistent zu sein, wurde die im Exploit verwendete OpenCL-Bibliotheksversion die neueste vor dem Sicherheitspatch, der die Schwachstelle behob, verwendet (d.h. Version 2023.04.17)
Laden Sie den Exploit hoch und führen Sie ihn aus
adb push ./mali_jit_csf /data/local/tmp
export LD_LIBRARY_PATH=/vendor/lib64/egl
./data/local/tmp/mali_jit_csf