🔍 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 dans ireq->ireq_opt
  • tcp_v4_syn_recv_sock() transfère le pointeur vers le socket enfant sans copie
  • Un SYN retransmis concurrent lit ireq->ireq_opt sous rcu_read_lock() via ip_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) et firewall (CAP_NET_ADMIN, cibles distantes)

🧪 Preuves expérimentales

  • KASAN lab (KVM) : rapport slab-use-after-free in ip_options_build avec 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

  • CVEs : CVE-2026-98432 — NVD · CIRCL

⚠️ À 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