🔍 Contexte
Publié le 7 juillet 2026 par Nebula Security (nebusec.ai), cet article de recherche détaille GhostLock (CVE-2026-43499), une vulnérabilité de type stack Use-After-Free (UAF) dans le noyau Linux, découverte par l’équipe VEGA. La faille a été récompensée par Google à hauteur de 92 337 USD dans le cadre du programme kernelCTF.
🐛 Vulnérabilité
- Type : Stack Use-After-Free (stack-UAF)
- Composant affecté :
kernel/locking/rtmutex.c, fonctionremove_waiter() - Versions affectées : Linux v2.6.39-rc1 à v7.1-rc1 (introduite en 2011 avec le rework rtmutex)
- Condition requise :
CONFIG_FUTEX_PI=yuniquement — aucun privilège, aucun namespace utilisateur requis - Cause racine :
remove_waiter()effacecurrent->pi_blocked_onau lieu dewaiter->task->pi_blocked_onsur le chemin proxy (rt_mutex_start_proxy_lock()), laissant un pointeur dangling vers une stack frame libérée
⚙️ Mécanisme d’exploitation
L’exploit nécessite trois futex et trois threads pour construire un cycle de dépendance PI déclenchant un -EDEADLK :
- GhostLock : obtention d’un pointeur dangling
pi_blocked_onvers la stack du waiter - Stack reclaim : utilisation de
prctl(PR_SET_MM, PR_SET_MM_MAP)pour réécrire la frame libérée avec un fauxrt_mutex_waiterforgé - Primitive d’écriture contrainte : via rb-tree erase, écriture d’un pointeur vers une adresse quasi-arbitraire
- Cible :
inet6_protos[IPPROTO_UDP]redirigé vers la CPU Entry Area (CEA) - Control Flow Hijack : envoi d’un paquet UDP IPv6 loopback déclenche le handler forgé
- DirtyMode : un court ROP écrit une valeur permissive sur
coredump_sysctls[1].mode, rendant/proc/sys/kernel/core_patternaccessible en écriture par tout utilisateur - LPE final : écriture de
|/proc/%P/fd/666 %Pdanscore_patternpour exécuter un binaire en root
🛡️ Techniques de bypass
- KASLR : leak via timing prefetch (~9 bits d’entropie, fiabilité quasi-100%)
- CEA randomization (depuis Linux 6.2) : contournée via l’alias direct-map physmap
- RANDOMIZE_KSTACK_OFFSET : réduit la fiabilité du reclaim à ~1/32 (non activé sur les cibles kernelCTF)
🔧 Patch
La correction remplace current->pi_blocked_on = NULL par waiter_task->pi_blocked_on = NULL en verrouillant le bon pi_lock. Backportée le 2026-05-04.
📅 Timeline
- 2026-04-18 : Rapport à security@kernel.org
- 2026-04-20 : Fix appliqué
- 2026-05-04 : Backport v1
- 2026-06-30 : Acknowledgement Google kernelCTF
- 2026-07-07 : Publication
📄 Type d’article
Publication de recherche offensive détaillée avec PoC open-source (projet CyberMeowfia), visant à documenter techniquement la vulnérabilité et son exploitation complète sur x86_64 Linux.
🧠 TTPs et IOCs détectés
TTP
- T1068 — Exploitation for Privilege Escalation (Privilege Escalation)
- T1203 — Exploitation for Client Execution (Execution)
- T1611 — Escape to Host (Privilege Escalation)
- T1574 — Hijack Execution Flow (Defense Evasion)
- T1055 — Process Injection (Defense Evasion)
IOC
🟡 Indice de vérification factuelle : 46/100 (moyenne)
- ⬜ nebusec.ai — source non référencée (0pts)
- ✅ 26206 chars — texte complet (fulltext extrait) (15pts)
- ✅ 2 IOC(s) (6pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 5 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ 0/1 CVE(s) confirmée(s) (0pts)
🔗 Source originale : https://nebusec.ai/research/ionstack-part-2/