
SM-F9360 (Galaxy Z Fold4, q4q) root via KernelSU com bootloader bloqueado — root temporário via CVE-2026-43499 → bypass do DEFEX via LD_PRELOAD → kernelsu.ko com clang-12 sem LTO. Verificado no dispositivo em 2026-08-12.
CVE-2026-43499 root temporário → canal LD_PRELOAD contorna DEFEX → kernelsu.ko sem LTO compilado com clang-12 → su + KernelSU Manager com funcionalidade completa
Status: ✅ Verificado em dispositivo real em 2026-08-12 (firmware
F9360ZCSAIZF1, kernel5.10.236-android12-9-2755199-abF9360ZCSAIZF1)Este projeto documenta o processo completo e reproduzível para obter root com KernelSU em dispositivos Samsung com Bootloader bloqueado: sem necessidade de desbloquear o BL, sem flash de boot.img, sem 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.
| Item | Status |
|---|---|
Root temporário (domínio de kernel kernel:s0) | ✅ Obtido de forma estável (9 sucessos consecutivos) |
Carregamento do módulo KernelSU (init_module) | ✅ kernelsu ... Live (O) |
| Execução completa do init do KSU | ✅ 15 marcas de instrumentação todas verdes |
Comando su | ✅ uid=0(root) gid=0(root) context=u:r:ksu:s0 |
| KernelSU Manager v3.2.5 | ✅ Reconhece a versão do kernel (detecção via supercall aprovada), funciona em modo SELinux enforcing |
| Desbloqueio de Bootloader | ❌ Não necessário |
| Flash/modificação de partições | ❌ Não necessário |
Limitação essencial: BL bloqueado → root é puramente em memória. Após cada reinicialização é necessário reexecutar o exploit + recarregar o módulo (processo completo leva cerca de 3 minutos, já automatizado por script). O daemon em espaço de usuário ksud não pode ser implantado (DEFEX intercepta execve, ver §10-4), mas su / supercall / Manager são todos tratados diretamente pelo sucompat do kernel, sem depender do ksud.
Aviso: rmmod kernelsu faz o dispositivo entrar em panic e reiniciar imediatamente (caminho de restauração da syscall-table em memória protegida pelo RKP) — nunca descarregue o módulo.
fastboot oem unlock não existe; qualquer root persistente (magisk/kernel patch) exige flash de boot.img, e o BL bloqueado rejeita qualquer imagem autoassinada.CONFIG_CFI_CLANG=y + Full LTO. A única origem de mod->init é o slot da CFI jump-table __cfi_jt_init_module; chamadas indiretas devem passar pela entrada da tabela .cfi_jt, caso contrário a verificação CFI causa panic direto.__ksymtab, impossibilitando a resolução por insmod comum (Unknown symbol).IGNORE_MODVERSIONS/IGNORE_VERMAGIC todos levam ao caminho morto de try_to_force_load().sarabpal-dev/IonStack-S22U (b0q / S22U, rota exp32)..so via LD_PRELOAD é o único canal isento para executar código arbitrário no domínio root.ksud late-load) foi projetado exatamente para dispositivos com BL bloqueado: sem flash de boot, init_module diretamente em tempo de execução.┌─ Camada 1: CVE-2026-43499 root temporário
│ exploit ionstack-q4q (vazamento de KASLR → mm reclaim → stamp de pilha 32-bit exp32
│ → CFI r/w → pipe physrw → daemon root via UMH)
│ → /data/local/tmp/cve-2026-43499-root -c '<cmd>' = canal de comando root no domínio kernel:s0
│
├─ Camada 2: canal de carregamento via .so LD_PRELOAD (bypass de DEFEX)
│ DEFEX intercepta execve de qualquer novo ELF no domínio kernel (Killed); o constructor
│ do LD_PRELOAD é isento → ksu-load.so dentro do processo /system/bin/true:
│ lê o ko → relocaliza manualmente 201 símbolos UND via /proc/kallsyms (SHN_ABS + st_value=endereço absoluto)
│ → patch de vermagic (necessário em versões antigas) → init_module() → sucesso
│
└─ Camada 3: módulo de kernel KernelSU (versão sem LTO com clang-12)
init executa completamente, 15 marcas todas verdes → sucompat (allow_shell=1) + supercall disponíveis