🔍 Contexte

Publié le 13 mai 2026 sur SANS ISC Diary, cet article présente Fragnesia, un exploit d’élévation de privilèges locale (LPE) universel sous Linux, découvert par William Bowling de l’équipe V12 Security. Le code source est disponible publiquement sur GitHub.

🐛 Vulnérabilité

Fragnesia appartient à la classe de vulnérabilités Dirty Frag, distincte du bug original dirtyfrag mais exploitant la même surface d’attaque : le sous-système Linux XFRM ESP-in-TCP. Le bug est un logic bug : le SKB (socket buffer) « oublie » qu’un fragment est partagé lors de la coalescence.

  • Surface : sous-système XFRM ESP-in-TCP du noyau Linux
  • Impact : écriture arbitraire d’octets dans le page cache noyau de fichiers en lecture seule
  • Sans condition de course requise
  • Versions affectées : tous les noyaux Linux antérieurs au 13 mai 2026 (patch : https://lists.openwall.net/netdev/2026/05/13/79)

⚙️ Mécanisme d’exploitation

  1. Namespace utilisateur + réseau : unshare(CLONE_NEWUSER | CLONE_NEWNET) pour obtenir CAP_NET_ADMIN sans privilèges réels sur l’hôte
  2. Installation d’une SA XFRM : association de sécurité ESP-in-TCP en mode transport via NETLINK_XFRM avec AES-128-GCM et clé connue (SPI 0x100)
  3. Table de keystream : construction d’une table de 256 entrées mappant chaque octet de keystream AES-GCM à son nonce IV correspondant via AF_ALG
  4. Trigger splice/ULP : splice de 4096 octets du fichier cible dans le flux TCP, puis activation de TCP_ULP espintcp — le noyau déchiffre le record ESP en place, XORant le keystream dans la page physique du page cache
  5. Écriture octet par octet : répétition pour chaque octet du payload (192 octets)
  6. Exécution : execve("/usr/bin/su") sur le binaire modifié en cache → shell root via setresuid(0,0,0) / setresgid(0,0,0) / execve /bin/sh

⚠️ Points notables

  • La modification du page cache n’est pas persistée sur disque ; le binaire /usr/bin/su sur disque reste intact
  • Après exploitation, toute exécution de su relance un shell root jusqu’à éviction de la page
  • Sur Ubuntu, AppArmor restreint les namespaces non privilégiés par défaut (kernel.apparmor_restrict_unprivileged_userns=0 requis)
  • Mitigation : déchargement des modules esp4, esp6, rxrpc (identique à dirtyfrag)

📋 Type d’article

Il s’agit d’une analyse technique et d’une publication de recherche présentant un exploit LPE Linux avec PoC public, détaillant le mécanisme d’exploitation, les versions affectées et la mitigation disponible.

🧠 TTPs et IOCs détectés

TTP

  • T1068 — Exploitation for Privilege Escalation (Privilege Escalation)
  • T1611 — Escape to Host (Privilege Escalation)
  • T1548 — Abuse Elevation Control Mechanism (Privilege Escalation)

IOC

  • Fichiers : fragnesia.c
  • Chemins : /usr/bin/su
  • Chemins : /bin/sh
  • Chemins : /etc/modprobe.d/dirtyfrag.conf

Malware / Outils

  • Fragnesia (tool)

🟢 Indice de vérification factuelle : 70/100 (haute)

  • ✅ isc.sans.edu — source reconnue (liste interne) (20pts)
  • ✅ 5143 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 4 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ pas d’IOC vérifié (0pts)
  • ✅ 3 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://isc.sans.edu/diary/32980