
GhostLock (CVE-2026-43499) fork di exploit per RootMyVivo Neo — iQOO Neo 11 (PD2520, SM8750, 6.6.89). Solo per ricerca autorizzata sui propri dispositivi.
Fork di boxiaolanya2008/CVE-2026-43499-Neo11Plus, rielaborato per RootMyVivo Neo: rimosso tutto ciò che non serve al nostro scenario, mantenuto il kernel dell'exploit verificato senza modifiche ai timing.
| Componente | Motivo |
|---|---|
| Cambio sfondo + kill di system_server | principale fonte di soft reboot "spontanei" e cambio sfondo dopo il root |
| io-daemon (porta 39555) | serviva solo al kernelapp di debug; l'applicazione funziona tramite su |
| overlay tmpfs su /apex/com.android.virt/bin | poteva bloccare zygote/system_server durante il soft reboot (schermo nero) |
| Installazione di su nel mount-namespace di adbd | l'applicazione invoca /data/local/tmp/su con percorso completo |
| Boot-service 10-neo11-su.sh | il consolidamento lo fa l'applicazione: persist.adb.tcp.port + adb_keys + ksud |
| Tabelle di offset di altri dispositivi | solo PD2520-BP2A.250605.031.A3 |
| kernelapp (app/) | sostituito dalla funzionalità dell'applicazione |
panic_on_oops=0, panic_on_warn=0 (protezione dalle panic),
kptr_restrict/dmesg_restrict, avvelenamento AVC (permissive senza rompere policycap)/system/bin/su, quando compareL'exploit deposita /data/local/tmp/su (0755, root:root, contesto system_file)
e avvia il daemon con socket /data/local/tmp/temp_su.sock.
L'applicazione invoca su con percorso completo — /apex non viene toccato affatto.
cd exploit
PATH=/data/data/com.termux/files/usr/bin:$PATH \
make HOST_CLANG=/data/data/com.termux/files/usr/bin/clang \
NDK_ROOT=/root/android-sdk/ndk/26.1.10909125
build/PD2520-BP2A.250605.031.A3/bin/preload.so (~140 KB)
e build/embed/su_daemon_aarch64_pie (su, ~11 KB)6.6.89-android15-8-g1f71897ac249-abogki467805059-4k (offset da
kallsyms+BTF di questo boot.img; cambio kernel = rigenerazione di target.h)cd /data/local/tmp/rmv && LD_PRELOAD=$PWD/preload.so /system/bin/trueRMV_ATTEMPTS=N — numero di tentativi completi (predefinito 3)RMV_RETRY_DELAY=N — pausa tra i tentativi in secondi (predefinito 8)NEO11_* — manopole upstream (delay/nice/attempts) conservate| Meccanismo | Cosa fa | Da cosa protegge |
|---|
| safety_quiesce | prima della rotta PI attende loadavg < 4 (fino a 10 s) | waiter in un frame altrui → panic con carico di sistema elevato |
| cred-guard | prima della scrittura di cred verifica che i puntatori siano indirizzi kernel canonici | scrittura di un puntatore spazzatura → corruzione immediata di task_struct → panic |
| ciclo di retry | fino a 3 esecuzioni complete (ciascuna in un fork fresco) con pausa di 8 s | lotteria dei timing: il secondo tentativo spesso riesce, l'upstream semplicemente si arrendeva |
| spin adattivo | thread consumer: 200 iterazioni yield → nanosleep(0.2 ms) | 100% CPU per tutta la durata dell'exploit |