
Exploit de escalada de privilegios locales para Redmi K50G/POCO F4 GT usando CVE-2026-43499 (futex UAF) para obtener root temporal y cargar KernelSU sin desbloquear el bootloader.
Root temporal con un solo clic sin desbloquear el bootloader. Utiliza la cadena de escalada de privilegios local GhostLock (CVE-2026-43499, futex PI Use-After-Free) para obtener un ancla de root, y luego, mediante el método KernelSU 3.2.5 late-load, monta el módulo kernelsu en el kernel en ejecución, junto con el módulo KSU que mantiene SELinux Permissive y repara la red.
Dispositivo objetivo: Redmi K50G / POCO F4 GT — nombre en clave
ingres, SoC SM8450 (Snapdragon 8 Gen 1) Sistema: Android 14, UKQ1.240624.001, kernel 5.10.209-android12 (KMIandroid12-5.10) Estado: ✅ Root temporal verificado en dispositivo real
| Archivo | Función |
|---|---|
exploit | Binario de escalada de privilegios GhostLock (ARM64 PIE, sin strip). Contiene la localización de colisión mm de KernelSnitch, la sobrescritura de pila UAF de futex PI, el ancla de root del kernel, el daemon su y la lógica integrada de libksud.so y KSU late-load |
Root-K50G.bat | Script de un clic para Windows (localiza archivos según su propio directorio, doble clic para usar): detecta el dispositivo → envía archivos → ejecuta la escalada → entra directamente al shell root |
ksu_loader.sh | Ejecutado por el ancla de root ya obtenida: libksud.so late-load --kmi 5.10.209-android12 carga KernelSU y dispara secuencialmente las fases post-fs-data / services / boot-completed |
ksu-module/chuxin_permissive_netfix/ | Módulo de KernelSU (module.prop + service.sh): vigila enforce=0 cada 2 segundos, restablece atributos anti-manipulación, reinicia netd y activa wifi/datos para reparar la desconexión de red |
adb/ | Herramientas adb integradas (portátiles, sin instalación) |
adb驱动无需重启.exe | Herramienta de instalación de controladores Xiaomi con un clic |
La cadena completa consta de cuatro pasos:
FUTEX_WAIT_REQUEUE_PI + FUTEX_CMP_REQUEUE_PI) para crear un rt_mutex_waiter colgante en la pila del kernel;rt_mutex_adjust_prio_chain, obteniendo primitivas controladas de lectura/escritura del kernel.cred (uid/gid=0, caps completos, SID del kernel), obteniendo un proceso ancla de root (anchor: ROOT uid=0 en los registros);SHELL_ROOT=1) y daemon su (SU_DAEMON=1, /data/local/tmp/su).kernelsu.ko se carga en el kernel en ejecución mediante (sin flashear ni parchear la imagen de boot, con coincidencia exacta del KMI actual del dispositivo);Root-K50G.bat;id para verificar uid=0(root);/data/local/tmp/su -c id.adb push exploit /data/local/tmp/exploit
adb push ksu_loader.sh /data/local/tmp/ksu_loader.sh
adb shell chmod 755 /data/local/tmp/exploit /data/local/tmp/ksu_loader.sh
adb shell "env NO_COLOR=1 SE_LINUX=1 KSU_LOADER=1 SHELL_ROOT=1 SU_DAEMON=1 SUSPECT_CPU=99999 KS_MAX_TRIES=8 /data/local/tmp/exploit"
Después de la ejecución, verifica:
adb shell /data/local/tmp/su -c id
# uid=0(root) gid=0(root) ...
service.sh del módulo chuxin_permissive_netfix restablece automáticamente los atributos y reinicia netd (también funciona después de flashear módulos como LSPosed);El contenido de este repositorio es exclusivamente para investigación de seguridad y pruebas en dispositivos propios. La escalada de privilegios y la modificación del estado del sistema conllevan ciertos riesgos; una operación incorrecta puede provocar que el dispositivo se bloquee o se pierdan datos. Úsalo solo si comprendes completamente los principios y asumes las consecuencias por tu cuenta. No lo utilices con fines ilegales.
Referencia: CVE-2026-43499 (GhostLock) — UAF de herencia de prioridad futex en el kernel de Linux, afecta a kernels 2.6.39 ~ 7.1, permite escalada de privilegios local.
libksud.so late-load --kmi 5.10.209-android12ksu_loader.sh ejecuta secuencialmente post-fs-data, services y boot-completed, permitiendo que el framework de gestión de KernelSU (ksud) se inicie correctamente.chuxin_permissive_netfix se instala en /data/adb/modules/: su servicio se ejecuta en el dominio ksu (con permiso security:setenforce) y escribe enforce de vuelta a 0 cada 2 segundos, contrarrestando el comportamiento de ksud que vuelve a poner SELinux en Enforcing después de boot-completed (evita que AVC deniegue el socket su y la desconexión de red);ro.boot.flash.locked / verifiedbootstate / los atributos de garantía y reinicia netd, reparando la red tras el root.| Variable | Valor por defecto | Significado |
|---|
NO_COLOR | 0 | Desactiva los registros de color |
SE_LINUX | 0 | Habilita el cambio a SELinux Permissive (escritura directa de enforce desde el ancla del kernel) |
KSU_LOADER | 0 | Ejecuta ksu_loader.sh dentro del ancla de root (KernelSU late-load) |
SHELL_ROOT | 0 | Hace fork de un root shell dentro del ancla |
SU_DAEMON | 0 | Inicia el daemon /data/local/tmp/su dentro del ancla |
SUSPECT_CPU | - | Especifica la CPU sospechosa (vinculación del ancla); 99999 indica automático |
KS_MAX_TRIES | - | Límite de intentos de colisión mm / ancla de KernelSnitch |