
GhostLock (CVE-2026-43499) für das Galaxy S26
CVE-2026-43499, portiert auf die Samsung-Galaxy-S26-Serie — Android 16 / GKI 6.12. Ein Binary, drei Kernel-Linien, dynamisches Parameter-Matching zur Laufzeit: deckt theoretisch die gesamte S26-Serie ab, ohne Kompilierung pro Build.
Die meisten GhostLock-Portierungen zielen auf ein einzelnes Gerät oder eine einzelne Firmware. Dieses Repository ist ein neuer Port, der jeden Mechanismus für das S26-Ziel neu umsetzt und voraussichtlich die gesamte Familie abdeckt.
Während ich snothin/CyberMeowfia betreute, stellte ich fest, dass der ursprüngliche Pipe-physrw-Kanal instabil war (er kappte die Netzwerkverbindung), also verwarf ich diese Route und erkundete Alternativen. Später fand ich heraus, dass monovibe auf dem von mir erkundeten Weg weiter fortgeschritten war, übernahm den Ansatz, und nach wiederholtem Debugging nahm dieses Repository Gestalt an.
uid=0(root) context=u:r:kernel:s0; persistente
Root-Shell über su_daemon auf einem abstrakten Unix-Socket.work_struct auf
system_unbound_wq, deren Funktion call_usermodehelper_exec_work ist, sodass der
Kernel unseren Daemon mit Init-Creds ausführt. KDPs EL2-Schutz auf Credential-Seiten
wird nie ausgelöst.pselect + futex PI race
→ one aligned qword write per round
→ attr carrier (two fake misc fds)
controller fd retargets the data pointer
data fd reads/writes any kernel address
→ slide oracle (tracefs)
→ UMH root (workqueue injection)
system_unbound_wq
ptmx open/close storm wakes a worker
kernel execs daemon with init creds
→ DEFEX bypass (bind-mount)
→ su_daemon listens on /data/local/tmp/temp_su.sock
Die Parameter werden anhand der Kernel-Linie abgeglichen (drei Linien: cn, intl,
exynos), nicht nach individuellem Build. Unbekannte OTA-Builds fallen auf die nächstgelegene
bekannte Linie zurück (anhand von Modell und CSC). Völlig unbekannte Modelle werden abgelehnt
(Fail-Closed). Die eingebettete Build-Liste ist in
exploit/src/params_table.c maßgeblich. Siehe PORTING.md
für die Parameter, die beim Portieren auf ein neues Gerät oder eine neue Firmware benötigt werden.
Erfordert Android NDK (r26+). Einfach ausführen:
cd exploit
make preload
# produces build/bin/preload.so (exploit) and build/embed/su_daemon_aarch64_pie (embedded daemon)
Übertragen Sie preload.so, su_daemon_aarch64_pie und ksud auf das Gerät (aus einer
adb-Shell-Sitzung auszuführen, uid 2000):
adb push exploit/build/bin/preload.so /data/local/tmp/
adb push exploit/build/embed/su_daemon_aarch64_pie /data/local/tmp/cve-2026-43499-root
adb push <ksud> /data/local/tmp/ksud
adb shell chmod 755 /data/local/tmp/cve-2026-43499-root /data/local/tmp/ksud
# Single attempt:
adb shell "env LD_PRELOAD=/data/local/tmp/preload.so sh"
Der Exploit ist probabilistisch (ein Race) und benötigt in der Regel mehrere Versuche. Bei
einem erfolgreichen Lauf lauscht su_daemon auf /data/local/tmp/temp_su.sock, und jeder
lokale Prozess kann sich verbinden.
Der Boot-Claim-Guard (/data/local/tmp/ghostlock-boot.log) protokolliert das Ergebnis jedes
Boot-Laufs; ein zweiter vollständiger Full-Chain-Lauf im selben Boot wird abgelehnt (er kann das
Gerät zum Absturz bringen). Löschen Sie die Datei oder setzen Sie BOOT_FORCE=1, um die Sperre zu umgehen.
exploit/src/kernelsnitch/)Dieses Repository wird unter der Apache-2.0-Lizenz veröffentlicht; siehe LICENSE für den vollständigen Text und NOTICE für die Herkunft des Codes.
| Modell | Geräte-Codename | Getestete Builds |
|---|
| SM-S942x (S26 Snapdragon) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ Snapdragon) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra CN) | m3q | S9480ZCS3AZF1, S9480ZCS4AZG1 (getesteter Build) |
| SM-S948x (S26 Ultra) | m3q | S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3 |
| SM-S942B (S26 Exynos) | m1s | S942BXXS4AZG5 |
| SM-S947B (S26+ Exynos) | m2s | S947BXXS3AZF1, S947BXXS4AZG5 |