The skb that wasnt freed - the Fragnesia primitive via Open vSwitch
Mis à jour :
Escalade de privilèges via Open vSwitch (Fragnesia-bis)
Cette vulnérabilité permet à un utilisateur non privilégié d’écrire du contenu arbitraire dans le cache de pages (page cache) de fichiers appartenant au root, entraînant une escalade de privilèges locale (LPE) déterministe. Elle exploite une faille dans la gestion du marqueur de propriété SKBFL_SHARED_FRAG au sein du sous-système réseau du noyau Linux.
Points clés
- Mécanisme : Le noyau utilise le marqueur
SKBFL_SHARED_FRAGpour interdire le déchiffrement “in-place” (sur place) de paquets ESP dont les données sont partagées (non privées). Si le marqueur est perdu, le noyau déchiffre le paquet directement sur les pages du cache, permettant à l’attaquant de corrompre le contenu d’un fichier root. - Déclencheur : Le module
openvswitchdéclenche par erreur une suppression de ce marqueur lors d’une erreur d’upcall, tout en continuant à transférer le paquet. La suppression se produit viaskb_tx_error(), qui efface trop largement les drapeaux zerocopy, y compris celui protégeant l’intégrité de la mémoire. - Conditions d’exploitation :
openvswitchchargé (ou autoloadable via les espaces de noms utilisateur).- Support des espaces de noms utilisateur (unprivileged user namespaces) activé par défaut.
- Attaque basée sur
MSG_ZEROCOPYet l’encapsulation ESP-in-UDP.
Vulnérabilités (CVE)
- CVE-2026-90049
- CVE-2026-89487
- CVE-2026-80977
Recommandations
- Mise à jour : Appliquer les correctifs du noyau fournis par votre distribution (le correctif a été intégré dans le mainline et les versions stables début septembre 2026).
- Blocage du module : Si Open vSwitch n’est pas nécessaire, empêcher son chargement via
/etc/modprobe.d/no-openvswitch.conf:install openvswitch /bin/false - Restriction de surface : Désactiver les espaces de noms utilisateur non privilégiés si l’environnement le permet :
- Mainline :
sysctl -w user.max_user_namespaces=0 - Debian/ dérivés :
sysctl -w kernel.unprivileged_userns_clone=0 - Ubuntu :
sysctl -w kernel.apparmor_restrict_unprivileged_userns=1
- Mainline :
