
Exploit-Chain-Forschung zu CVE-2026-43499 auf Samsung Galaxy S21
Funktionierendes, aktives KernelSU-Projekt für dieses Gerät: kurtulusakyuz/dfroot-s21 — dort beginnen. Dieses Repo enthält nur die IonStack-Forschung.
Gerätespezifische IonStack-Nutzlast für das Samsung Galaxy S21 (o1s) auf
Firmware G991BXXSJHZC2. Status: Forschung ABGESCHLOSSEN — deterministisch
nur DoS; der Kernel-Schreibpfad ist auf diesem Build nachweislich unmöglich.
Vollständige Beweise in RESEARCH.md.
| Feld | Wert |
|---|---|
| Modell | SM-G991B |
| Gerät | o1s |
| Firmware | G991BXXSJHZC2 |
| Android | 15 / API 35 (AP3A.240905.015.A2, Fingerprint samsung/o1sxeea/o1s) |
| Seitengröße | 4096 |
| Kernel | 5.4.242-30958140-abG991BXXSJHZC2 |
| SoC | Exynos 2100 |
| Mitigations | CFI+PAC+PAN/UAO, KDP_CRED, SELinux enforcing, kein userfaultfd |
Basiert auf der IonStack-CVE-2026-43499-Implementierung, veröffentlicht in
NebuSec/CyberMeowfia (Upstream b850d3bddc74c3328d5fbcc0568d21962b55d949)
und BuSung-dev/CVE-2026-43499-S25U, mit Dank an F-19-F/IonStackQuest3.
Upstream Apache License 2.0 beibehalten in LICENSE (siehe NOTICE).
Das GhostLock-Schreibprogramm für dieses Gerät ist fertig und abgeschlossen, nicht pausiert. Was bewiesen wurde, der Reihe nach:
remove_waiter() löscht
current->pi_blocked_on anstelle von waiter->task->pi_blocked_on,
sodass ein FUTEX_CMP_REQUEUE_PI-Rollback einen hängenden Zeiger auf einen
Stack-rt_waiter hinterlässt. Der Upstream-Fix 3bfdc63 fehlt in 5.4.242.sched_setattr reproduziert einen geräteidentischen Oops
(rt_mutex_adjust_prio_chain+0x108 → _raw_spin_trylock+0x1c,
Fault-VA 0) sowohl in einem KDP-losen QEMU-Gast als auch auf dem Telefon
selbst (lastkmsg 118/119). Der hängende Slot ist vollständig gemappt
(Stack-Top E-0x328, Lebenszyklus charakterisiert via QEMU+GDB).lock (+0x38) NIEMALS angreiferkontrolliert
ist (15/15 Dumps). Unabhängige Ports (ASUS i005, AQUOS-Sigreturn-Route)
stoßen auf dieselbe Wand. Geometrie, nicht Wahrscheinlichkeit.Verwandte Kernel-LPE-Wege aus 2026 wurden auf diesem Build ebenfalls durch
Firmware-Konfiguration geschlossen (USER_NS, RDS, CRYPTO_USER_API_AEAD
alle nicht gesetzt; MFC-Double-Free unerreichbar mit MFC_USE_DMABUF_CONTAINER=n;
AF_ALG/eBPF für Shell gesperrt). Post-Write-Artefakte
(KernelSU .ko + ksud für genau diese Firmware gebaut) sind separat
bereitgestellt; die src/kernelsnitch/-Header in diesem Baum
bleiben bereitgestellt, aber ungebaut (kein Consumer existiert ohne einen Write).
Makefile build (NDK r27+, ANDROID_NDK_HOME)
src/ exploit source (o1s profile only)
src/targets/o1s-G991BXXSJHZC2/ target.h + p0_fingerprint.h
src/kernelsnitch/ mm_struct leak (futex hash collision, staged)
tools/ p0 fingerprint helper
RESEARCH.md research notes (geometry, verdicts)
export ANDROID_NDK_HOME=/path/to/android-ndk
make clean all
# SLIDE_WRITER_SEL=1|2|3 selects mcast/sigreturn(default)/xattr writers.
# Unset selects the experimental pselect writer (see RESEARCH.md).
Ausgaben (build/o1s-G991BXXSJHZC2/):
cve-2026-43499 (LD_PRELOAD-Nutzlast), cve-2026-43499-app.so (App-Nutzlast),
cve-2026-43499-root (Root-Helfer).
adb push build/o1s-G991BXXSJHZC2/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/o1s-G991BXXSJHZC2/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
# on success:
adb shell "/data/local/tmp/cve-2026-43499-root -c 'id; getenforce'"
Erwartungsmanagement: Auf diesem Build bedeutet „Erfolg" der Trigger-Walk und seine Oracle-Ausgabe — ein NULL-Lock-Walk startet das Gerät neu, anstatt Root zu liefern (siehe „Endzustand" oben). Root, falls jemals über ein zukünftiges Schreibprimitiv erreicht, lebt nur bis zum Neustart; nichts wird geflasht.
/data/local/tmp wird beim
Neustart gelöscht — Binärdateien nach jedem Boot erneut pushen.