
Samsung Galaxy A17에서 KDP 우회, KASLR 복구, 위조된 workqueue 실행을 통해 루트 권한을 획득하고 지속적 셸을 유지하는 CVE-2026-43499 커널 익스플로잇
Samsung Galaxy A17 SM-A175F(Android 16 / GKI 6.12 실행)에서 **CVE-2026-43499("GhostLock")**에 대한 전체 사용자-루트 익스플로잇 체인입니다.
이 체인은 공개된 GhostLock 프리미티브에서 시작하여 다음 권한으로 실행되는 usermode helper로 끝납니다:
uid=0(root) gid=0(root) groups=0(root)
context=u:r:kernel:s0
또한 g4d / g4sh를 통해 부팅 시마다 지속되는 루트 셸을 시작하고, 커널 패닉 없이 종료합니다.
📖 전체 기술 분석 문서:
https://www.mobilehackinglab.com/blog/cve-2026-43499-ghostlock-a17-root-shell
연구 노트
우리는 CVE-2026-43499를 발견하지 않았습니다. 원본 취약점 및 IonStack 연구에 대한 공로는 Nebula Security에 있습니다.
이 저장소는 Samsung Galaxy A17로의 독자적 포팅, Samsung 커널 보호 기능에 필요한 변경 사항, 그리고 새로운 최종 익스플로잇 단계를 문서화합니다.
승인된 보안 연구 및 교육 목적으로만 사용하십시오.
| CVE | CVE-2026-43499 — "ghostlock" |
| 기기 | Samsung Galaxy A17 (SM-A175F, mt6789) |
| GPU | Mali-G57 |
| 커널 | 6.12.23-android16-5-abA175FXXS3BZA5-4k |
| 결과 | uid=0(root) / u:r:kernel:s0 |
| 루트 셸 | g4d 데몬 + g4sh 클라이언트 |
| 지속성 | 부팅 시마다 |
| 익스플로잇 종료 | 클린 종료, 커널 패닉 없음 |
| 적용된 보호 기법 | Samsung KDP, DEFEX, SELinux, PANIC_ON_OOPS, arm64 KASLR |
원본 ghostlock 연구는 진입 프리미티브를 제공합니다:
pselect reclaim
↓
fake rt_mutex_waiter
↓
constrained rb-tree pointer write
하지만 Galaxy A17에서는 표준 자격 증명 패치(credential-patching) 종착 단계가 작동하지 않습니다.
KDP는 EL2에서 자격 증명 관련 커널 데이터를 보호합니다.
이 빌드에서는 대상 주소가 정확하더라도 태스크 자격 증명을 수정하려는 시도가 조용히 무시되었습니다.
따라서 이 포팅은 루트 자격 증명을 쓰는 대신 커널이 기존의 권한 있는 자격 증명으로 실행되도록 합니다.
최종 단계:
constrained kernel write
↓
physical read/write channel
↓
KASLR slide recovery
↓
discover system_wq / cpu_pwq
↓
forge work_struct
↓
call_usermodehelper_exec_work
↓
/system/bin/sh
↓
uid=0(root), u:r:kernel:s0
위조된 작업 항목이 바인딩된 system_wq 풀에 배치되고 ptmx 할당/해제 폭풍으로 트리거됩니다.
그 결과 usermode helper가 init 자격 증명으로 실행됩니다.
태스크 자격 증명 덮어쓰기는 필요하지 않습니다.
userspace shell (uid 2000)
│
▼
pselect / PI-futex primitive
│
▼
constrained aligned kernel pointer write
│
▼
forged pipe_buffer channel
│
▼
arbitrary physical read/write
│
├── recover KASLR slide
│
├── locate system_wq / cpu_pwq
│
└── prepare forged work_struct
│
▼
queue usermode-helper work
│
▼
ptmx storm wakes worker
│
▼
/system/bin/sh runs with init creds
│
▼
uid=0(root)
│
▼
g4d → @ghostlockd → g4sh
공개된 OnePlus 포팅과 비교했을 때, 초기 쓰기 프리미티브 이후의 대부분 단계가 재작업되었습니다.
자격 증명 패치 종착 단계는 usermode-helper 실행 경로를 대상으로 하는 위조 workqueue 항목으로 대체되었습니다.
이를 통해 보호된 cred 구조체에 대한 쓰기를 완전히 피할 수 있습니다.
이전의 perf-event 앵커링 방식은 이 기기에서 신뢰할 수 없었습니다.
대신, 이 익스플로잇은 boot_id ctl_table 항목에서 세 개의 슬라이드된 포인터를 사용합니다:
procname
data
proc_handler
세 값 모두 슬라이드를 채택하기 전에 상호 검증됩니다.
cpu_pwq는 다음을 순회하여 발견됩니다:
system_wq → pwqs
고정된 기기별 오프셋에 의존하는 대신입니다.
원본 채널은 struct page 상태에 부수적인 변경을 남겨 정리(teardown) 중 PANIC_ON_OOPS를 유발할 수 있습니다.
현재 체인은 정리 과정의 크래시를 피하며, 루트 획득 후 클린하게 종료되는 것이 입증되었습니다.
usermode helper는 다음을 시작합니다:
g4d
이는 다음 추상 Unix 소켓에서 수신 대기합니다:
@ghostlockd
g4sh는 이 소켓에 연결하여 대화형 루트 셸 또는 일회성 명령 실행을 제공합니다.
/data/local/tmp/a/g4sh
/data/local/tmp/a/g4sh -c "id"
이 대상은 일반적인 Android 커널 익스플로잇 기법을 무력화하는 여러 보호 기능을 결합하고 있습니다:
이로 인해 일반적인 방식과 다른 익스플로잇 전략이 필요해졌습니다:
arbitrary RW → patch cred → disable SELinux
대신:
arbitrary RW → recover runtime state → forge kernel work → execute usermode helper
최신 Android NDK가 필요합니다.
make
다음을 생성합니다:
ghostlock # exploit
g4d # static root-shell daemon
g4sh # root-shell client
바이너리를 푸시합니다:
adb push ghostlock /data/local/tmp/a/g4
adb push g4d /data/local/tmp/a/g4d
adb push g4sh /data/local/tmp/a/g4sh
adb shell 'chmod 755 /data/local/tmp/a/g4 /data/local/tmp/a/g4d /data/local/tmp/a/g4sh'
재부팅을 고려한 익스플로잇 루프를 실행합니다:
./scripts/rr_loop4.sh
ROOTED 이후:
adb shell /data/local/tmp/a/g4sh
또는 단일 명령을 실행합니다:
adb shell '/data/local/tmp/a/g4sh -c "id"'
예상 결과:
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
이 프리미티브는 확률적이며 부팅 조건에 크게 의존합니다.
성공적인 익스플로잇에는 반복적인 시도가 필요할 수 있습니다. 포함된 rr_loop4.sh 스크립트가 재시도 및 재부팅 주기를 자동으로 처리합니다.
이것은 즉각적인 원샷 루팅 도구가 아니라 연구용 익스플로잇입니다.
qemu-e2e/에는 추출된 Samsung 커널을 사용하는 종단 간 검증 하네스가 포함되어 있습니다.
이 하네스는 다음을 테스트하는 데 사용되었습니다:
g4d / g4sh 왕복(round trip)Samsung 커널 이미지 자체는 포함되어 있지 않습니다.
설정 지침은 다음을 참조하십시오:
qemu-e2e/
Makefile
src/ exploit source and device profiles
src/daemon/ g4d root daemon + g4sh client
docs/OFFSETS.md validated device offsets
docs/PORTING.md porting notes
examples/ proof-of-root artifacts
scripts/rr_loop4.sh reboot-aware exploit loop
qemu-e2e/ end-to-end QEMU validation
NebuSec:
https://nebusec.ai/research/ionstack-part-3/
https://github.com/NebuSec/CyberMeowfia/tree/main/IonStack
https://github.com/JoinChang/ghostlock-oneplus
Samsung Galaxy A17 포팅, KDP 제한 사항, KASLR 복구, workqueue 기반 최종 단계 및 루트 셸 구현에 대한 심층 분석:
https://www.mobilehackinglab.com/blog/cve-2026-43499-ghostlock-a17-root-shell
실제 기기 아티팩트는 다음에서 확인할 수 있습니다:
examples/
익스플로잇 로그 및 루트 컨텍스트 검증이 포함됩니다.
예시:
uid=0(root)
gid=0(root)
groups=0(root)
context=u:r:kernel:s0
이 개념 증명(PoC)은 교육 및 승인된 보안 연구 목적으로만 제공됩니다.
직접 소유하거나 테스트에 대한 명시적 허가를 받은 기기 및 환경에서만 사용하십시오.