
GhostLock (CVE-2026-43499) fork d'exploit pour RootMyVivo Neo — iQOO Neo 11 (PD2520, SM8750, 6.6.89). Pour la recherche autorisée sur ses propres appareils uniquement.
Fork de boxiaolanya2008/CVE-2026-43499-Neo11Plus, retravaillé pour RootMyVivo. Tout ce qui cassait le téléphone après le root a été retiré, le cœur de l'exploit avec des timings éprouvés a été conservé.
| Répertoire | Appareil | Noyau | Provenance des offsets |
|---|---|---|---|
PD2520-BP2A.250605.031.A3 | iQOO Neo 11 | 6.6.89 | kallsyms+BTF de son propre boot.img, vérifié sur matériel |
PD2520-A-16.0.28.2 | iQOO Neo 11 | 6.6.127 | kallsyms depuis boot_b |
I2401-16.1.22.2 | iQOO 13 (India) | 6.6.89 | AmarnathCJD/IQOO13-Root |
PD2426-BP2A.250605.031.A3 | iQOO Neo10 Pro | 6.6.89 (gf2) | sgswzglwlx/vivo-root-build |
PD2415-BP2A.250605.031.A3 | vivo X200 | 6.6.89 (b57) | xiaohj233/ghostlock-x200-root — le même binaire convient au Neo10 Pro sur b57 |
PD2405-AP3A.240905.015.A1 | vivo X200 Pro | 6.6.89 | CyberMeowfia |
Nouvel appareil = nouveau répertoire dans src/targets/ : target.h (offsets) + root.c (notre final éprouvé, copié tel quel).
| Composant | Raison |
|---|---|
| Changement de fond d'écran + kill de system_server | source de soft-reboots « spontanés » et de fonds d'écran substitués |
| Démon io sur le port 39555 | nécessaire uniquement au kernelapp de débogage |
| Overlay tmpfs sur /apex/com.android.virt | bloquait zygote lors d'un soft-reboot (écran noir) |
| Service de boot 10-neo11-su.sh | l'ancrage est assuré par l'application |
| Tables d'offsets d'appareils tiers | désormais les nôtres, un répertoire par cible |
Le cœur de l'exploit (futex PI UAF → pselect fake lock → heap spray → pipe physrw → root) et la posture (panic_on_oops=0, kptr_restrict, empoisonnement AVC) sont inchangés.
Par rapport à l'upstream, ajout de : safety_quiesce (attend loadavg < 4 avant la route PI), cred-guard (vérification de la canonicité des adresses avant écriture), boucle de retry jusqu'à 3 exécutions dans des fork frais. Réglages via l'environnement : RMV_ATTEMPTS, RMV_RETRY_DELAY.
D'où viennent les paniques : INIT_STACK_ALL_ZERO écrase la pile et casse le fake waiter — traité par quiesce+retry ; cible corrompue après un reclaim raté — cred-guard ; panic_on_oops=1 en stock — la posture le désactive juste après le root, avant cela seule la prudence sauve.
Windows, NDK r29 :
build_ports.bat # все порты
build_ports.bat I2401-16.1.22.2 # одна цель
build-win.bat # PD2520 6.6.89
На устройстве через Termux тоже можно — см. Makefile.
Sortie : build/<target>/bin/preload.so (~140 КБ). Lancement : LD_PRELOAD=$PWD/preload.so /system/bin/true depuis le domaine shell.
Tout est calculé automatiquement via P0_DATA_ALIAS_CONST à partir de P0_PHYS_OFFSET et P0_KERNEL_PHYS_LOAD. Qualcomm SM8750 : 0x80000000/0xa8000000. MediaTek Dimensity 9400 : 0x80000000/0x80000000. Une valeur incorrecte ne provoque pas de panique — la diapositive ne s'alignera simplement pas.
La CVE est corrigée dans 6.1.175 / 6.6.140 / 6.12.86. Mais la compatibilité ne dépend pas uniquement de la version : la position de rt_mutex_waiter sur la pile de do_futex dépend de la compilation PGO/LTO. Analyse détaillée — chez JoinChang/ghostlock-oneplus : chez OPLUS 6.1, do_futex est inliné et l'exploit est impossible, chez vivo 6.1 — il est viable. Avant de se lancer dans un portage, vérifie la frame.
Uniquement pour la recherche autorisée et sur ses propres appareils.