
Sharp AQUOS R7(CVE-2026-43499)을 위한 기기별 Linux 5.10 커널 루트 익스플로잇으로, SELinux permissive 상태와 su 데몬을 통해 임시 UID 0 권한을 부여합니다.
Sharp AQUOS R7용 GhostLock(CVE-2026-43499)의 기기별 Linux 5.10 포팅입니다. 검증된 대상은 Android 14 빌드 03.00.11, 커널 5.10.237-android12-9-00013-gd09ef2e980e0-ab13968955(SM8450)를 실행하는 AQUOS R7(Mineva, SGA202SH/A202SH)입니다. 이전 검증 대상인 빌드 03.00.06 / 커널 5.10.218-android12-9-00041-g124993efd06e-ab12385094는 git 태그 v1.0-030006에 보존되어 있습니다.
이것은 aquos-r6-ghostlock(AQUOS R6, 커널 5.4.61-qgki)의 포팅입니다. 모든 상수 — KASLR 처리, selinux_state 누출 윈도우, task/cred 오프셋, 제로 BSS 스크래치 영역 — 는 R7 커널에 맞춰 다시 도출되고 검증되었으며, R6 스택 구조는 시작 참조로만 사용되었습니다.
성공적으로 실행되면 SELinux permissive 상태에서 UID 0을 얻고 작은 su 명령 데몬이 시작됩니다. 전체 Linux capability 집합을 부여하지는 않으며 변경 사항은 영구적이지 않습니다. 재부팅하면 재고 커널 상태로 복원됩니다.
aarch64-linux-android29를 대상으로 하는 Android NDK clang이 필요합니다(NDK r30으로 테스트됨):
make build/ghostlock510 # ~3.4 MB static binary
make strip # optional; ~0.6 MB, same behaviour
재현성(03.00.11 캘리브레이션): 위의 툴체인으로 빌드한 이 소스는 온디바이스 03.00.11 테스트에 사용된 바이너리와 바이트 단위로 동일합니다(MD5 25fc1d5d0e92d36c56f00f983a49667d). 릴리스 에셋은 바로 그 바이너리를 llvm-strip 처리한 형태입니다(598,672바이트, SHA-256 5c413a80e9fcc41032412f4e0e5183bc723dde9a2e0ace5a6d9c79681b04b9cd). 03.00.06 빌드는 태그 v1.0-030006을 참조하십시오(스트립되지 않은 MD5 fa896ebd361519766b46cc2bab70dea2).
바이너리(릴리스 에셋 또는 직접 빌드한 것)를 푸시하고 한 번 실행하십시오:
adb push ghostlock510 /data/local/tmp/ghostlock510
adb shell chmod 755 /data/local/tmp/ghostlock510
adb shell "setsid nohup /data/local/tmp/ghostlock510 --use-setattr --stamp3 --perm-pc --cred-swap --install-su --stamp-off 0xf0 --log /data/local/tmp/ghostlock510.log </dev/null >/dev/null 2>&1 &"
설치된 su 클라이언트를 root 명령에 사용하십시오(전체 경로 필요):
adb shell "/data/local/tmp/su -c 'id; getenforce'"
# uid=0(root) gid=2000(shell) groups=2000(shell) context=u:r:kernel:s0
# Permissive
su는 루프백 TCP(포트 9999)를 통해 익스플로잇의 데몬과 통신하며, 지속적인 root 셸은 연결되지 않습니다. 명령은 줄 기반이며, su 안에서 su를 중첩하는 것은 동작하지 않습니다. 대화형 프로그램(vi, top 등)은 PTY를 요구하므로, 데몬 위에 대화형 su 모드를 구현하는 것은 향후 과제로 남겨둡니다.
이 정확한 빌드에서 측정한 결과(VERIFICATION.md 참조):
따라서: 재부팅하고, ghostlock510을 한 번 실행한 뒤, 해당 세션이 살아 있는 동안 다시 실행하지 마십시오. 재부팅이 정리 경로입니다.
대용량 외부 입력은 이 저장소에 의도적으로 포함되지 않았습니다:
vmlinux/System.map에서 가져왔으며, 기기에서 실제로 실행 중인 커널과의 바이트 단위 동일성은 해당 boot_b 이미지를 통해 검증했습니다(23개 PT_LOAD 세그먼트 전부, 세그먼트별 비교). CVE 수정(5.10.y 백포트 2026-07-21)은 이 트리(HEAD 2025-08-20)보다 나중에 이루어졌으며, kernel/futex/core.c는 03.00.06 빌드와 blob 단위로 동일합니다 — 취약점은 여전히 존재합니다.v1.0-030006): 오프셋은 Android CI 커널 빌드 12385094에서 가져왔으며, 기기의 boot_a 이미지를 통해 바이트 단위로 검증했습니다.--stamp3 / --use-setattr 접근 방식은
여기에서 영감을 받았습니다(해당 저장소에는 라이선스가 명시되어 있지 않음).