CVE-2026-46331, surnommée « Pedit COW », est une vulnérabilité d’écriture hors limites (out-of-bounds write) dans le sous-système traffic-control (tc) du noyau Linux, plus précisément dans l’action act_pedit. Elle permet à un utilisateur local non privilégié d’obtenir un accès root complet. Publiée le 16 juin 2026, elle a vu apparaître un PoC fonctionnel sur GitHub en moins de 24 heures.
Résumé technique
La faille réside dans la fonction tcf_pedit_act() du fichier net/sched/act_pedit.c. Cette fonction calcule la plage de copy-on-write (COW) pour skb_ensure_writable() une seule fois, avant la boucle de traitement des clés, en s’appuyant sur la valeur tcfp_off_max_hint.
Le problème : ce « hint » ne prend pas en compte le décalage d’en-tête (header offset) ajouté au moment de l’exécution par les clés typées. Une partie de la zone d’écriture peut donc rester non « COW-ée ». L’attaquant peut ainsi écrire en dehors de la limite copy-on-write prévue et corrompre des données dans la mémoire partagée du page cache.
Le caractère particulièrement dangereux de cette faille tient à un point : l’attaque cible le cache mémoire du système et non les fichiers réellement stockés sur disque. Les contrôles d’intégrité de fichiers traditionnels (AIDE, Tripwire, etc.) sont donc inopérants face à ce vecteur.
| Caractéristique | Détail |
|---|---|
| Identifiant | CVE-2026-46331 |
| Surnom | Pedit COW |
| Composant | Noyau Linux — net/sched/act_pedit.c (sous-système tc) |
| Type | Écriture hors limites → élévation de privilèges locale (LPE) |
| Impact | Accès root pour un utilisateur local non privilégié |
| Date de publication | 16 juin 2026 |
| Prérequis | CAP_NET_ADMIN (obtenable via user namespaces non privilégiés) |
Distributions et versions impactées
La vulnérabilité touche un très large éventail de branches du noyau, depuis la 4.19 jusqu’aux versions récentes tant qu’elles ne sont pas patchées.
| Distribution | Versions concernées | Statut |
|---|---|---|
| Debian | 11 (Bullseye), 12 (Bookworm), 13 (Trixie) | Vulnérable — correctif disponible pour Trixie |
| Ubuntu | 18.04 → 26.04 | Vulnérable — 26.04 dispose d’une mitigation AppArmor |
| RHEL | 8, 9, 10 | Affecté (ainsi que RHOSP, RHV et RHEL CoreOS) |
Côté branches du noyau amont, sont notamment concernées : 4.19.244+, 5.4.195+, 5.10.117+, 5.15.41+, 5.17.9+, ainsi que la 5.18 et ultérieures tant que le correctif n’est pas appliqué.
Preuve de concept (PoC) pas à pas
Un PoC public surnommé packet_edit_meme a été publié sur GitHub moins de 24 heures après l’assignation de la CVE. La chaîne d’exploitation suit la logique ci-dessous. Elle est présentée à des fins pédagogiques et défensives uniquement.
- Obtenir
CAP_NET_ADMIN— L’attaquant crée un user namespace non privilégié, ce qui lui octroie la capabilityCAP_NET_ADMINà l’intérieur de ce namespace sans nécessiter de droits root réels.unshare -Ur(ou viaclone()avecCLONE_NEWUSER | CLONE_NEWNET). - Charger le module
act_pedit— La simple configuration d’une règle tc pedit déclenche généralement le chargement automatique du module. - Configurer une action pedit via tc — Mise en place d’un qdisc puis d’un filtre avec une action
peditutilisant des clés typées (ex. décalages d’en-tête TCP/UDP) afin de provoquer unoff_max_hintsous-évalué par rapport au décalage runtime réel.tc qdisc add dev lo clsacttc filter add dev lo egress matchall action pedit ex munge ... - Cibler la copie en cache d’un binaire setuid — L’attaquant vise la version cachée en mémoire d’un binaire setuid-root, typiquement
/bin/suou/usr/bin/sudo. - Déclencher l’écriture hors limites — En faisant transiter un paquet forgé à travers la règle pedit, l’écriture déborde de la plage COW et corrompt la page du page cache correspondant au binaire visé, y injectant du shellcode ou modifiant son comportement.
- Exécuter le binaire empoisonné — L’exécution du binaire setuid compromis fournit un shell root, le tout sans jamais modifier le fichier sur disque.
Correctifs et atténuations
L’installation d’un noyau corrigé suivie d’un redémarrage est la seule solution complète. Le correctif déplace la vérification d’écriture (skb_ensure_writable()) à l’intérieur de la boucle par clé et ajoute une protection contre les débordements d’entier sur le calcul de l’offset.
- Debian :
apt update && apt upgradepuis reboot — voir le Debian Security Tracker. - Ubuntu :
apt update && apt upgradepuis reboot — voir l’avis de sécurité Ubuntu. - RHEL :
dnf update kernelpuis reboot — consulter le portail Red Hat Customer Portal. - Référence officielle : Fiche NVD CVE-2026-46331 et l’avis GitHub GHSA-cr2w-747q-47qc.
- Commits du noyau amont :
2bec122b9fb9,3dee9d0c198f,899ee91156e5,b198ed4e5258(kernel.org).
Atténuations temporaires (en attendant le patch)
- Blacklister le module
act_peditsi votre environnement n’utilise pas de règles tc pedit :echo "install act_pedit /bin/true" > /etc/modprobe.d/disable-act_pedit.conf - Désactiver les user namespaces non privilégiés (coupe le vecteur d’obtention de
CAP_NET_ADMIN) :sysctl -w kernel.unprivileged_userns_clone=0(Debian/Ubuntu)
ousysctl -w user.max_user_namespaces=0. - Vérifier l’impact de ces mesures sur vos conteneurs (Docker, LXC) qui peuvent dépendre des user namespaces.
Vérifier sa version de noyau
uname -r
# Comparer avec la version corrigée annoncée par votre distribution
Divulgation responsable. Cet article est publié à des fins d’information, de sensibilisation et de défense. Les détails d’exploitation sont volontairement présentés à un niveau conceptuel et reposent sur des informations déjà publiques (NVD, avis éditeurs, PoC déjà diffusés). N’effectuez jamais de test sur des systèmes dont vous n’êtes pas propriétaire ou pour lesquels vous n’avez pas d’autorisation écrite explicite. Appliquez les correctifs sans délai.