
Exploit di escalation dei privilegi locali per Redmi K50G/POCO F4 GT che utilizza CVE-2026-43499 (futex UAF) per ottenere root temporaneo e caricare KernelSU senza sbloccare il bootloader.
Root temporaneo con un clic senza sblocco del BL. Sfrutta la catena di privilege escalation locale GhostLock (CVE-2026-43499, futex PI Use-After-Free) per ottenere un ancoraggio root, quindi tramite il metodo KernelSU 3.3.0 late-load monta il modulo kernelsu nel kernel in esecuzione, mantenendo SELinux Permissive con il modulo KSU e riparando la rete.
Dispositivo target: Redmi K50G / POCO F4 GT —— nome in codice
ingres, SoC SM8450 (Snapdragon 8 Gen 1) Sistema: Android 14, UKQ1.240624.001, kernel 5.10.209-android12 (KMIandroid12-5.10) Stato: ✅ Root temporaneo verificato con successo su dispositivo reale
| File | Funzione |
|---|---|
exploit | Binario di escalation dei privilegi GhostLock (ARM64 PIE, non strip). Contiene internamente il posizionamento tramite collisione mm di KernelSnitch, la sovrascrittura dello stack UAF futex PI, il root tramite anchor del kernel, il daemon su, libksud.so incorporato e la logica di late-load di KSU |
Root-K50G.bat | Script one-click per Windows (individua i file dalla propria directory, basta un doppio clic): rileva il dispositivo → invia i file → esegue l'escalation → entra direttamente nella shell root |
ksu_loader.sh | Eseguito dall'anchor del kernel già root: libksud.so late-load --kmi 5.10.209-android12 carica KernelSU e attiva in sequenza le fasi post-fs-data / services / boot-completed |
ksu-module/chuxin_permissive_netfix/ | Modulo KernelSU (module.prop + service.sh): controlla ogni 2 secondi enforce=0, reimposta le proprietà anti-manomissione, riavvia netd e attiva wifi/dati per riparare la rete assente |
adb/ | Strumenti adb integrati (portatili, senza installazione) |
adb驱动无需重启.exe | Strumento di installazione one-click dei driver Xiaomi |
L'intera catena si articola in quattro fasi:
FUTEX_WAIT_REQUEUE_PI + FUTEX_CMP_REQUEUE_PI) per creare un rt_mutex_waiter pendente sullo stack del kernel;rt_mutex_adjust_prio_chain per la scansione, ottenendo primitive di lettura/scrittura controllate sul kernel.cred (uid/gid=0, caps complete, kernel SID), ottenendo un processo anchor root (nel log di esecuzione anchor: ROOT uid=0);SHELL_ROOT=1) e daemon su (SU_DAEMON=1, /data/local/tmp/su).kernelsu.ko viene caricato nel kernel in esecuzione tramite libksud.so late-load --kmi 5.10.209-android12 (senza flash/patch dell'immagine boot, con corrispondenza esatta al KMI attuale del dispositivo);ksu_loader.sh esegue in sequenza post-fs-data, services, boot-completed, facendo avviare correttamente il framework di gestione KernelSU (ksud).chuxin_permissive_netfix viene installato in /data/adb/modules/: il suo service gira nel dominio ksu (con permesso security:setenforce), riscrive enforce a 0 ogni 2 secondi, contrastando il comportamento di ksud che dopo boot-completed riporta SELinux in Enforcing (previene i rifiuti AVC sul socket su + la rete assente);ro.boot.flash.locked / verifiedbootstate / le proprietà del bit di garanzia e riavvia netd, riparando la rete dopo il Root.Root-K50G.bat;id per verificare 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"
Al termine dell'esecuzione, verificare:
adb shell /data/local/tmp/su -c id
# uid=0(root) gid=0(root) ...
| Variabile | Predefinito | Significato |
|---|---|---|
NO_COLOR | 0 | Disattiva i log colorati |
SE_LINUX | 0 | Abilita il flip SELinux Permissive (scrittura diretta di enforce tramite anchor del kernel) |
KSU_LOADER | 0 | Esegue ksu_loader.sh all'interno dell'anchor root (KernelSU late-load) |
SHELL_ROOT | 0 | Fork di una root shell all'interno dell'anchor |
SU_DAEMON | 0 | Avvia il daemon /data/local/tmp/su all'interno dell'anchor |
SUSPECT_CPU | - | Specifica la CPU sospetta (binding dell'anchor), 99999 indica automatico |
KS_MAX_TRIES | - | Limite massimo di tentativi di collisione mm/anchor di KernelSnitch |
service.sh del modulo chuxin_permissive_netfix reimposta automaticamente le proprietà e riavvia netd (funziona anche dopo il flash di moduli come LSPosed);Il contenuto di questo repository è destinato esclusivamente a ricerca sulla sicurezza e test su dispositivi personali. L'escalation dei privilegi e la modifica dello stato del sistema comportano rischi; un'operazione errata può rendere il dispositivo inutilizzabile o causare la perdita di dati. Utilizzare solo dopo aver compreso appieno i principi e assumendosi le proprie responsabilità; non utilizzare per scopi illegali.
Riferimento: CVE-2026-43499 (GhostLock) — UAF da ereditarietà di priorità futex nel kernel Linux, che interessa i kernel dalla 2.6.39 alla 7.1 e consente l'escalation locale dei privilegi.