
SM-F9360 (Galaxy Z Fold4, q4q) root KernelSU con bootloader bloccato — CVE-2026-43499 root temporaneo → bypass di DEFEX via LD_PRELOAD → kernelsu.ko clang-12 senza LTO. Verificato sul dispositivo 2026-08-12.
CVE-2026-43499 root temporaneo → bypass DEFEX tramite canale LD_PRELOAD → kernelsu.ko versione clang-12 senza LTO → su + KernelSU Manager completamente funzionanti
Stato: ✅ Verificato su dispositivo reale il 2026-08-12 (firmware
F9360ZCSAIZF1, kernel5.10.236-android12-9-2755199-abF9360ZCSAIZF1)Questo progetto documenta la procedura completa e riproducibile per ottenere il root con KernelSU su un dispositivo Samsung con Bootloader bloccato: non serve sbloccare il BL, non serve flashare boot.img, non serve Odin.
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.
| Voce | Stato |
|---|---|
Root temporaneo (dominio kernel kernel:s0) | ✅ Ottenuto stabilmente (9 successi consecutivi) |
Caricamento modulo KernelSU (init_module) | ✅ kernelsu ... Live (O) |
| Esecuzione completa dell'init KSU | ✅ Tutti i 15 mark verdi |
Comando su | ✅ uid=0(root) gid=0(root) context=u:r:ksu:s0 |
| KernelSU Manager v3.2.5 | ✅ Riconosce la versione del kernel (supercall rilevata), funziona in modalità SELinux enforcing |
| Sblocco Bootloader | ❌ Non necessario |
| Flash/modifica partizioni | ❌ Non necessario |
Limite intrinseco: BL bloccato → il root è puramente in-memory. Dopo ogni riavvio è necessario rieseguire l'exploit e ricaricare il modulo (procedura completa ~3 minuti, già scriptata). Il daemon userspace ksud non può essere installato (DEFEX blocca execve, vedi §10-4), ma su / supercall / Manager sono gestiti direttamente dal sucompat del kernel, senza dipendere da ksud.
Attenzione: rmmod kernelsu causa un panic immediato con riavvio del dispositivo (percorso di ripristino della syscall-table su memoria protetta da RKP) — non scaricare mai il modulo.
fastboot oem unlock non esiste; qualsiasi root persistente (magisk/kernel patch) richiede il flash di boot.img, e il BL bloccato rifiuta qualsiasi immagine non firmata.CONFIG_CFI_CLANG=y + Full LTO. L'unica fonte di mod->init è lo slot della CFI jump-table __cfi_jt_init_module; le chiamate indirette devono passare dalla voce della tabella .cfi_jt, altrimenti il controllo CFI causa direttamente un panic.__ksymtab, il normale insmod non riesce a risolverli (Unknown symbol).IGNORE_MODVERSIONS/IGNORE_VERMAGIC finiscono tutti nel vicolo cieco try_to_force_load().sarabpal-dev/IonStack-S22U (b0q / S22U, route exp32)..so in LD_PRELOAD è l'unico canale esente per eseguire codice arbitrario nel dominio root.ksud late-load) è progettata proprio per dispositivi con BL bloccato: senza flashare il boot, esegue init_module a runtime.┌─ Layer 1: CVE-2026-43499 root temporaneo
│ exploit ionstack-q4q (leak KASLR → mm reclaim → exp32 stamp a 32-bit sullo stack
│ → CFI r/w → pipe physrw → UMH root daemon)
│ → /data/local/tmp/cve-2026-43499-root -c '<cmd>' = canale comandi root nel dominio kernel:s0
│
├─ Layer 2: canale di caricamento .so via LD_PRELOAD (bypass DEFEX)
│ DEFEX intercetta l'execve di qualsiasi nuovo ELF nel dominio kernel (Killed); il constructor
│ di LD_PRELOAD è esente → ksu-load.so all'interno del processo /system/bin/true:
│ legge il ko → riposiziona manualmente 201 simboli UND tramite /proc/kallsyms (SHN_ABS + st_value=indirizzo assoluto)
│ → patch vermagic (necessaria per versioni precedenti) → init_module() → successo
│
└─ Layer 3: modulo kernel KernelSU (versione clang-12 senza LTO)
init eseguito completamente, 15 mark tutti verdi → sucompat (allow_shell=1) + supercall disponibili
| Voce | Valore |
|---|---|
| Modello | SM-F9360 (Galaxy Z Fold4, q4q) |
| SoC | SM8450 (Snapdragon 8+ Gen 1) |
| Firmware | F9360ZCSAIZF1 (build ≤ 2026-06, contiene la CVE) |
| Kernel | 5.10.236-android12-9-2755199-abF9360ZCSAIZF1 |
| Compilatore del dispositivo | AOSP clang 12.0.5 (r416183b, c935d99d7cf) (confermato da /proc/version) |
| vermagic esatto | 5.10.236-android12-9-2755199-abF9360ZCSAIZF1 SMP preempt mod_unload modversions aarch64 |
Firmware diverso = kallsyms / layout / vermagic diversi, richiede riadattamento di target.h e ricompilazione. Vedi §11.