
PoC de escalada de privilegios para Honor 80 GT: GhostLock (CVE-2026-43499) + carga de módulos KernelSU personalizados
Inglés | 中文
Un exploit de escalada local de privilegios para el Honor 80 GT (AGT-AN00),
CVE-2026-43499 — un use-after-free en la ruta remove_waiter de rtmutex del kernel — además de una solución complementaria de carga de módulos de kernel de KernelSU.
En principio, el fallo y las técnicas aquí descritas se aplican a todas las compilaciones de MagicOS hasta la 9.0.0.230. Versiones adaptadas:
| MagicOS | Kernel | Estado |
|---|---|---|
| 8.0.0.128 | 5.10.168 | ✅ verificado |
| 8.0.0.160 | 5.10.209 | ✅ verificado |
| 9.0.0.157 | 5.10.209 | ✅ verificado |
| 9.0.0.200SP1 | 5.10.236 | ✅ verificado |
| 9.0.0.220SP2 / SP4 | 5.10.236 | ✅ verificado (SP4 incluye la misma imagen de arranque que SP2) |
| 9.0.0.230 | 5.10.236 | ✅ verificado |
| 8.0.0.131 | 5.10.198 | ⚠️ no verificado en un dispositivo real |
| 8.0.0.135 / 143 / 150 | 5.10.198 | ⚠️ no verificado en un dispositivo real |
| 8.0.0.161 | 5.10.209 | ⚠️ no verificado en un dispositivo real |
| 9.0.0.102 / 103 / 120 / 130 / 165 | 5.10.209 | ⚠️ no verificado en un dispositivo real (103 incluye la misma imagen de arranque que 102) |
| 9.0.0.175SP1 / 187 | 5.10.226 | ⚠️ no verificado en un dispositivo real |
| 9.0.0.210 | 5.10.236 | ⚠️ no verificado en un dispositivo real |
⚠️ Advertencia
- Solo para investigación de seguridad en tu propio dispositivo.
- ÚSALO BAJO TU PROPIO RIESGO. Este software se distribuye SIN garantía de ningún tipo (consulta LICENSE). En teoría, simplemente ejecutarlo no debería inutilizar tu dispositivo ni provocar pérdida de datos, pero haz una copia de seguridad de todos modos; lo que ocurra — ya sea por ejecutar este código o por cualquier cosa que hagas con el acceso root que concede — es tu responsabilidad, no la de los autores.
- El exploit modifica la memoria del kernel mediante un UAF. Un intento fallido reinicia el dispositivo; un reinicio lo restaura todo. El éxito no es del 100% por ejecución — vuelve a ejecutarlo.
- Root es control total del dispositivo — úsalo con cuidado. Este proyecto solo te proporciona root; flashear imágenes, escribir particiones, desactivar protecciones o instalar módulos no probados después puede inutilizar el dispositivo de forma permanente, y eso es tu responsabilidad.
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)
Requisitos: Docker, Android Platform Tools.
Un único paquete precompilado cubre todos los firmwares compatibles: descárgalo desde Releases, descomprímelo en el host y ejecuta
./setup.sh # PC, with adb: identifies the kernel, picks the
# matching exploit, runs the chain, retries when an
# attempt fails
Sin un PC, descomprime el paquete en el teléfono y ejecuta el mismo script desde un shell de Shizuku (rish) — detecta dónde está y hace el resto localmente:
sh /sdcard/ghostlock/setup.sh
El script compara el kernel en ejecución con el manifiesto incluido: los firmwares verificados se ejecutan directamente, los conocidos pero no probados solicitan confirmación, y cualquier otro se rechaza.
Compilar desde el código fuente en su lugar:
# 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
El script impulsa toda la cadena a través de adb: GhostLock (acceso root, SELinux
permissive, sig_enforce deshabilitado), inyección de política SELinux mediante magiskpolicy, bind-mount falso de kallsyms, load_ko (init_module), luego las etapas de arranque de ksud,
restaurando SELinux en modo enforcing como último paso absoluto. Cuando el jailbreak
se completa, el script abre el gestor de KernelSU por ti (muestra
"Working <LKM> [Jailbreak mode]").
CONFIG_MODULE_SIG_FORCE=y — el flag de tiempo de ejecución sig_enforce bloquea
las cargas de módulos sin firma; el exploit lo cambia temporalmente a 0 (el script
cargador lo restaura a 1 una vez que el módulo está dentro).commit_creds y similares de
/proc/kallsyms, por lo que el cargador del kernel no puede resolver los símbolos
indefinidos del .ko. El flujo hace un bind-mount de un kallsyms falso con los símbolos eliminados
antepuestos en sus direcciones reales de tiempo de ejecución (dirección de enlace + desplazamiento KASLR).android12-5.10_kernelsu.ko GKI estándar no puede usarse directamente. ksu/ recompila
KernelSU contra el código fuente del kernel de MagicOS que coincide con el subnivel del firmware
y la configuración del kernel del propio dispositivo. Véase ksu/README.md.Cadena completa (UAF → KASLR → R/W arbitrario → cred → SELinux permissive → sig_enforce → KernelSU activo, enforcing restaurado, boot_id restaurado) verificada en un dispositivo real para las versiones marcadas con ✅ arriba; las versiones marcadas con ⚠️ están adaptadas pero no verificadas en un dispositivo real. Una ejecución puede fallar y reiniciar el teléfono; el script de configuración reintenta automáticamente, o ejecútalo de nuevo.
exploit/, documentación de nivel superior) están
bajo la Apache License 2.0 (véase LICENSE), igual que el
PoC IonStack original del que deriva este port.ksu/ son GPL-2.0 (véase
ksu/LICENSE): init-bootid.patch y el conjunto de políticas ksu_rules.annotated
derivan del directorio kernel/ de KernelSU, que es GPL-2.0.