EN
en direct

GhostLock donne root en cinq secondes via un use-after-free de quinze ans dans rtmutex

CVE-2026-43499, baptisée GhostLock, est un use-after-free dans le code d’héritage de priorité de rtmutex, présent depuis le noyau 2.6.39 et exploitable par n’importe quel processus local non privilégié. Le correctif est dans la 7.1, mais deux mois après le PoC, quelques angles morts comme le kernel-rt de RHEL 9 subsistent : vérifiez votre version et bloquez les futex PI en attendant.

Deux engrenages métalliques sombres imbriqués, une seule dent fissurée et marquée d’un éclat ambre.

7 juillet 2026. Nebula Security publie l’analyse de GhostLock (CVE-2026-43499), un use-after-free dans le code d’héritage de priorité de rtmutex. 8 juillet 2026. Un proof-of-concept public obtient un shell root en cinq secondes, avec 97 % de fiabilité. Septembre 2026. Red Hat accélère encore la publication des correctifs dans le bulletin RHSB-2026-010. Pourquoi c’est important : le bug dort dans le noyau depuis 2011, n’exige aucun privilège, et s’évade d’un conteneur vers l’hôte.

Le bug : un use-after-free sur la pile du noyau

La faille vit dans kernel/locking/rtmutex.c, au cœur de la fonction remove_waiter(), qui déroule une demande de verrou quand une opération doit être annulée. Cette routine part du principe que le thread qui nettoie possède toujours la demande qu’il détruit.

Ce principe se brise sur le chemin FUTEX_CMP_REQUEUE_PI. Lors d’une requeue avec héritage de priorité, le noyau peut détecter un cycle de deadlock et appeler remove_waiter() dans un contexte où l’hypothèse ne tient plus : le verrou appartient à une autre tâche. La fonction efface alors pi_blocked_on sur la mauvaise tâche et laisse un pointeur vers de la mémoire de pile déjà libérée — un use-after-free classique.

L’exploitation consiste à récupérer cette zone libérée avec une allocation soigneusement façonnée, à y placer une structure noyau forgée, puis à déréférencer le pointeur pendant pour obtenir une écriture contrôlée. De là, le passage au root est direct. La seule condition est CONFIG_FUTEX_PI, activé par défaut dans toutes les grandes distributions : pas de privilège, pas de capacité, pas de namespace requis.

La découverte tient aussi à la méthode : Nebula Security a trouvé le bug avec VEGA, un outil d’analyse statique assisté par l’IA. Google a récompensé la soumission à hauteur de 92 337 dollars via kernelCTF. Un use-after-free de quinze ans, trouvé par une machine, résume bien la nouvelle donne du bug hunting.

L’épisode valide une tendance à prendre au sérieux : la chasse aux bugs assistée par IA commence à faire remonter des défauts vieux de plusieurs décennies que des années de revue humaine n’avaient pas vus. Ce n’est pas une accusation contre les auteurs du code — c’est le rappel que les adversaires disposent désormais d’outils qui lisent le code autrement que les auditeurs ne l’ont historiquement fait. Un use-after-free dormant depuis 2011 dans du code de verrouillage, trouvé par une machine, est le symbole de cette bascule.

Pourquoi « local » n’est pas rassurant

Les failles d’élévation de privilèges locales sont souvent reléguées au second plan parce qu’elles supposent un pied déjà dans la place. GhostLock mérite mieux.

Sur un serveur mutualisé, l’accès local est la situation de départ : chaque processus PHP d’un locataire, chaque cron, chaque compte mail compte. Une simple injection SQL ou un plugin obsolète suffit à déposer un web shell ; GhostLock transforme ce processus local en root sur l’hôte entier, pas seulement sur le compte compromis.

Les conteneurs ne sont pas à l’abri non plus. Le bug fonctionne depuis un conteneur standard, sans user namespace privilégié. La chaîne IonStack l’a démontré : des chercheurs ont enchaîné une évasion de bac à sable Firefox (CVE-2026-10702) avec GhostLock pour obtenir un compromis « page web vers noyau » sur Firefox Android. Pour un hébergeur qui exécute des charges conteneurisées, le modèle de menace s’effondre dès qu’un seul conteneur peut déclencher ce chemin.

L’état du patch, deux mois après

Le correctif amont (3bfdc63936dd, « rtmutex: Use waiter::task instead of current in remove_waiter() ») est arrivé dans la 7.1, puis a été rétroporté sur toutes les branches maintenues : 7.0.4, 6.18.27, 6.12.86, 6.6.140, 6.1.175, 5.15.212 et 5.10.261, entre mai et juillet 2026. Debian a résolu ses suites jusqu’au bullseye LTS (DLA-4717-1, le 4 août), juste avant sa fin de support.

Il reste des angles morts. Red Hat confirme que CVE-2026-43499 et son compagnon CVE-2026-53166 — un plantage introduit par le premier correctif — touchent RHEL 6 à 10 et tous les produits en couches (OpenShift, OpenStack, Virtualisation). Le suivi communautaire kimmo.cloud note que le kernel-rt de RHEL 9 n’avait pas encore reçu le correctif au dernier pointage, et qu’Amazon Linux 2, en fin de support depuis le 30 juin, ne recevra plus aucun correctif.

CVE-2026-53166 mérite une attention à part : elle découle du correctif initial, ce qui explique pourquoi le paysage de patchs a mis deux mois à se stabiliser.

Comment fermer le chemin

Le correctif du noyau est la seule remédiation complète, mais des parades intermédiaires existent.

bash
# Vérifier la version du noyau en cours
uname -r

# RHEL 8 / 9 / 10 : appliquer le noyau corrigé puis redémarrer
dnf update kernel
reboot

# Sur CloudLinux : vérifier qu'un livepatch GhostLock est appliqué
kcarectl --patch-info | grep CVE-2026-43499

Un profil seccomp qui bloque les trois opérations futex PI — FUTEX_LOCK_PI, FUTEX_WAIT_REQUEUE_PI et FUTEX_CMP_REQUEUE_PI — coupe le chemin de déclenchement sans toucher au noyau. Le coût est réel : toute application qui utilise des mutex à héritage de priorité cassera. Pour la plupart des charges web, c’est une mesure temporaire viable ; pour des services temps réel, non.

Les options de build RANDOMIZE_KSTACK_OFFSET et STATIC_USERMODE_HELPER élèvent la barre d’exploitation, mais ne corrigent pas le bug : elles ne doivent pas être traitées comme une mitigation à elles seules.

Le paradoxe du temps réel

Il y a une ironie dans le fait que le bug vive précisément dans rtmutex, le chemin du noyau réservé au temps réel et à l’héritage de priorité. Les noyaux -rt (PREEMPT_RT) sont ceux qui utilisent le plus ce code — et pourtant ce sont eux que les distributions corrigent en dernier, parce que le patchset -rt vit dans une arborescence séparée, souvent décalée de plusieurs semaines par rapport au noyau standard.

C’est ce qui explique l’angle mort documenté par kimmo.cloud : le kernel-rt de RHEL 9 attendait encore son correctif au dernier pointage, alors que le noyau standard de la même version était déjà couvert. Pour une salle de marché, un automate industriel ou tout système qui tourne sous noyau temps réel, la parade seccomp qui bloque les futex PI est précisément celle qui risque de casser l’héritage de priorité dont dépend l’application. Le temps réel cumule donc l’exposition maximale et la marge de manœuvre minimale.

Verdict

GhostLock est le rappel qu’un bug de quinze ans dans du code de verrouillage générique touche tous les noyaux, toutes les architectures, tous les hébergeurs.

Si votre noyau est antérieur aux versions corrigées (7.0.4, 6.18.27, 6.12.86, 6.6.140, 6.1.175, 5.15.212, 5.10.261), appliquez le backport et redémarrez sans attendre, puis déployez un blocage seccomp des futex PI là où la charge le permet. Si vous tournez sur RHEL 9 kernel-rt ou Amazon Linux 2, vous êtes dans un angle mort : migrez vers un noyau patché ou une distribution encore supportée, car aucun correctif n’est garanti. Et tant que ce n’est pas fait, traitez toute compromission d’application comme un événement de niveau noyau.

Références

Le brief cyber, chaque mardi

Les failles qui comptent, les correctifs à appliquer, en dix minutes de lecture.

Pas de spam. Désinscription en un clic.
à lire ensuite

Sur le même sujet

GNU Coreutils 9.12 accélère cut et uniq et corrige une course des options récursives

La version 9.12 de GNU Coreutils, publiée le 14 septembre 2026, livre des gains mesurés — cut jusqu’à 4× plus rapide, uniq jusqu’à 2,5× — et corrige une course qui faisait échouer les commandes -R face à des fichiers supprimés en parallèle. Une sortie de maintenance qui rappelle que la boîte à outils GNU reste, face à sa réécriture Rust, le socle par défaut des distributions.

Un mainteneur de Void Linux orpheline 113 paquets après un différend sur la politique IA

Le 12 septembre 2026, le contributeur Andrea Brancaleoni orpheline 113 paquets Void Linux — dont Kubernetes, Docker, Terraform et Thermald — après s’être vu reprocher l’usage non déclaré d’un LLM dans un commentaire de mise à jour. La politique IA des projets libres devient un enjeu de continuité de maintenance autant qu’une question d’éthique de contribution.

← Retour au fil

Tapez au moins deux caractères.

naviguer ouvrir esc fermer