
Verwenden Sie CVE-2026-43499, um SELinux auf Android zu deaktivieren
Eine Nur-Write-1-Extraktion von
JoinChang/ghostlock-oneplus
für CVE-2026-43499. Sie
deaktiviert SELinux enforcing auf unterstützten, verwundbaren OnePlus-Kerneln
mit gesperrtem Bootloader und tut nichts weiter: kein Cred-Overwrite, keine
Root-Shell, kein KernelSU, kein Bootstrap und kein KASLR-Leak.
CVE-2026-43499 ist eine Use-after-Free-Schwachstelle im Linux-Kernel-rtmutex im
Futex-PI-Requeue-Pfad. Während des Proxy-Lock-Rollbacks arbeitet
remove_waiter() auf current statt auf der Task des Warters, sodass der
pi_blocked_on-Zeiger des Warters verwaist zurückbleibt. Der Fehler ist
upstream in Linux 6.12.86 und neueren 6.12-Versionen behoben.
Ein einzelner Child-Node-PI-Write:
fake_right = base + 0x100 -> byte0 = 0 (enforcing), byte1 = 1
Es nutzt den Heap-Spray + pselect-PI-Pfad des vollständigen Exploits erneut,
umgeht jedoch KASLR (kaslr_slide = 0). Es wiederholt den Vorgang bis zu 20-mal
(mit Slab-Draining zwischen den Versuchen) und beendet sich, sobald
/sys/fs/selinux/enforce den Wert 0 ausgibt.
| Entfernt | Grund |
|---|---|
slide.c | KASLR-SLIDE-Leak — nicht benötigt (Slide = 0) |
pipe.c | Pipe-basiertes physisches R/W — nur von der CFI-/Root-Stufe verwendet |
root.c | Cred-Patching / install_android_root — nur Write 2 |
miniadb.c | Bootstrap-Mini-ADB-Client — nicht verwendet |
try_cfi_stage, install_child_root, repair/refresh/leak/restore-Helfer (fops.c) | CFI-/KASLR-Leak-/Pipe-physrw-Stufe — wird auf dem Custom-Write-Pfad nie erreicht |
perf_find_task, spawn_child, write_root_script, run_exploit, run_bootstrap (main.c) | Write 2 (cred → init_cred), Root-Shell, KSU, Bootstrap |
Die gemeinsame Primitive (util.c-Heap-Spray, fops.c-Pselect-Route,
kernelsnitch und Offset-Tabellen) bleibt erhalten.
Siehe src/devices/offsets.h, sortiert nach uname -r:
6.12.38-android16-5-...-ab14275539-4k6.12.38-android16-5-...-ab14552068-4k6.12.23-android16-5-...-ab14541642-4k (nur Offsets, unverifiziert)make # uses /opt/android-ndk (or $ANDROID_NDK_HOME)
Erzeugt selinux_disabler, ein aarch64-PIE für Android API 35.
adb push selinux_disabler /data/local/tmp/a/e && chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e
Überprüfen:
adb shell cat /sys/fs/selinux/enforce # -> 0
Es wird nur boot.img benötigt. Verwende die Extraktionswerkzeuge im
tools-Verzeichnis
des Upstream-Projekts und füge dann einen Eintrag unter
src/devices/<device>/offsets.h hinzu und binde ihn per #include in
src/devices/offsets.h ein.
Nur für autorisierte Sicherheitsforschung und Bildungszwecke.