
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 BL. Se aprovecha la cadena de escalada local de privilegios GhostLock (CVE-2026-43499, futex PI Use-After-Free) para obtener un anclaje de root y, a continuación, mediante el modo late-load de KernelSU 3.3.0 se monta el módulo kernelsu en el kernel en ejecución, junto con el módulo KSU para mantener SELinux Permissive y reparar 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 con éxito en dispositivo real
| Archivo | Función |
|---|---|
exploit | Binario de escalada de privilegios GhostLock (ARM64 PIE, sin strip). Contiene internamente la localización por colisión mm de KernelSnitch, la cobertura de pila UAF de futex PI, el anclaje de root en el kernel, el daemon su, el libksud.so embebido y la lógica de late-load de KSU |
Root-K50G.bat | Script todo-en-uno para Windows (localiza los archivos en su propio directorio, listo para usar con doble clic): detecta el dispositivo → envía los archivos → ejecuta la escalada → entra directamente en la shell root |
ksu_loader.sh | Ejecutado por el anclaje de root en el kernel ya con root: libksud.so late-load --kmi 5.10.209-android12 carga KernelSU y desencadena sucesivamente 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 las propiedades anti-manipulación, reinicia netd y activa wifi/datos para reparar la pérdida de red |
adb/ | Herramientas adb integradas (portátiles, sin instalación) |
adb驱动无需重启.exe | Herramienta de instalación todo-en-uno de controladores Xiaomi |
Toda la cadena se divide en 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 de lectura/escritura controladas del kernel.cred mediante la primitiva de escritura (uid/gid=0, caps completas, SID del kernel) para obtener un proceso ancla root (en el registro de ejecución: anchor: ROOT uid=0);SHELL_ROOT=1) y daemon su (SU_DAEMON=1, /data/local/tmp/su).kernelsu.ko se carga en el kernel en ejecución mediante libksud.so late-load --kmi 5.10.209-android12 (sin necesidad de flashear/parchear la imagen boot, coincidiendo exactamente con el KMI actual del dispositivo);ksu_loader.sh ejecuta sucesivamente post-fs-data, services, 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 service se ejecuta en el dominio ksu (con permiso security:setenforce), reescribiendo enforce a 0 cada 2 segundos, contrarrestando el comportamiento de ksud de volver SELinux a Enforcing tras boot-completed (evita el rechazo AVC del socket su + la pérdida de red);ro.boot.flash.locked / verifiedbootstate / de garantía y reinicia netd, reparando la red tras el Root.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 completar la ejecución, verifique:
adb shell /data/local/tmp/su -c id
# uid=0(root) gid=0(root) ...
| Variable | Predeterminado | Significado |
|---|---|---|
NO_COLOR | 0 | Desactiva los registros en color |
SE_LINUX | 0 | Habilita el flip de SELinux Permissive (escritura directa de enforce mediante anclaje del kernel) |
KSU_LOADER | 0 | Ejecuta ksu_loader.sh dentro del anclaje de root (KernelSU late-load) |
SHELL_ROOT | 0 | Hace fork de una shell root dentro del anclaje |
SU_DAEMON | 0 | Inicia el daemon /data/local/tmp/su dentro del anclaje |
SUSPECT_CPU | - | Especifica la CPU sospechosa (vinculación del anclaje), 99999 indica automático |
KS_MAX_TRIES | - | Límite de intentos de colisión mm/anclaje de KernelSnitch |
service.sh del módulo chuxin_permissive_netfix restablece automáticamente las propiedades y reinicia netd (también funciona tras flashear módulos como LSPosed);El contenido de este repositorio es solo para investigación de seguridad y pruebas en dispositivos personales. La elevación de privilegios/modificación del estado del sistema conlleva ciertos riesgos; una operación inadecuada puede dejar el dispositivo inutilizable o provocar pérdida de datos. Úselo bajo la premisa de comprender completamente los principios y asumir las consecuencias por cuenta propia, y no lo utilice para fines ilegales.
Referencia: CVE-2026-43499 (GhostLock) — UAF de herencia de prioridad de futex en el kernel de Linux, afecta a los kernels 2.6.39 ~ 7.1, permite elevación local de privilegios.