
CVE-2025-21479 PoC для ZFlip5 с Knox на пути!(˶˃ ᵕ ˂˶)
Image
GPU произвольное физическое чтение/запись (CVE-2025-21479) -> утечка KASLR -> разрешающий SELinux -> root-сервер с RKP-безопасным init-hook и обход DEFEX для выполнения пользовательских бинарников (LD_PRELOAD)
Процесс занимает около 6 минут. Наберитесь терпения.
Я оптимизирую это позже.
Galaxy Z Flip 5 (SM-F731N)
Прошивка: F731NKSU5EYD9
Android: 15
Патч безопасности: 2025-04-01
SoC: Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU: Adreno 740 v2
Galaxy Z Flip 5 (SM-F7310) — спасибо @eoegamer за тестирование и поддержку!!
Прошивка: F7310ZCS4CXH2
Android: 14
SoC: Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU: Adreno 740
Используйте шаблон прошивки GPU:
xxd /vendor/firmware/a740_sqe.fw | grep -i "0300 422a"
Если совпадает, прошивка уязвима
; vulnerable firmware (v675)
and $04, $12, 0x3
; patched firmware (v676)
and $04, $12, 0x7
Файл exploit.c собран для F731NKSU5EYD9.
Для других прошивок сначала перенастройте его с помощью port_extract.py (см. PORTING.md)
# build exploit.c with the Android NDK (aarch64), e.g.:
# $NDK/toolchains/llvm/prebuilt/*/bin/aarch64-linux-android34-clang exploit.c -o cheese
adb push cheese /data/local/tmp/
adb shell 'chmod +x /data/local/tmp/cheese; /data/local/tmp/cheese'
Запускайте один раз после загрузки (root-сервер не сохраняется).
В случае успеха он оставляет root-слушатель toybox nc, привязанный к loopback (127.0.0.1:4444). Получите root-оболочку из adb shell:
adb shell
nc 127.0.0.1 4444 # root shell, uid=0 (u:r:sec_system_init_shell:s0)
Стоковые бинарники могут запускаться напрямую.
Проблема в том, что DEFEX блокирует выполнение пользовательских нативных бинарников при прямом запуске.
Вместо этого запускайте свой пользовательский код как библиотеку LD_PRELOAD, внедрённую в стоковый процесс хоста из root-оболочки:
LD_PRELOAD=/data/local/tmp/test.so /system/bin/toybox true
Соберите test.so с точкой входа __attribute__((constructor)); его конструктор выполняется как root внутри стокового хоста!
Если процесс зависает более чем на 15 минут, перезагрузите устройство и дайте ему остыть.
Распыление GPU вероятностное. При неудаче повторите попытку или перезагрузитесь.
Отключите обновления ПО
Отключить:
pm disable-user --user 0 com.sec.android.soagent
pm disable-user --user 0 com.wssyncmldm
Включить заново:
pm enable --user 0 com.sec.android.soagent
pm enable --user 0 com.wssyncmldm
Только для авторизованных исследований безопасности и обучения. Точное устройство и прошивка должны совпадать.