🐧 Fragnesia : plongez dans les dĂ©tails d’une n-iĂšme Ă©lĂ©vation de privilĂšges dans le noyau Linux par corruption du page cache

Introduction

Quelques jours seulement aprĂšs la divulgation de Dirty Frag (cf. l’article dĂ©taillĂ©e que j’ai rĂ©digĂ© ici), une nouvelle vulnĂ©rabilitĂ© du noyau Linux est apparue, j’ai nommĂ© Fragnesia (CVE-2026-46300).
Cette faille permet Ă  un utilisateur local non privilĂ©giĂ© d’obtenir les droits root en exploitant une corruption logique du page cache du noyau Linux Ă  travers le sous-systĂšme XFRM ESP-in-TCP.

Contrairement à de nombreuses LPE (Local Privilege Escalation) historiques reposant sur des race conditions complexes ou des primitives mémoire instables, Fragnesia fournit un mécanisme particuliÚrement fiable et déterministe pour modifier des fichiers pourtant montés en lecture seule.

Dans cet article, nous allons détailler :

  • le contexte technique de la vulnĂ©rabilitĂ©
  • le fonctionnement interne du page cache Linux
  • le rĂŽle des structures sk_buff
  • l’erreur logique dans skb_try_coalesce()
  • la maniĂšre dont l’écriture arbitraire devient une Ă©lĂ©vation de privilĂšges
  • les implications sĂ©curitĂ© pour les environnements modernes (containers, CI/CD, multi-tenant)
  • les mitigations et correctifs

Contexte : aprĂšs Dirty Frag, Fragnesia

Fragnesia appartient Ă  la mĂȘme famille de vulnĂ©rabilitĂ©s que Dirty Frag : une classe de bugs permettant d’écrire dans le page cache de fichiers protĂ©gĂ©s.

Le chercheur William Bowling a découvert la vulnérabilité dans le sous-systÚme :

  • xfrm
  • ESP-in-TCP
  • gestion des fragments rĂ©seau (skb fragments)

La vulnérabilité est décrite comme un bug logique dans la gestion des fragments partagés (shared frags) lors des opérations de coalescing de buffers réseau.

Le nom « Fragnesia » provient du fait que le noyau « oublie » qu’un fragment mĂ©moire est partagĂ© (nos chers puristes français pourraient nommĂ©e cette vulnĂ©rabilitĂ© « amnĂ©sique du fragment »).


Rappel fondamental : le page cache Linux

Avant d’expliquer l’exploitation, il faut comprendre un Ă©lĂ©ment clĂ© du noyau Linux :

Le page cache

Le noyau Linux maintient en mémoire des pages correspondant aux fichiers récemment utilisés :

Disque <---> Page Cache <---> Processus

Quand un binaire est exécuté :

/usr/bin/su

son contenu est chargé dans le page cache.

Les processus lisent généralement les données depuis ce cache mémoire plutÎt que directement depuis le disque.


Propriété critique : le page cache est partagé

Le page cache est :

  • global au systĂšme
  • partagĂ© entre processus
  • partagĂ© entre containers
  • partagĂ© entre namespaces

Cela signifie que si un attaquant réussit à modifier une page du cache associée à :

/usr/bin/su

alors tous les processus utilisant ce fichier verront la version modifiée.

C’est prĂ©cisĂ©ment ce qui rend Fragnesia extrĂȘmement dangereux.


Le sous-systĂšme XFRM et ESP-in-TCP

La vulnérabilité réside dans :

net/xfrm/

XFRM

XFRM est l’infrastructure Linux utilisĂ©e pour :

  • IPsec
  • encapsulation ESP
  • politiques de transformation rĂ©seau

ESP (Encapsulating Security Payload) peut ĂȘtre transportĂ© via TCP :

ESP-in-TCP

Le traitement des paquets utilise intensivement les structures :

struct sk_buff

Ce n’est pas un hasard si le nom de cette structure vous dit quelque chose si vous avez suivi l’actualitĂ© des vulnĂ©rabilitĂ©s du kernel Linux !


Les structures sk_buff

Sous Linux, quasiment tout le trafic réseau passe par :

struct sk_buff

Cette structure représente un paquet réseau.

Elle contient notamment :

  • les donnĂ©es du paquet
  • des pointeurs vers des fragments mĂ©moire
  • des mĂ©tadonnĂ©es rĂ©seau
  • des flags de gestion mĂ©moire

Simplification :

struct sk_buff {
...
skb_shared_info *shinfo;
...
}

Les fragments partagés

Pour éviter les copies mémoire coûteuses, Linux réutilise des fragments :

Page mémoire
↑
skb A
skb B
skb C

Plusieurs buffers peuvent rĂ©fĂ©rencer la mĂȘme page physique.

Le noyau utilise alors des flags comme :

SKBFL_SHARED_FRAG

afin d’indiquer :

Attention, ce fragment est partagé, ne pas le modifier directement.


Le bug : perte du flag SHARED_FRAG

Le cƓur de Fragnesia se situe dans :

skb_try_coalesce()

Cette fonction fusionne plusieurs fragments rĂ©seau afin d’amĂ©liorer les performances.

Le problĂšme :

  • pendant certaines opĂ©rations de coalescing
  • le flag SKBFL_SHARED_FRAG n’est pas correctement propagĂ©
  • le noyau croit alors que le fragment est privĂ©
  • il effectue une Ă©criture directe dans une page partagĂ©e

Autrement dit :

Fragment réellement partagé
↓
Flag perdu
↓
Le noyau pense que la mémoire est privée
↓
Écriture autorisĂ©e
↓
Corruption du page cache

Pourquoi c’est catastrophique

Normalement, modifier un fichier root-owned comme :

/usr/bin/su

nécessite :

  • les permissions root
  • ou un accĂšs disque privilĂ©giĂ©

Mais Fragnesia ne modifie pas le fichier sur disque.

Elle modifie la copie mémoire du fichier présente dans le page cache.

Le VFS et les permissions UNIX sont donc totalement contournés.


De l’écriture arbitraire Ă  root

L’exploitation suit gĂ©nĂ©ralement ce schĂ©ma :

1. Préparation du fragment partagé

L’attaquant force la crĂ©ation d’un skb rĂ©fĂ©rençant une page du page cache.

2. Coalescing vulnérable

Le noyau fusionne des buffers réseau :

skb_try_coalesce()

Le flag SKBFL_SHARED_FRAG disparaĂźt.

3. Écriture dans le page cache

Le noyau autorise une écriture dans une page qui :

  • appartient en rĂ©alitĂ© au page cache
  • correspond Ă  un fichier systĂšme
  • est supposĂ©e read-only

4. Corruption d’un binaire SUID

Le PoC public cible :

/usr/bin/su

Le shellcode ou le patch injectĂ© transforme le binaire afin d’obtenir :

euid=0

Pourquoi l’exploitation est particuliùrement fiable

Beaucoup d’exploits kernel historiques reposent sur :

  • UAF fragiles
  • race conditions
  • heap feng shui
  • sprays mĂ©moire complexes

Fragnesia est plus simple.

Le chercheur indique explicitement :

without requiring any race condition

Cela change Ă©normĂ©ment la stabilitĂ© de l’exploitation :

VulnérabilitéStabilité
Dirty COWdĂ©pend d’une race condition
Heap overflow kernelsouvent instable
UAF kerneldépend du layout mémoire
Fragnesiadéterministe

Pourquoi les containers sont fortement exposés

Fragnesia est particuliÚrement problématique dans les environnements :

  • Kubernetes
  • CI runners
  • build farms
  • PaaS multi-tenant
  • hĂ©bergeurs mutualisĂ©s

Pourquoi ? Parce que le page cache est partagé entre containers !

Un container non privilĂ©giĂ© peut donc modifier le page cache visible par l’hĂŽte, mĂȘme sans accĂšs root dans le container.

C’est exactement le type de primitive recherchĂ© pour :

  • container escape
  • breakout Kubernetes
  • Ă©lĂ©vation de privilĂšges cloud

Différence entre Dirty Frag et Fragnesia

Bien qu’ils appartiennent Ă  la mĂȘme famille, les bugs diffĂšrent.

Dirty Frag

Dirty Frag utilisait plusieurs vulnérabilités chaßnées :

  • RXRPC
  • XFRM
  • corruption du page cache

Fragnesia

Fragnesia :

  • exploite uniquement ESP/XFRM
  • repose sur un bug logique distinct
  • ne nĂ©cessite pas la chaĂźne Dirty Frag complĂšte
  • possĂšde son propre patch

Le correctif

Le patch proposĂ© est extrĂȘmement petit, seulement 2 lignes, selon les premiĂšres analyses publiques.

Le correctif consiste essentiellement Ă  :

  • prĂ©server correctement le flag SKBFL_SHARED_FRAG
  • pendant les opĂ©rations de coalescing.

En simplifiant :

if (frag_is_shared)
propagate_shared_flag();

Mitigations temporaires

En attendant les patches kernel :

modprobe -r esp4
modprobe -r esp6
modprobe -r rxrpc

ou blacklist des modules concernés.


Attention : patcher ne suffit pas toujours

Point trĂšs important :

Si la machine a déjà été compromise, le page cache peut contenir des binaires corrompus.

Certaines distributions recommandent :

echo 3 > /proc/sys/vm/drop_caches

Cela permet alors de purger le cache mémoire.


Pourquoi cette série de vulnérabilités inquiÚte autant

Copy Fail → Dirty Frag → Fragnesia.

Trois vulnérabilités majeures du noyau Linux révélées en peu de temps.

Le point commun : corruption de mémoire liée à des chemins réseau complexes.

Cela montre plusieurs tendances :

1. Les surfaces réseau du kernel sont gigantesques

Le noyau Linux contient :

  • des dĂ©cennies de compatibilitĂ©
  • de multiples protocoles
  • des optimisations mĂ©moire agressives

2. Les optimisations « zero-copy » deviennent dangereuses

Pour gagner en performances :

  • rĂ©utilisation de pages
  • partage de fragments
  • coalescing
  • rĂ©fĂ©rence-counting complexe

Mais plus les optimisations mémoire augmentent, plus les invariants deviennent fragiles.

3. Les outils d’audit assistĂ©s par IA accĂ©lĂšrent la dĂ©couverte

Plusieurs discussions publiques mentionnent l’usage d’outils automatisĂ©s et d’analyse assistĂ©e par IA dans la dĂ©couverte de ces bugs.

Cela pourrait annoncer une augmentation massive du volume de vulnérabilités kernel découvertes dans les prochaines années.


Détection et forensic

Détecter Fragnesia est difficile car :

  • le disque n’est pas modifiĂ©
  • seule la mĂ©moire cache l’est
  • la compromission peut disparaĂźtre aprĂšs reboot

Indicateurs possibles :

  • corruption mĂ©moire de binaires SUID
  • comportement anormal de su, sudo, passwd
  • modules XFRM chargĂ©s inutilement
  • traces d’exploitation locales
  • crashs rĂ©seau inhabituels

Microsoft indique également que les signatures utilisées pour Dirty Frag détectent certains PoC Fragnesia.


Conclusion

Fragnesia est un excellent exemple de vulnérabilité moderne du noyau Linux :

  • bug logique subtil ;
  • corruption indirecte ;
  • exploitation dĂ©terministe ;
  • contournement complet du modĂšle UNIX ;
  • impact majeur sur les infrastructures cloud et containerisĂ©es.

Cette vulnérabilité rappelle surtout une réalité fondamentale :

la sécurité du noyau dépend désormais fortement de la cohérence des optimisations mémoire internes.

Les mĂ©canismes modernes de performance – page cache partagĂ©, zero-copy, coalescing, rĂ©fĂ©rences partagĂ©es – deviennent des cibles privilĂ©giĂ©es pour les chercheurs offensifs.

Et avec l’émergence des outils d’audit automatisĂ©s assistĂ©s par IA, il est probable que ce type de vulnĂ©rabilitĂ© ne soit qu’un dĂ©but.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *