CVE-2026-43499 — GhostLock sur Huawei Nova 9 (NAM-AL00)
Recherche sécurité : confirmation sur appareil et analyse d'exploitation de CVE-2026-43499 (GhostLock)
sur Huawei Nova 9 (NAM-AL00, Snapdragon 778G/SM7325, HarmonyOS 4.2.0.185, noyau 5.4.86-qgki).
Résumé
CVE-2026-43499 est une use-after-free de pile dans le sous-système rt_mutex du noyau Linux,
introduite en v2.6.39 (2011). Ce dépôt confirme que la vulnérabilité se déclenche
de manière déterministe sur NAM-AL00 avec HMOS 4.2 et SPL 2025-07-01, documente la
méthodologie d'exploitation complète et analyse pourquoi le root complet n'a pas été obtenu.
Confirmé
- ✅ Le rollback EDEADLK se déclenche de manière déterministe (déclencheur du bug)
- ✅ KASLR contourné à chaque démarrage via la fuite de callchain perf_event
- ✅ Récupération complète des symboles (224 986 symboles depuis l'Image brute)
- ✅ Livraison à double planter vérifiée alignée (pselect6 + PR_SET_MM_MAP)
- ✅ La marche consomme les champs de waiter forgés (wedge = preuve de déréférencement)
Non atteint
- ❌ Preuve d'écriture arbitraire (la sémantique de marche modifiée par Huawei empêche une terminaison propre)
- ❌ Root temporaire (bloqué par le nettoyage post-exit + divergence en cours de marche)
Résultats clés
| Résultat | Détail |
|---|
| HKIP | ABSENT sur SM7325 (EL2 = Qualcomm Haven) |
| SLAB_FREELIST_HARDENED |
Fichiers
poc/poc_trigger.c — déclencheur EDEADLK déterministe (PoC étape 1)
poc/perf_probe.c — extraction du slide KASLR via perf_event
exploit/stage3_main.c — pipeline intégré (déclenchement→plantation→perçage→oracle)
exploit/escalate.c — cœur d'élévation post-écriture (cred/sid/seccomp)
exploit/stage2_forge.h — compositeur de rt_mutex_waiter forgé
sim/sim_final.py — oracle émulateur Unicorn (trace de marche hors ligne)
offsets/offset.h — toutes les adresses de symboles et mises en page de structures vérifiées
analysis/kernel.config — configuration de compilation extraite
analysis/symbols.txt — 224 986 entrées kallsyms récupérées
Compilation
# PoC de déclenchement
${NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang \
-O2 -static -pthread -o poc_trigger poc/poc_trigger.c
# Exécution sur l'appareil
adb push poc_trigger /data/local/tmp/
adb shell /data/local/tmp/poc_trigger 10
Références
Licence
MIT