
SM-F9360 (Galaxy Z Fold4, q4q) root KernelSU sur bootloader verrouillé — CVE-2026-43499 root temporaire → contournement de DEFEX via LD_PRELOAD → kernelsu.ko clang-12 sans LTO. Vérifié sur appareil le 2026-08-12.
CVE-2026-43499 root temporaire → contournement de DEFEX via le canal LD_PRELOAD → kernelsu.ko compilé avec clang-12 sans LTO → su + KernelSU Manager pleinement fonctionnels
Statut : ✅ Validé sur appareil réel le 2026-08-12 (firmware
F9360ZCSAIZF1, noyau5.10.236-android12-9-2755199-abF9360ZCSAIZF1)Ce projet documente la procédure complète et reproductible pour obtenir un root KernelSU sur un appareil Samsung au Bootloader verrouillé : aucun déverrouillage BL, aucun flash de boot.img, aucun Odin requis.
TL;DR (English): This repo documents a fully device-verified jailbreak path for a locked-bootloader Samsung Galaxy Z Fold4 (SM-F9360, SM8450, kernel 5.10.236, firmware F9360ZCSAIZF1): a CVE-2026-43499 (rtmutex UAF, fixed in July-2026 firmware) exploit chain grants temporary kernel-domain root; a custom LD_PRELOAD constructor .so bypasses Samsung's DEFEX execve interceptor to init_module() a KernelSU LKM built with the exact device toolchain (AOSP clang 12.0.5 r416183b) and with LTO disabled — the two factors that make the module loadable and its init executable on this CFI/LTO hardened kernel. Result: su works (uid=0, context=u:r:ksu:s0) and KernelSU Manager v3.2.5 recognizes the kernel. Root is in-memory only: every reboot requires re-running the exploit (~3 min, scripted). All pitfalls and dead ends (fake exports, CRC patching, ksud late-load, LTO function-sections layout) are documented below.
| Élément | Statut |
|---|---|
Root temporaire (domaine noyau kernel:s0) | ✅ Obtenu de manière stable (9 succès consécutifs) |
Chargement du module KernelSU (init_module) | ✅ kernelsu ... Live (O) |
| Exécution complète de l'init KSU | ✅ 15 marqueurs d'instrumentation tous verts |
Commande su | ✅ uid=0(root) gid=0(root) context=u:r:ksu:s0 |
| KernelSU Manager v3.2.5 | ✅ Reconnaît la version du noyau (détection supercall réussie), fonctionne en mode SELinux enforcing |
| Déverrouillage du Bootloader | ❌ Non requis |
| Flash/modification de partition | ❌ Non requis |
Limite intrinsèque : BL verrouillé → le root est purement en mémoire. Après chaque redémarrage, il faut relancer l'exploit + recharger le module (procédure complète ~3 minutes, scriptée). Le daemon en espace utilisateur ksud ne peut pas être déployé (DEFEX intercepte execve, voir §10-4), mais su / supercall / Manager sont tous gérés directement par le sucompat du noyau, sans dépendre de ksud.
Avertissement : rmmod kernelsu provoque immédiatement un panic et un redémarrage de l'appareil (chemin de restauration de la syscall-table sur mémoire protégée par RKP) — ne jamais décharger le module.
fastboot oem unlock n'existe pas ; tout root persistant (magisk/kernel patch) nécessite de flasher boot.img, or un BL verrouillé refuse toute image auto-signée.CONFIG_CFI_CLANG=y + Full LTO. La seule source de mod->init est l'emplacement de la jump-table CFI __cfi_jt_init_module ; tout appel indirect doit passer par une entrée de la table .cfi_jt, sinon la vérification CFI provoque un panic immédiat.__ksymtab, un insmod classique ne peut pas les résoudre (Unknown symbol).IGNORE_MODVERSIONS/IGNORE_VERMAGIC mènent tous à try_to_force_load(), une impasse.sarabpal-dev/IonStack-S22U (b0q / S22U, route exp32)..so en LD_PRELOAD est le seul canal d'exemption pour exécuter du code arbitraire dans le domaine root.ksud late-load) est justement conçu pour les appareils à BL verrouillé : pas de flash de boot, init_module directement à l'exécution.┌─ Couche 1 : root temporaire CVE-2026-43499
│ exploit ionstack-q4q (fuite KASLR → mm reclaim → stamp de pile 32 bits exp32
│ → CFI r/w → pipe physrw → daemon root UMH)
│ → /data/local/tmp/cve-2026-43499-root -c '<cmd>' = canal de commande root domaine kernel:s0
│
├─ Couche 2 : canal de chargement .so via LD_PRELOAD (contournement DEFEX)
│ DEFEX intercepte execve de tout nouvel ELF dans le domaine kernel (Killed) ; le constructor
│ LD_PRELOAD est exempté → ksu-load.so dans le processus /system/bin/true :
│ lit le ko → relocalise manuellement 201 symboles UND via /proc/kallsyms (SHN_ABS + st_value=adresse absolue)
│ → patch vermagic (nécessaire pour les anciens ko) → init_module() → succès
│
└─ Couche 3 : module noyau KernelSU (version clang-12 sans LTO)
init s'exécute intégralement, 15 marqueurs tous verts → sucompat (allow_shell=1) + supercall disponibles