
Galaxy S26용 GhostLock (CVE-2026-43499)
삼성 Galaxy S26 시리즈로 포팅된 CVE-2026-43499 — Android 16 / GKI 6.12. 단일 바이너리, 3개 커널 라인, 런타임 동적 파라미터 매칭: 빌드별 컴파일 없이 이론적으로 전체 S26 시리즈를 지원합니다.
대부분의 GhostLock 포팅 작업은 단일 기기 또는 단일 펌웨어만을 대상으로 합니다. 이 저장소는 S26 타깃을 위해 모든 메커니즘을 다시 작성한 새로운 포팅이며, 전체 제품군을 포괄할 것으로 기대됩니다.
snothin/CyberMeowfia를 유지 관리하면서 원래 pipe physrw 채널이 불안정하다는 것을 발견했습니다(네트워크를 끊어버렸습니다). 그래서 그 경로를 버리고 대안을 탐색했습니다. 나중에 monovibe가 제가 탐색하던 길에서 더 나아가 있다는 것을 알게 되어 그 접근 방식을 채택했고, 반복적인 디버깅 끝에 이 저장소가 만들어졌습니다.
uid=0(root) context=u:r:kernel:s0로 실행됩니다. 추상 유닉스 소켓의 su_daemon을 통한 영구 루트 셸.system_unbound_wq에서 함수가 call_usermodehelper_exec_work인 work_struct를 위조하므로 커널이 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 셸 세션, 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에서 수신 대기하며, 모든 로컬 프로세스가 연결할 수 있습니다.
부팅 클레임 가드(/data/local/tmp/ghostlock-boot.log)는 각 부팅 실행 결과를 기록합니다. 동일한 부팅에서 두 번째 전체 체인 실행은 거부됩니다(기기가 충돌할 수 있음). 파일을 지우거나 BOOT_FORCE=1을 설정하여 무시할 수 있습니다.
exploit/src/kernelsnitch/에 vendored)이 저장소는 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 |