Contexte et portée

Le CVE‑2026‑98432 a été publié avec un score CVSS 3.1 de 9.8, classé critique. Il affecte tous les noyaux Linux à partir de la version 4.4 qui n’intègrent pas le correctif. Les versions corrigées en amont sont 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 et 7.3. Les distributions ne sont pas synchrones : Debian 12 « bookworm », Debian 13 « trixie », SUSE Linux Enterprise Server 16.0 et les versions LTSS de SLES 15 sont déjà patchées, alors qu’Ubuntu, Red Hat Enterprise Linux (8, 9, 10) et Amazon Linux 2 restent vulnérables au moment du relevé (29 octobre 2026, 20 h CDT).

Mécanisme de la vulnérabilité

Lors de la réception d’une connexion IPv4, le noyau crée d’abord un request socket pour suivre la moitié de la poignée. Si l’en‑tête IPv4 du client contient des options, le noyau les stocke dans inet_opt et ireq_opt afin de les renvoyer dans la réponse. Le bug réside dans le fait que ces structures sont transférées au socket complet sans copie, puis libérées immédiatement avec kfree(). Un autre CPU peut encore lire ces zones pendant la construction de la réponse, entraînant un accès à de la mémoire déjà libérée — un use‑after‑free. La faille se déclenche avant toute interaction applicative, ce qui permet à un attaquant non authentifié d’exécuter du code en tant que root, notamment sur des serveurs exposant un écouteur Multipath TCP (MPTCP). Anthropic a démontré un PoC qui obtient un shell root en exploitant ce race condition.

/* Corrected fragment */
kfree_rcu(inet_opt, rcu);
kfree_rcu(ireq_opt, rcu);

Correction apportée

Le correctif, soumis par Eric Dumazet, remplace les appels kfree() par kfree_rcu(), garantissant que la libération ne s’effectue qu’après la fin de toutes les lectures RCU. Cette modification, limitée à quatre lignes, couvre également le chemin de migration du request‑socket (paramètre net.ipv4.tcp_migrate_req=1 ou programme BPF SK_REUSEPORT_SELECT_OR_MIGRATE). Un patch distinct traitera le cas IPv6 mentionné dans le commit. Les distributions qui intègrent ce correctif doivent redéployer le noyau et redémarrer pour activer la version patchée.

Recommandations de mitigation

1. Vérifier la version du noyau en cours d’exécution (uname -r) et la comparer aux versions listées comme corrigées. 2. Sur les systèmes où le correctif n’est pas encore disponible, désactiver les écouteurs MPTCP : sysctl -w net.mptcp.enabled=0 et s’assurer qu’aucun socket MPTCP n’est ouvert (ss -M doit être vide). 3. Appliquer les mises à jour de sécurité dès leur publication et redémarrer les hôtes, y compris les nœuds Kubernetes et les hôtes de conteneurs, car les conteneurs reflètent le noyau de l’hôte. 4. Sur les environnements où le patch ne peut être déployé immédiatement, surveiller les journaux du noyau pour des traces de use‑after‑free ou de plantages liés à la poignée TCP, et envisager l’isolation réseau des services exposés.