
CVE-2026-43499 (GhostLock) ASUS ROG Phone 5S 대응 버전 — UAF 트리거 + pselect 스택 재점유, KASLR 유출 차단
ASUS ROG Phone 5S(ASUS_I005)에서의 CVE-2026-43499 (GhostLock) 적응 연구.
결론: 취약점 트리거와 스택 회수는 완전히 검증되었으나, 권한 상승 체인은 스택 덮어쓰기 깊이가 부족하여 완료되지 못했다.
구체적으로:
waiter+0x28..0x40(pi_tree_entry.rb_left 및 lock)을 덮어써야 함waiter+0x27까지만 덮어씀상세 분석은 docs/05-limitations.md를 참조.
| 단계 | 내용 | 상태 |
|---|---|---|
| 0 | UAF 트리거 (3 스레드 + CMP_REQUEUE_PI) | ✅ |
| 1 | pselect timeout=0 스택 회수 (shift=10) | ✅ |
| 1.6 | W 커널 스택 SP 누출 (perf PERF_SAMPLE_REGS_INTR) | ✅ |
| 2 | 임의 주소 쓰기 (KASLR slide 필요) | ❌ |
| — | KASLR 누출 (8가지 소스 모두 실패) | ❌ |
| 항목 | 값 |
|---|---|
| 기기 | ASUS ROG Phone 5S (ASUS_I005) |
| SoC | Snapdragon 888 (SM8350) |
| Android | 13 |
| 커널 | 5.4.210-qgki-perf-gc89cd02a7dfe arm64 |
| SELinux | Enforcing (u:r🐚s0) |
| CapEff | 0 |
CVE-2026-43499 (GhostLock)은 Linux 커널 rtmutex 하위 시스템의 스택 UAF입니다.
remove_waiter()는 프록시 잠금 롤백 경로에서 waiter->task 대신 current를 사용하여,
task_struct->pi_blocked_on에 댕글링 포인터가 남게 됩니다.
_copy_from_user는 여전히 실행됨PSELECT_WAITER_WORD_SHIFT = 10docs/05-limitations.md 참조:
docs/ 분석 문서 및 타임라인
06-research-snapshot.md 전체 연구 스냅샷07-iteration-log.md 실패 버전 기록disasm/ 주요 디스어셈블리 조각recon/ 정찰 출력include/ 심볼 테이블 + 구조체 오프셋src/ PoC 소스 코드(상세는 src/README.md 참조)scripts/ 분석 스크립트logs/ 실행 로그(git에 포함하지 않음)# 1. 심볼 및 오프셋 추출(ASUS 공식 커널 소스로 컴파일한 vmlinux 필요)
./scripts/extract_symbols.sh
./scripts/gen_symbols_h.sh
./scripts/extract_offsets.sh
# 2. Stage 0 컴파일
aarch64-linux-gnu-gcc -static -O2 -pthread \
-o ~/tmp/work/bin/poc_stage0_trigger src/poc_stage0_trigger.c
# 3. 기기에서 실행 (대상 기기로 adb shell 필요)
adb shell /data/local/tmp/poc_stage0_trigger
툴체인: aarch64-linux-gnu-gcc -static -O2 -pthread
참고
· gitchw/ghostlock-cve-2026-43499 Huawei Watch 4 Pro, 5.4.210 (ARM32)
· ccp-p/ghostlock-cve-2026-43499-4.19-k40 Redmi K40, 4.19.157 (aarch64)
· JoinChang/ghostlock-oneplus OnePlus 다중 기기, 스택 레이아웃 실행 가능성
· knowlily/cve-2026-43499-honor Honor 실패 분석
면책 조항
보안 연구 목적으로만 사용하십시오. 승인되지 않은 기기에는 사용하지 마십시오.