
CVE-2025-21479 PoC para o ZFlip5 com a Knox no caminho!(˶˃ ᵕ ˂˶)
Image
R/W física arbitrária da GPU (CVE-2025-21479) -> vazamento de KASLR -> SELinux permissivo -> servidor root com init-hook seguro contra RKP & bypass do DEFEX para execução de binários personalizados (LD_PRELOAD)
Leva cerca de 6 minutos.. Seja paciente.
Vou otimizar isso mais tarde.
Galaxy Z Flip 5 (SM-F731N)
Firmware: F731NKSU5EYD9
Android: 15
Security patch: 2025-04-01
SoC: Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU: Adreno 740 v2
Galaxy Z Flip 5 (SM-F7310) — obrigado @eoegamer por testar e conduzir!!
Firmware: F7310ZCS4CXH2
Android: 14
SoC: Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU: Adreno 740
Use o padrão do firmware da GPU:
xxd /vendor/firmware/a740_sqe.fw | grep -i "0300 422a"
Se corresponder, o firmware está vulnerável
; vulnerable firmware (v675)
and $04, $12, 0x3
; patched firmware (v676)
and $04, $12, 0x7
exploit.c é compilado para F731NKSU5EYD9.
Para outros firmwares, redirecione-o com port_extract.py primeiro (veja 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'
Execute uma vez por inicialização (o servidor root não é persistente).
Em caso de sucesso, ele deixa um listener toybox nc root vinculado ao loopback (127.0.0.1:4444). Obtenha um shell root a partir de adb shell:
adb shell
nc 127.0.0.1 4444 # root shell, uid=0 (u:r:sec_system_init_shell:s0)
Binários originais ainda podem ser executados diretamente.
O problema é que o DEFEX bloqueia binários nativos personalizados quando executados diretamente.
Então, em vez disso, execute seu código personalizado como uma biblioteca LD_PRELOAD injetada em um processo hospedeiro original a partir do shell root:
LD_PRELOAD=/data/local/tmp/test.so /system/bin/toybox true
Compile test.so com uma entrada __attribute__((constructor)); o construtor é executado como root dentro do processo hospedeiro original!
Se travar por mais de 15 minutos, reinicie e deixe o dispositivo esfriar.
O spraying de GPU é probabilístico. Tente novamente ou reinicie se falhar.
Desative as atualizações de software
Desative:
pm disable-user --user 0 com.sec.android.soagent
pm disable-user --user 0 com.wssyncmldm
Reative:
pm enable --user 0 com.sec.android.soagent
pm enable --user 0 com.wssyncmldm
Apenas para pesquisa de segurança autorizada e educação. O dispositivo e o firmware exatos devem corresponder.