🔍 Contexte
Publié sur GitHub (xen0bit/netprobe-cve-2026-98432), ce dépôt présente une analyse technique approfondie de la CVE-2026-98432, une vulnérabilité de type Use-After-Free (UAF) dans la pile TCP IPv4 du noyau Linux, accompagnée d’un outil de détection réseau nommé netprobe.
🐛 Nature de la vulnérabilité
La vulnérabilité réside dans la gestion des options IP lors de l’établissement d’une connexion TCP :
tcp_v4_init_req()stocke les options IP du SYN dansireq->ireq_opttcp_v4_syn_recv_sock()transfère le pointeur vers le socket enfant sans copie- Un SYN retransmis concurrent lit
ireq->ireq_optsousrcu_read_lock()viaip_options_build() - Si le socket enfant est libéré avant cette lecture, il y a use-after-free
- Le noyau copie alors les octets périmés dans un SYN-ACK, ce qui constitue le signal de détection sur le fil
Le correctif est le commit e3f33b0a1d89d738e2b913dab519226eaf76e15b : remplacement de kfree() par kfree_rcu() dans inet_sock_destruct() et tcp_v4_reqsk_destructor().
⚠️ Exploitabilité réelle
L’auteur nuance fortement les affirmations d’exploitation en ~45 minutes par des labs d’IA via MPTCP :
- La fenêtre de race condition est de ~10 ns (quelques instructions entre le chargement et la déréférence)
- Le free intervient ~90 µs plus tard (accept + close)
- Sur un noyau standard (!PREEMPT_RT), les softirqs sont sérialisés et l’affinité de flux (RSS/RPS) place les paquets sur le même CPU
- Conditions rendant l’exploitation plus praticable : VMs virtualisées/surchargées, noyaux avec
PREEMPT_RT,threadirqs, ou steering per-paquet personnalisé - Les tests en laboratoire (140k tentatives, 1,6M fenêtres indépendantes) ont produit zéro UAF sans étirement artificiel de la fenêtre
🛠️ Outil netprobe
L’outil netprobe permet une détection black-box distante sans crash ni exploitation :
- Mode
preconditions: vérifie si les options IP sont atteignables sur la cible - Mode
race: tente de capturer une anomalie structurelle dans l’écho SYN-ACK (preuve de lecture mémoire libérée) - Mode
verify-local: analyse statique du vmlinux (kfree → VULNERABLE, kvfree_call_rcu → PATCHED) - Verdicts possibles :
CONFIRMED_VULNERABLE,INCONCLUSIVE,NOT_REACHABLE(jamais “patched” à distance) - Deux modes réseau :
spoof(CAP_NET_RAW, cibles locales) etfirewall(CAP_NET_ADMIN, cibles distantes)
🧪 Preuves expérimentales
- KASAN lab (KVM) : rapport
slab-use-after-free in ip_options_buildavec stacks complets, 30 enregistrements READ-AFTER-FREE (71–322 µs après le free) - Noyau non-KASAN : SYN-ACK capturé contenant les octets sprayed (
42 04 be ef…) - Contrôle kfree_rcu : 0 KASAN, 0 read-after-free avec le même trafic
📋 Type d’article
Publication de recherche technique combinant analyse de vulnérabilité, évaluation d’exploitabilité et outil de détection open-source. But principal : fournir une preuve technique rigoureuse de la vulnérabilité et un outil de détection réseau sans exploitation.
🧠 TTPs et IOCs détectés
TTP
- T1210 — Exploitation of Remote Services (Lateral Movement)
- T1499.004 — Endpoint Denial of Service: Application or System Exploitation (Impact)
IOC
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 3 novembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- netprobe (tool)
🔴 Indice de vérification factuelle : 34/100 (basse)
- ⬜ github.com — source non référencée (0pts)
- ✅ 13492 chars — texte complet (fulltext extrait) (15pts)
- ✅ 1 IOC(s) (6pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 2 TTP(s) MITRE (8pts)
- ⬜ date RSS ou approximée (0pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ✅ 1/1 CVE(s) confirmée(s) (CIRCL) (5pts)
🔗 Source originale : https://github.com/xen0bit/netprobe-cve-2026-98432