
Honor 80 GT 권한 상승 PoC: GhostLock (CVE-2026-43499) + 사용자 정의 KernelSU 모듈 로딩
영어 | 中文
Honor 80 GT (AGT-AN00) 를 위한 로컬 권한 상승 익스플로잇으로,
CVE-2026-43499 — 커널 rtmutex remove_waiter 경로의
use-after-free — 와 함께 제공되는 KernelSU 커널 모듈 로딩 솔루션입니다.
원칙적으로 이 버그와 여기서 사용된 기법들은 9.0.0.230까지의 모든 MagicOS 빌드에 적용됩니다. 적용된 버전:
| MagicOS | 커널 | 상태 |
|---|---|---|
| 8.0.0.128 | 5.10.168 | ✅ 검증됨 |
| 8.0.0.160 | 5.10.209 | ✅ 검증됨 |
| 9.0.0.157 | 5.10.209 | ✅ 검증됨 |
| 9.0.0.200SP1 | 5.10.236 | ✅ 검증됨 |
| 9.0.0.220SP2 / SP4 | 5.10.236 | ✅ 검증됨 (SP4는 SP2와 동일한 부팅 이미지를 제공) |
| 9.0.0.230 | 5.10.236 | ✅ 검증됨 |
| 8.0.0.131 | 5.10.198 | ⚠️ 실제 기기에서 검증되지 않음 |
| 8.0.0.135 / 143 / 150 | 5.10.198 | ⚠️ 실제 기기에서 검증되지 않음 |
| 8.0.0.161 | 5.10.209 | ⚠️ 실제 기기에서 검증되지 않음 |
| 9.0.0.102 / 103 / 120 / 130 / 165 | 5.10.209 | ⚠️ 실제 기기에서 검증되지 않음 (103은 102와 동일한 부팅 이미지를 제공) |
| 9.0.0.175SP1 / 187 | 5.10.226 | ⚠️ 실제 기기에서 검증되지 않음 |
| 9.0.0.210 | 5.10.236 | ⚠️ 실제 기기에서 검증되지 않음 |
⚠️ 경고
- 본인 소유 기기에서의 보안 연구 목적으로만 사용하십시오.
- 사용에 따른 위험은 본인이 감수해야 합니다. 이 소프트웨어는 어떠한 종류의 보증도 제공하지 않습니다(LICENSE 참조). 단순히 실행하는 것만으로는 이론상 기기가 벽돌이 되거나 데이터가 손실되지 않아야 하지만, 그래도 먼저 백업하십시오. 이 코드를 실행함으로써 또는 이것이 부여하는 루트 접근 권한으로 수행하는 모든 행위로 인해 발생하는 일은 저자의 책임이 아니라 본인의 책임입니다.
- 이 익스플로잇은 UAF를 통해 커널 메모리를 수정합니다. 시도가 실패하면 기기가 재부팅되며, 재부팅하면 모든 것이 복원됩니다. 실행할 때마다 100% 성공하는 것은 아니므로 다시 실행하십시오.
- 루트는 기기에 대한 완전한 제어 권한입니다 — 신중하게 사용하십시오. 이 프로젝트는 루트 권한을 얻는 것까지만 제공합니다. 이후 이미지를 플래싱하거나, 파티션에 쓰거나, 보호 기능을 비활성화하거나, 검증되지 않은 모듈을 설치하면 기기가 영구적으로 벽돌이 될 수 있으며, 이는 본인의 책임입니다.
exploit/ GhostLock PoC source (Android arm64) + build system
src/ exploit core: futex UAF, KASLR slide, sysctl boot_id hijack,
arbitrary R/W, cred/SELinux/sig_enforce writes, KSU load
src/targets/ per-firmware offset tables (target.h)
ksu/ custom kernelsu.ko build (MagicOS kernel + device config) and the
PC-side adb load driver
tools/ on-device load helpers: load_ko.c / kmsg_dumper.c (built from
source), policy rules, loader template (+ where to get the
binaries)
요구 사항: Docker, Android Platform Tools.
하나의 사전 빌드된 번들이 지원되는 모든 펌웨어를 포함합니다: Releases에서 다운로드하여 호스트에서 압축을 풀고 다음을 실행하세요
./setup.sh # PC, with adb: identifies the kernel, picks the
# matching exploit, runs the chain, retries when an
# attempt fails
PC 없이도 휴대폰에서 번들을 압축 해제하고 Shizuku 셸(rish)에서 동일한 스크립트를 실행하세요. 스크립트가 자신이 어디에 있는지 감지한 뒤 나머지 작업을 로컬에서 수행합니다:
sh /sdcard/ghostlock/setup.sh
스크립트는 실행 중인 커널을 번들로 제공된 매니페스트와 대조합니다: 검증된 펌웨어는 바로 실행되고, 알려져 있지만 테스트되지 않은 펌웨어는 확인을 요청하며, 그 외의 것은 거부됩니다.
대신 소스에서 빌드하세요:
# 1. Build the exploit binary
cd exploit && ./docker-build.sh bin # exploit_static (8.0.0.128)
# 8.0.0.160: ./docker-build.sh PROJECT=annap-AGT-AN00_8.0.0.160 bin
# (the static binary bakes in the default env config; any knob can still
# be overridden by environment variables at launch; first run pulls the NDK, ~1.2GB)
# 2. The KSU-side binaries live in ksu/tools/ (see ksu/tools/README.md):
# kernelsu.ko — build per ksu/README.md;
# ksud, magiskpolicy, ksu_rules — shipped in the repo;
# load_ko, kmsg_dumper — ./docker-build.sh tools
# 3. Enable ADB debugging on the phone, then
bash ../ksu/ksu_load_ko.sh
# 8.0.0.160: PROJECT=annap-AGT-AN00_8.0.0.160 bash ../ksu/ksu_load_ko.sh
스크립트는 adb를 통해 전체 체인을 구동합니다: GhostLock(root 접근, SELinux
permissive, sig_enforce 비활성화), magiskpolicy를 통한 SELinux 정책 주입, 가짜 kallsyms
바인드 마운트, load_ko(init_module), 그다음 ksud 기동 단계,
마지막 단계로 SELinux enforcing 복원. 탈옥이
완료되면 스크립트가 KernelSU 관리자를 열어줍니다
("Working <LKM> [Jailbreak mode]" 표시).
CONFIG_MODULE_SIG_FORCE=y — 런타임 sig_enforce 플래그가
서명되지 않은 모듈 로드를 차단합니다. 익스플로잇이 이를 일시적으로 0으로 전환합니다(로더
스크립트는 모듈이 로드되면 이를 다시 1로 복원합니다)./proc/kallsyms에서 commit_creds 및 관련 심볼을
제거하므로, 커널 로더가 .ko의 미정의
심볼을 해석할 수 없습니다. 이 흐름은 제거된 심볼을 실제 런타임 주소(링크 주소 + KASLR 슬라이드)에
앞에 붙인 가짜 kallsyms를 바인드 마운트합니다.android12-5.10_kernelsu.ko를 직접 사용할 수 없습니다. ksu/는
펌웨어의 서브레벨과 기기의 커널 설정에 맞는 MagicOS 커널 소스를 대상으로
KernelSU를 재빌드합니다. ksu/README.md를 참조하세요.전체 체인(UAF → KASLR → 임의 R/W → cred → SELinux permissive → sig_enforce → KernelSU 라이브, enforcing 복원, boot_id 복원)은 위에서 ✅로 표시된 버전에 대해 실제 기기에서 검증되었습니다. ⚠️로 표시된 버전은 적용되었으나 실제 기기에서 검증되지 않았습니다. 실행이 실패하여 휴대폰이 재부팅될 수 있습니다. 설정 스크립트가 자동으로 재시도하거나, 다시 실행하세요.
exploit/, 최상위 문서)는
이 포트의 기반이 된 업스트림 IonStack PoC와 동일하게 Apache License 2.0을
따릅니다(LICENSE 참조).ksu/ 아래의 파일들은 GPL-2.0입니다
(ksu/LICENSE 참조): init-bootid.patch와 ksu_rules.annotated 정책
세트는 GPL-2.0인 KernelSU의 kernel/ 디렉터리에서 파생되었습니다.