CVE-2026-43499 — GhostLock en Huawei Nova 9 (NAM-AL00)
Investigación de seguridad: confirmación en el dispositivo y análisis de explotación de CVE-2026-43499 (GhostLock) en Huawei Nova 9 (NAM-AL00, Snapdragon 778G/SM7325, HarmonyOS 4.2.0.185, kernel 5.4.86-qgki).
Resumen
CVE-2026-43499 es un use-after-free de pila en el subsistema rt_mutex del kernel de Linux, introducido en v2.6.39 (2011). Este repositorio confirma que la vulnerabilidad se dispara de forma determinista en NAM-AL00 con HMOS 4.2 y SPL 2025-07-01, documenta la metodología de explotación completa y analiza por qué no se logró root total.
Confirmado
- ✅ El rollback de EDEADLK se dispara de forma determinista (disparador del bug)
- ✅ KASLR derrotado por arranque mediante la fuga de callchain de perf_event
- ✅ Recuperación completa de símbolos (224.986 símbolos de la Image sin procesar)
- ✅ Entrega con doble plantador verificada y alineada (pselect6 + PR_SET_MM_MAP)
- ✅ El recorrido consume los campos del waiter falsificado (wedge = prueba de desreferencia)
No logrado
- ❌ Prueba de escritura arbitraria (la semántica del recorrido modificada por Huawei impide una terminación limpia)
- ❌ Root temporal (bloqueado por la limpieza posterior a la salida + divergencia en el recorrido)
Hallazgos clave
| Hallazgo | Detalle |
|---|
| HKIP | NO presente en SM7325 (EL2 = Qualcomm Haven) |
| SLAB_FREELIST_HARDENED |
Archivos
poc/poc_trigger.c — deterministic EDEADLK trigger (stage-1 PoC)
poc/perf_probe.c — KASLR slide extraction via perf_event
exploit/stage3_main.c — integrated pipeline (trigger→plant→punch→oracle)
exploit/escalate.c — post-write escalation core (cred/sid/seccomp)
exploit/stage2_forge.h — forged rt_mutex_waiter composer
sim/sim_final.py — Unicorn emulator oracle (offline walk trace)
offsets/offset.h — all verified symbol addresses & struct layouts
analysis/kernel.config — extracted build configuration
analysis/symbols.txt — 224,986 recovered kallsyms entries
Compilación
# Trigger PoC
${NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang \
-O2 -static -pthread -o poc_trigger poc/poc_trigger.c
# Run on device
adb push poc_trigger /data/local/tmp/
adb shell /data/local/tmp/poc_trigger 10
Referencias
Licencia
MIT