
Exploit de escalada de privilégios local para Redmi K50G/POCO F4 GT usando CVE-2026-43499 (futex UAF) para obter root temporário e carregar KernelSU sem desbloquear o bootloader.
Root temporário com um clique sem desbloquear o BL. Utiliza a cadeia local de escalonamento de privilégios GhostLock (CVE-2026-43499, futex PI Use-After-Free) para obter o ponto de ancoragem de root e, em seguida, por meio do modo KernelSU 3.3.0 late-load, monta o módulo kernelsu no kernel em execução, em conjunto com o módulo KSU, mantém o SELinux Permissive e corrige a rede.
Dispositivo alvo: Redmi K50G / POCO F4 GT —— codinome
ingres, SoC SM8450 (Snapdragon 8 Gen 1) Sistema: Android 14, UKQ1.240624.001, kernel 5.10.209-android12 (KMIandroid12-5.10) Status: ✅ Root temporário verificado com sucesso em dispositivo real
| Arquivo | Função |
|---|---|
exploit | Binário de escalada de privilégios GhostLock (ARM64 PIE, não stripado). Contém internamente a localização de colisão mm do KernelSnitch, sobrescrita de pilha UAF do futex PI, root por âncora de kernel, su daemon, libksud.so embutido e a lógica de late-load do KSU |
Root-K50G.bat | Script tudo-em-um para Windows (localiza os arquivos a partir do próprio diretório, basta dar duplo clique): detecta o dispositivo → envia os arquivos → executa a escalada → entra diretamente no root shell |
ksu_loader.sh | Executado pela âncora de kernel já com root: libksud.so late-load --kmi 5.10.209-android12 carrega o KernelSU e dispara sequencialmente as fases post-fs-data / services / boot-completed |
ksu-module/chuxin_permissive_netfix/ | Módulo KernelSU (module.prop + service.sh): a cada 2 segundos vigia enforce=0, além de redefinir as propriedades anti-adulteração, reiniciar o netd e ativar wifi/dados para corrigir a falta de rede |
adb/ | Ferramentas adb embutidas (portáteis, sem instalação) |
adb驱动无需重启.exe | Ferramenta de instalação do driver Xiaomi em um clique |
Toda a cadeia é dividida em quatro etapas:
FUTEX_WAIT_REQUEUE_PI + FUTEX_CMP_REQUEUE_PI) cria um rt_mutex_waiter pendente na pilha do kernel;rt_mutex_adjust_prio_chain para percorrer a cadeia, obtendo primitivas controladas de leitura/escrita no kernel.cred (uid/gid=0, caps completas, kernel SID), obtendo um processo âncora root (no log de execução: anchor: ROOT uid=0);SHELL_ROOT=1) e su daemon (SU_DAEMON=1, /data/local/tmp/su).kernelsu.ko é carregado no kernel em execução via libksud.so late-load --kmi 5.10.209-android12 (sem necessidade de flash/patch da imagem boot, correspondendo exatamente ao KMI atual do dispositivo);ksu_loader.sh executa sequencialmente post-fs-data, services, boot-completed, fazendo o framework de gerenciamento do KernelSU (ksud) iniciar normalmente.chuxin_permissive_netfix é instalado em /data/adb/modules/: seu service roda no domínio ksu (com permissão security:setenforce), regravando enforce como 0 a cada 2 segundos, neutralizando o comportamento do ksud de reverter o SELinux para Enforcing após o boot-completed (evitando recusa de AVC no socket su + falta de rede);ro.boot.flash.locked / verifiedbootstate / bit de garantia e reinicia o netd, corrigindo a rede após o 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"
Verificação após a conclusão da execução:
adb shell /data/local/tmp/su -c id
# uid=0(root) gid=0(root) ...
| Variável | Padrão | Significado |
|---|---|---|
NO_COLOR | 0 | Desativa logs coloridos |
SE_LINUX | 0 | Ativa o flip SELinux Permissive (gravação direta de enforce no ponto de ancoragem do kernel) |
KSU_LOADER | 0 | Executa ksu_loader.sh dentro do ponto de ancoragem root (KernelSU late-load) |
SHELL_ROOT | 0 | Faz fork de um shell root dentro do ponto de ancoragem |
SU_DAEMON | 0 | Inicia o daemon /data/local/tmp/su dentro do ponto de ancoragem |
SUSPECT_CPU | - | Especifica a CPU suspeita (vinculação do ponto de ancoragem), 99999 indica automático |
KS_MAX_TRIES | - | Limite de tentativas de colisão mm/ponto de ancoragem do KernelSnitch |
service.sh do módulo chuxin_permissive_netfix redefine automaticamente as propriedades e reinicia o netd (também funciona após instalar módulos como o LSPosed);O conteúdo deste repositório destina-se exclusivamente a pesquisa de segurança e testes em dispositivos pessoais. A elevação de privilégios/modificação do estado do sistema envolve certos riscos, e o manuseio inadequado pode tornar o dispositivo inutilizável ou causar perda de dados. Utilize apenas sob a premissa de compreender completamente os princípios e assumir as consequências por conta própria, não o utilize para fins ilegais.
Referência: CVE-2026-43499 (GhostLock) — UAF de herança de prioridade futex no kernel Linux, afeta kernels de 2.6.39 a 7.1, permitindo elevação de privilégios local.