
SM-F9360 (Galaxy Z Fold4, q4q) root de KernelSU con bootloader bloqueado — root temporal CVE-2026-43499 → bypass de DEFEX con LD_PRELOAD → kernelsu.ko clang-12 sin LTO. Verificado en el dispositivo: 2026-08-12.
CVE-2026-43499 root temporal → canal LD_PRELOAD para eludir DEFEX → kernelsu.ko compilado con clang-12 sin LTO → su + KernelSU Manager con funcionalidad completa
Estado: ✅ Verificado en dispositivo real el 2026-08-12 (firmware
F9360ZCSAIZF1, kernel5.10.236-android12-9-2755199-abF9360ZCSAIZF1)Este proyecto documenta el proceso completo y reproducible para lograr root con KernelSU en un dispositivo Samsung con Bootloader bloqueado: no requiere desbloquear el BL, no requiere flashear boot.img, no requiere 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.
| Elemento | Estado |
|---|---|
Root temporal (dominio de kernel kernel:s0) | ✅ Logrado de forma estable (9 éxitos consecutivos) |
Carga del módulo KernelSU (init_module) | ✅ kernelsu ... Live (O) |
| Ejecución completa del init de KSU | ✅ 15 marcas de instrumentación en verde |
Comando su | ✅ uid=0(root) gid=0(root) context=u:r:ksu:s0 |
| KernelSU Manager v3.2.5 | ✅ Reconoce la versión del kernel (detección supercall superada), funciona en modo SELinux enforcing |
| Desbloqueo de Bootloader | ❌ No necesario |
| Flasheo/modificación de particiones | ❌ No necesario |
Limitación esencial: BL bloqueado → el root es puramente en memoria. Tras cada reinicio hay que reejecutar el exploit y recargar el módulo (proceso completo ~3 minutos, ya automatizado con scripts). El daemon en espacio de usuario ksud no puede desplegarse (DEFEX intercepta execve, ver §10-4), pero su / supercall / Manager son gestionados directamente por el sucompat del kernel, sin depender de ksud.
Advertencia: rmmod kernelsu provoca un panic y reinicio inmediato del dispositivo (ruta de restauración de la syscall-table sobre memoria protegida por RKP) — nunca lo descargues.
fastboot oem unlock no existe; cualquier root persistente (magisk/kernel patch) requiere flashear boot.img, y un BL bloqueado rechaza toda imagen autofirmada.CONFIG_CFI_CLANG=y + Full LTO. La única fuente de mod->init es la ranura de la jump-table de CFI __cfi_jt_init_module; las llamadas indirectas deben pasar por la entrada de la tabla .cfi_jt, de lo contrario la comprobación CFI provoca panic directo.__ksymtab, un insmod normal no puede resolverlos (Unknown symbol).IGNORE_MODVERSIONS/IGNORE_VERMAGIC van todos a try_to_force_load(), un callejón sin salida.sarabpal-dev/IonStack-S22U (b0q / S22U, ruta exp32)..so de LD_PRELOAD es el único canal exento para ejecutar código arbitrario en el dominio root.ksud late-load) está diseñado precisamente para dispositivos con BL bloqueado: sin flashear boot, init_module directamente en tiempo de ejecución.┌─ Capa 1: CVE-2026-43499 root temporal
│ exploit ionstack-q4q (fuga de KASLR → mm reclaim → stamp de pila de 32 bits exp32
│ → CFI r/w → pipe physrw → daemon root UMH)
│ → /data/local/tmp/cve-2026-43499-root -c '<cmd>' = canal de comandos root en dominio kernel:s0
│
├─ Capa 2: canal de carga .so vía LD_PRELOAD (elusión de DEFEX)
│ DEFEX intercepta execve de cualquier nuevo ELF en el dominio kernel (Killed); el constructor
│ de LD_PRELOAD está exento → ksu-load.so dentro del proceso /system/bin/true:
│ lee el ko → reubica manualmente 201 símbolos UND vía /proc/kallsyms (SHN_ABS + st_value=dirección absoluta)
│ → patch de vermagic (necesario en versiones antiguas) → init_module() → éxito
│
└─ Capa 3: módulo de kernel KernelSU (versión clang-12 sin LTO)
init se ejecuta completo, 15 marcas en verde → sucompat (allow_shell=1) + supercall disponibles