
Redmi K50G/POCO F4 GT용 로컬 권한 상승 익스플로잇으로, CVE-2026-43499(futex UAF)를 사용하여 임시 루트 권한을 획득하고 부트로더 잠금 해제 없이 KernelSU를 로드합니다.
BL 언락 없이 원클릭 임시 Root. GhostLock(CVE-2026-43499, futex PI Use-After-Free) 로컬 권한 상승 체인을 이용해 root 앵커를 획득한 뒤, KernelSU 3.3.0 late-load 방식으로 kernelsu 모듈을 실행 중인 커널에 마운트하고, KSU 모듈과 함께 SELinux Permissive를 유지하고 네트워크를 복구합니다.
대상 기기: Redmi K50G / POCO F4 GT —— 코드명
ingres, SoC SM8450 (Snapdragon 8 Gen 1) 시스템: Android 14, UKQ1.240624.001, 커널 5.10.209-android12 (KMIandroid12-5.10) 상태: ✅ 실기 검증 임시 Root 성공
| 파일 | 역할 |
|---|---|
exploit | GhostLock 권한 상승 바이너리 (ARM64 PIE, strip되지 않음). 내부에 KernelSnitch mm 충돌 위치 탐지, futex PI UAF 스택 덮어쓰기, 커널 앵커 root, su daemon, 내장 libksud.so 및 KSU late-load 로직 포함 |
Root-K50G.bat | Windows 원클릭 스크립트 (자신의 디렉터리 기준으로 파일 탐색, 더블클릭으로 바로 사용): 기기 감지 → 파일 푸시 → 권한 상승 실행 → 바로 root shell 진입 |
ksu_loader.sh | 이미 root인 커널 앵커에 의해 실행됨: libksud.so late-load --kmi 5.10.209-android12로 KernelSU를 로드하고, 이어서 post-fs-data / services / boot-completed 단계를 순차적으로 트리거 |
ksu-module/chuxin_permissive_netfix/ | KernelSU 모듈 (module.prop + service.sh): 2초마다 enforce=0을 감시하고, 변조 방지 속성을 재설정하며, netd를 재시작하고, wifi/데이터를 켜서 네트워크 끊김을 복구 |
adb/ | 내장 adb 도구 (포터블, 설치 불필요) |
adb驱动无需重启.exe | Xiaomi 드라이버 원클릭 설치 도구 |
전체 체인은 네 단계로 나뉩니다:
FUTEX_WAIT_REQUEUE_PI + FUTEX_CMP_REQUEUE_PI)로 커널 스택에 댕글링된 rt_mutex_waiter를 생성;rt_mutex_adjust_prio_chain 순회를 트리거하여 제어된 커널 읽기/쓰기 원시 연산을 획득.cred (uid/gid=0, 전체 caps, kernel SID)를 주입하여 root 앵커 프로세스를 획득 (실행 로그의 anchor: ROOT uid=0);SHELL_ROOT=1) 및 su daemon (SU_DAEMON=1, /data/local/tmp/su).kernelsu.ko를 libksud.so late-load --kmi 5.10.209-android12로 실행 중인 커널에 로드 (플래싱/boot 이미지 패치 불필요, 기기의 현재 KMI와 정확히 일치);ksu_loader.sh가 post-fs-data, services, boot-completed를 순차적으로 실행하여 KernelSU 관리 프레임워크(ksud)가 정상적으로 기동되도록 함.chuxin_permissive_netfix를 /data/adb/modules/에 설치: 해당 service는 ksu 도메인에서 실행되며 (security:setenforce 권한 보유), 2초마다 enforce를 0으로 되돌려 ksud가 boot-completed 후 SELinux를 Enforcing으로 되돌리는 동작을 상쇄 (su socket AVC 거부 + 네트워크 끊김 방지);ro.boot.flash.locked / verifiedbootstate / 보증 비트 속성을 재설정하고 netd를 재시작하여 Root 후 네트워크를 복구.Root-K50G.bat을 더블클릭;id를 입력하여 uid=0(root) 확인;/data/local/tmp/su -c id로도 확인 가능.adb push exploit /data/local/tmp/exploit
adb push ksu_loader.sh /data/local/tmp/ksu_loader.sh
adb shell chmod 755 /data/local/tmp/exploit /data/local/tmp/ksu_loader.sh
adb shell "env NO_COLOR=1 SE_LINUX=1 KSU_LOADER=1 SHELL_ROOT=1 SU_DAEMON=1 SUSPECT_CPU=99999 KS_MAX_TRIES=8 /data/local/tmp/exploit"
실행 완료 후 검증:
adb shell /data/local/tmp/su -c id
# uid=0(root) gid=0(root) ...
| 변수 | 기본값 | 의미 |
|---|---|---|
NO_COLOR | 0 | 컬러 로그 비활성화 |
SE_LINUX | 0 | SELinux Permissive flip 활성화 (커널 앵커 직접 쓰기 enforce) |
KSU_LOADER | 0 | root 앵커 내에서 ksu_loader.sh 실행 (KernelSU late-load) |
SHELL_ROOT | 0 | 앵커 내에서 root shell fork |
SU_DAEMON | 0 | 앵커 내에서 /data/local/tmp/su daemon 시작 |
SUSPECT_CPU | - | 의심 CPU 지정 (앵커 바인딩), 99999는 자동을 의미 |
KS_MAX_TRIES | - | KernelSnitch mm 충돌/앵커 시도 상한 |
chuxin_permissive_netfix 모듈의 service.sh가 자동으로 속성을 재설정하고 netd를 재시작합니다 (LSPosed 등 모듈을 플래시한 후에도 유효);본 저장소의 내용은 보안 연구 및 개인 기기 테스트 목적으로만 사용해야 합니다. 권한 상승/시스템 상태 수정은 일정한 위험이 있으며, 잘못 조작할 경우 기기가 벽돌이 되거나 데이터가 손실될 수 있습니다. 원리를 완전히 이해하고 그 결과를 스스로 감수하는 전제하에 사용하시기 바라며, 불법적인 용도로 사용하지 마십시오.
참고: CVE-2026-43499 (GhostLock) — Linux 커널 futex 우선순위 상속 UAF, 2.6.39 ~ 7.1 커널에 영향, 로컬 권한 상승 가능.