
# GhostLock (CVE-2026-43499) für das Galaxy S25 FE (W.I.P)
CVE-2026-43499 portiert auf die Samsung Galaxy S26-Serie — Android 16 / GKI 6.12. Ein Binary, drei Kernel-Zeilen, dynamisches Parameter- Matching zur Laufzeit: deckt theoretisch die gesamte S26-Serie ab, ohne pro-Build-Kompilierung.
Die meisten GhostLock-Portierungsbemühungen zielen auf ein einzelnes Gerät oder eine einzelne Firmware ab. Dieses Repository ist ein frischer Port, der jeden Mechanismus für das S26- Ziel neu schreibt und voraussichtlich die gesamte Familie abdeckt.
Während ich snothin/CyberMeowfia pflegte, stellte ich fest, dass der ursprüngliche Pipe-physrw-Kanal instabil war (er trennte das Netzwerk), also verwarf ich diesen Weg 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
→ ein ausgerichteter Qword-Write pro Runde
→ attr-Carrier (zwei gefälschte Misc-FDs)
Controller-FD retargetet den Datenzeiger
Daten-FD liest/schreibt jede Kernel-Adresse
→ Slide-Oracle (tracefs)
→ UMH-Root (Workqueue-Injection)
system_unbound_wq
ptmx-Open/Close-Sturm weckt einen Worker
Kernel führt Daemon mit Init-Creds aus
→ DEFEX-Bypass (Bind-Mount)
→ su_daemon lauscht auf /data/local/tmp/temp_su.sock
Parameter werden nach Kernel-Zeile abgeglichen (drei Zeilen: cn, intl, exynos), nicht
nach individuellem Build. Unbekannte OTA-Builds fallen auf die nächstbekannte Zeile nach Modell
und CSC zurück. Vollständig unbekannte Modelle werden abgelehnt (Fail-Closed). Die eingebettete
Build-Liste ist maßgeblich in exploit/src/params_table.c.
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
# erzeugt build/bin/preload.so (Exploit) und build/embed/su_daemon_aarch64_pie (eingebetteter Daemon)
preload.so, su_daemon_aarch64_pie und ksud auf das Gerät übertragen (aus einer adb-
Shell-Sitzung ausgeführt, 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
# Einzelner Versuch:
adb shell "env LD_PRELOAD=/data/local/tmp/preload.so sh"
Der Exploit ist probabilistisch (ein Race) und benötigt normalerweise wiederholte Versuche. Bei einem
erfolgreichen Lauf lauscht su_daemon auf /data/local/tmp/temp_su.sock, und jeder
lokale Prozess kann sich verbinden.
Die Boot-Claim-Wache (/data/local/tmp/ghostlock-boot.log) protokolliert das Ergebnis jedes
Boot-Laufs; ein zweiter Vollketten-Lauf im selben Boot wird abgelehnt (er kann das Gerät
abstürzen lassen). Lösche die Datei oder setze BOOT_FORCE=1, um dies zu überschreiben.
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 Code-Herkunft.
| 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 |