
PoC d'élévation de privilèges pour Honor 80 GT : GhostLock (CVE-2026-43499) + chargement de module KernelSU personnalisé
Anglais | 中文
Un exploit d'élévation de privilèges local pour le Honor 80 GT (AGT-AN00),
CVE-2026-43499 — un use-after-free dans le chemin remove_waiter du
rtmutex du noyau — ainsi qu'une solution complémentaire de chargement de
modules noyau pour KernelSU.
En principe, la faille et les techniques présentées ici s'appliquent à toutes les versions de MagicOS jusqu'à 9.0.0.230. Versions adaptées :
| MagicOS | Noyau | Statut |
|---|---|---|
| 8.0.0.128 | 5.10.168 | ✅ vérifié |
| 8.0.0.160 | 5.10.209 | ✅ vérifié |
| 9.0.0.157 | 5.10.209 | ✅ vérifié |
| 9.0.0.200SP1 | 5.10.236 | ✅ vérifié |
| 9.0.0.220SP2 / SP4 | 5.10.236 | ✅ vérifié (SP4 fournit la même image de démarrage que SP2) |
| 9.0.0.230 | 5.10.236 | ✅ vérifié |
| 8.0.0.131 | 5.10.198 | ⚠️ non vérifié sur un appareil réel |
| 8.0.0.135 / 143 / 150 | 5.10.198 | ⚠️ non vérifié sur un appareil réel |
| 8.0.0.161 | 5.10.209 | ⚠️ non vérifié sur un appareil réel |
| 9.0.0.102 / 103 / 120 / 130 / 165 | 5.10.209 | ⚠️ non vérifié sur un appareil réel (103 fournit la même image de démarrage que 102) |
| 9.0.0.175SP1 / 187 | 5.10.226 | ⚠️ non vérifié sur un appareil réel |
| 9.0.0.210 | 5.10.236 | ⚠️ non vérifié sur un appareil réel |
⚠️ Avertissement
- Pour la recherche en sécurité sur votre propre appareil uniquement.
- UTILISEZ À VOS PROPRES RISQUES. Ce logiciel est fourni SANS aucune garantie, quelle qu'elle soit (voir LICENSE). En théorie, sa simple exécution ne devrait pas briquer votre appareil ni entraîner de perte de données, mais faites quand même une sauvegarde au préalable ; quoi qu'il arrive — que ce soit en exécutant ce code ou par tout ce que vous faites avec l'accès root qu'il accorde — c'est votre responsabilité, pas celle des auteurs.
- L'exploit modifie la mémoire du noyau via un UAF. Une tentative échouée redémarre l'appareil ; un redémarrage restaure tout. Le succès n'est pas garanti à 100 % à chaque exécution — relancez-le.
- Le root, c'est le contrôle total de l'appareil — utilisez-le avec précaution. Ce projet ne vous donne que le root ; flasher des images, écrire sur des partitions, désactiver des protections ou installer des modules non testés par la suite peut briquer définitivement l'appareil, et cela relève de votre responsabilité.
exploit/ GhostLock PoC source (Android arm64) + build system
src/ exploit core: futex UAF, KASLR slide, sysctl boot_id hijack,
arbitrary R/W, cred/SELinux/sig_enforce writes, KSU load
src/targets/ per-firmware offset tables (target.h)
ksu/ custom kernelsu.ko build (MagicOS kernel + device config) and the
PC-side adb load driver
tools/ on-device load helpers: load_ko.c / kmsg_dumper.c (built from
source), policy rules, loader template (+ where to get the
binaries)
Prérequis : Docker, Android Platform Tools.
Un bundle précompilé couvre tous les firmwares pris en charge : téléchargez-le depuis Releases, décompressez-le sur l'hôte, puis exécutez
./setup.sh # PC, with adb: identifies the kernel, picks the
# matching exploit, runs the chain, retries when an
# attempt fails
Sans PC, décompressez le bundle sur le téléphone et exécutez le même script depuis un shell Shizuku (rish) — il détecte où il se trouve et fait le reste localement :
sh /sdcard/ghostlock/setup.sh
Le script compare le noyau en cours d'exécution au manifeste fourni : les firmwares vérifiés s'exécutent directement, ceux connus mais non testés demandent une confirmation, tout le reste est refusé.
Compiler à partir des sources à la place :
# 1. Build the exploit binary
cd exploit && ./docker-build.sh bin # exploit_static (8.0.0.128)
# 8.0.0.160: ./docker-build.sh PROJECT=annap-AGT-AN00_8.0.0.160 bin
# (the static binary bakes in the default env config; any knob can still
# be overridden by environment variables at launch; first run pulls the NDK, ~1.2GB)
# 2. The KSU-side binaries live in ksu/tools/ (see ksu/tools/README.md):
# kernelsu.ko — build per ksu/README.md;
# ksud, magiskpolicy, ksu_rules — shipped in the repo;
# load_ko, kmsg_dumper — ./docker-build.sh tools
# 3. Enable ADB debugging on the phone, then
bash ../ksu/ksu_load_ko.sh
# 8.0.0.160: PROJECT=annap-AGT-AN00_8.0.0.160 bash ../ksu/ksu_load_ko.sh
Le script pilote toute la chaîne via adb : GhostLock (accès root, SELinux
permissif, sig_enforce désactivé), injection de politique SELinux via magiskpolicy, faux kallsyms
monté en bind, load_ko (init_module), puis les étapes de démarrage de ksud,
avec la restauration de SELinux en mode enforcing comme toute dernière étape. Lorsque le jailbreak
est terminé, le script ouvre le gestionnaire KernelSU pour vous (affiche
"Working <LKM> [Jailbreak mode]").
CONFIG_MODULE_SIG_FORCE=y — l'indicateur d'exécution sig_enforce bloque
le chargement de modules non signés ; l'exploit le bascule temporairement à 0 (le script
loader le restaure à 1 une fois le module chargé).commit_creds et ses semblables de
/proc/kallsyms, donc le loader du noyau ne peut pas résoudre les symboles non définis du .ko.
Le flux monte en bind un faux kallsyms avec les symboles supprimés
préfixés à leurs véritables adresses d'exécution (adresse de liaison + décalage KASLR).android12-5.10_kernelsu.ko GKI standard ne peut pas être utilisé directement. ksu/ reconstruit
KernelSU à partir des sources du noyau MagicOS correspondant au sous-niveau du firmware
et à la configuration du noyau propre à l'appareil. Voir ksu/README.md.Chaîne complète (UAF → KASLR → lecture/écriture arbitraire → cred → SELinux permissif → sig_enforce → KernelSU actif, enforcing restauré, boot_id restauré) vérifiée sur un appareil réel pour les versions marquées ✅ ci-dessus ; les versions marquées ⚠️ sont adaptées mais non vérifiées sur un appareil réel. Une exécution peut échouer et redémarrer le téléphone ; le script d'installation réessaie automatiquement, ou relancez-le.
exploit/, documentation de premier niveau) sont
sous Apache License 2.0 (voir LICENSE), comme le
PoC IonStack amont dont ce portage est dérivé.ksu/ sont sous GPL-2.0 (voir
ksu/LICENSE) : init-bootid.patch et l'ensemble de politiques ksu_rules.annotated
dérivent du répertoire kernel/ de KernelSU, qui est sous GPL-2.0.