
SM-F9360 (Galaxy Z Fold4, q4q) KernelSU-Root bei gesperrtem Bootloader — CVE-2026-43499 temporärer Root → LD_PRELOAD-DEFEX-Bypass → no-LTO clang-12 kernelsu.ko. Am Gerät verifiziert: 2026-08-12.
CVE-2026-43499 temporärer Root → LD_PRELOAD-Kanal umgeht DEFEX → kernelsu.ko ohne LTO mit clang-12 → su + KernelSU Manager voll funktionsfähig
Status: ✅ Am 2026-08-12 auf echtem Gerät verifiziert (Firmware
F9360ZCSAIZF1, Kernel5.10.236-android12-9-2755199-abF9360ZCSAIZF1)Dieses Projekt dokumentiert den vollständigen, reproduzierbaren Ablauf, um auf einem Samsung-Gerät mit gesperrtem Bootloader KernelSU-Root zu erreichen: kein BL-Unlock nötig, kein Flashen von boot.img, kein 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.
| Punkt | Status |
|---|---|
Temporärer Root (Kernel-Domain kernel:s0) | ✅ Stabil erreicht (9 aufeinanderfolgende Erfolge) |
Laden des KernelSU-Moduls (init_module) | ✅ kernelsu ... Live (O) |
| Vollständige Ausführung von KSU init | ✅ Alle 15 Instrumentierungs-Markierungen grün |
su-Befehl | ✅ uid=0(root) gid=0(root) context=u:r:ksu:s0 |
| KernelSU Manager v3.2.5 | ✅ Erkennt Kernelversion (supercall-Prüfung bestanden), funktioniert im SELinux-Enforcing-Modus |
| Bootloader-Entsperrung | ❌ Nicht erforderlich |
| Flashen/Partitionen ändern | ❌ Nicht erforderlich |
Grundlegende Einschränkung: BL-Sperre → Root ist rein speicherbasiert. Nach jedem Neustart muss der Exploit erneut ausgeführt und das Modul neu geladen werden (Gesamtablauf ca. 3 Minuten, bereits skriptgesteuert). Der Userspace-Daemon ksud kann nicht eingesetzt werden (DEFEX blockiert execve, siehe §10-4), aber su / supercall / Manager werden alle direkt vom Kernel-sucompat verarbeitet und sind nicht von ksud abhängig.
Warnung: rmmod kernelsu führt sofort zu einem Panic-Neustart des Geräts (RKP schützt den Wiederherstellungspfad der syscall-Tabelle im Speicher) — niemals entladen.
fastboot oem unlock existiert nicht; jeder persistente Root (magisk/kernel patch) erfordert das Flashen von boot.img, und ein gesperrter BL lehnt jedes selbstsignierte Image ab.CONFIG_CFI_CLANG=y + Full LTO. Die einzige Quelle für mod->init ist der CFI-Jump-Table-Slot __cfi_jt_init_module; indirekte Aufrufe müssen über den .cfi_jt-Tabelleneintrag laufen, sonst führt die CFI-Prüfung direkt zu einem Panic.__ksymtab entfernt, ein normales insmod kann sie nicht auflösen (Unknown symbol).IGNORE_MODVERSIONS/IGNORE_VERMAGIC laufen alle in die Sackgasse try_to_force_load().sarabpal-dev/IonStack-S22U (b0q / S22U, exp32-Route).LD_PRELOAD-Constructor-.so ist der einzige Ausnahmekanal, um beliebigen Code in der Root-Domain auszuführen.ksud late-load) wurde genau für Geräte mit gesperrtem BL entwickelt: kein Flashen von boot, direkt zur Laufzeit init_module.┌─ Layer 1: CVE-2026-43499 temporärer Root
│ ionstack-q4q exploit (KASLR-Leak → mm reclaim → exp32 32-bit Stack-Stamp
│ → CFI r/w → pipe physrw → UMH root daemon)
│ → /data/local/tmp/cve-2026-43499-root -c '<cmd>' = Root-Befehlskanal in der kernel:s0-Domain
│
├─ Layer 2: LD_PRELOAD-.so-Ladekanal (DEFEX-Umgehung)
│ DEFEX blockiert execve jedes neuen ELF in der Kernel-Domain (Killed); die Constructor-
│ Ausführung von LD_PRELOAD ist ausgenommen → ksu-load.so im Prozess /system/bin/true:
│ liest ko → manuelle Relokation von 201 UND-Symbolen über /proc/kallsyms (SHN_ABS + st_value=absolute Adresse)
│ → vermagic-Patch (bei älteren Versionen nötig) → init_module() → Erfolg
│
└─ Layer 3: KernelSU-Kernelmodul (Version ohne LTO mit clang-12)
init vollständig ausgeführt, alle 15 Markierungen grün → sucompat (allow_shell=1) + supercall verfügbar