
Exploit déterministe d'escalade de privilèges locaux du noyau Linux enchaînant deux primitives d'écriture dans le cache de pages (xfrm/ESP et RxRPC) pour un accès root fiable sur toutes les distributions majeures depuis 2017.
Escalade locale de privilèges universelle du noyau Linux
| Champ | Détail |
|---|---|
| CVE | CVE-2026-43284 (xfrm/ESP) + CVE-2026-43500 (RxRPC) |
| Surnom | Dirty Frag |
| CVSS | 7.8 HAUTE |
| Type | Élévation locale de privilèges (LPE) |
| Introduit | Noyau Linux 4.10 (2017, commit cac2661c53f3) |
| Corrigé | Commits amont f4c50a4034e6 / aa54b1d27fe0 |
| Nécessite | Accès shell local non privilégié |
| Vecteur distant | Aucun — local uniquement |
| Divulgué | 7 mai 2026 par Hyunwoo Kim (@v4bel) |
Un défaut logique dans les sous-systèmes xfrm/ESP et RxRPC du noyau Linux permet à un utilisateur local non privilégié d'effectuer une écriture arbitraire contrôlée et déterministe dans le cache de pages de tout fichier lisible sur le système — y compris les binaires setuid comme /usr/bin/su.
La cause première est un déchiffrement sur place non sécurisé de fragments de tampon de socket partagé (skb) qui référencent des pages du cache de pages, particulièrement lors de l'utilisation de splice(2) ou sendfile(2). Cela fournit une primitive d'écriture puissante dans le cache de pages, qui peut être exploitée pour écraser des fichiers sensibles en mémoire et obtenir un accès root complet.
Deux primitives distinctes sont chaînées pour couvrir tous les cas :
Écriture dans le cache de pages via xfrm-ESP : partage le même puits que Copy Fail mais est déclenchée via les modules esp4/esp6, indépendamment de la disponibilité de algif_aead. Nécessite des privilèges de création d'espace de noms.Écriture dans le cache de pages via RxRPC : ne nécessite pas de privilèges d'espace de noms, mais rxrpc.ko doit être présent (chargé par défaut sur Ubuntu). Couvre les angles morts de CVE-2026-43284.Le chaînage des deux variantes leur permet de couvrir mutuellement leurs angles morts, obtenant un accès root fiable sur toutes les distributions majeures.
Aucune condition de concurrence. Aucune tentative. Aucun risque de plantage. Déterministe sur toutes les distributions testées.
Important : Même sur les systèmes où la mitigation publique connue de Copy Fail (liste noire d'
algif_aead) est appliquée, Dirty Frag reste exploitable via CVE-2026-43284.
algif_aead (solution de contournement de Copy Fail)CVE-2026-43284 (xfrm/ESP) : Noyau Linux du commit cac2661c53f3 (2017-01-17) jusqu'au f4c50a4034e6 (2026-05-05).
CVE-2026-43500 (RxRPC) : Noyau Linux du commit 2dc334f1a63a (2023-06-08) jusqu'au aa54b1d27fe0 (2026-05-10).
La durée de vie effective de la chaîne de vulnérabilités est d'environ 9 ans.
Toutes les distributions majeures utilisant des noyaux dans cette plage sont affectées, y compris :
gcc -O0 -Wall -o exp exp.c -lutil && ./exp
Ne pas utiliser sur des systèmes que vous n'êtes pas autorisé à tester.
⚠️ Important : Après avoir exécuté cet exploit, le cache de pages est contaminé. Pour vider le cache de pages pollué et assurer la stabilité du système, exécutez :
echo 3 > /proc/sys/vm/drop_caches
ou redémarrez le système.
Mettez à jour le noyau avec les correctifs amont et redémarrez.
Corrigé dans le noyau amont via :
f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE / openSUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
# Fedora
sudo dnf upgrade --refresh && sudo reboot
Si le correctif immédiat n'est pas possible, désactivez les modules vulnérables et videz le cache de pages.
# Mettre sur liste noire les modules vulnérables
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'
# Décharger les modules immédiatement
sudo rmmod esp4 esp6 rxrpc 2>/dev/null || true
# Vider le cache de pages
echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Pour les charges de travail non fiables — conteneurs, exécuteurs CI, environnements isolés — restreignez la création de sockets AF_ALG et splice() via une politique seccomp ou AppArmor, quel que soit l'état du correctif. Cela limite la surface d'attaque même sur des noyaux vulnérables mais ne constitue pas un correctif complet.
Vérifiez si les modules vulnérables sont actuellement chargés ou utilisés :
# Vérifier si les modules sont chargés
lsmod | grep -E 'esp4|esp6|rxrpc'
# Vérifier si un processus a une socket AF_ALG ouverte
lsof | grep AF_ALG
ss -xa | grep alg
# Confirmer que la solution de contournement est active après redémarrage
cat /etc/modprobe.d/dirtyfrag.conf
Pourquoi chaîner deux vulnérabilités ?
Écriture dans le cache de pages via xfrm-ESP fournit une primitive de STORE arbitraire de 4 octets puissante et est présente sur la plupart des distributions, mais nécessite des privilèges de création d'espace de noms — qu'Ubuntu bloque parfois via AppArmor. Écriture dans le cache de pages via RxRPC ne nécessite pas de privilèges d'espace de noms, mais rxrpc.ko n'est pas inclus dans la plupart des distributions — sauf Ubuntu, où il est chargé par défaut. Le chaînage des deux permet à leurs angles morts de se couvrir mutuellement, obtenant un accès root fiable sur toutes les distributions majeures.
Quelle est la relation avec Copy Fail (CVE-2026-31431) ?
La primitive xfrm-ESP partage le même puits d'écriture dans le cache de pages que CVE-2026-31431, mais est déclenchée via les modules esp4/esp6 indépendamment d'algif_aead. Appliquer la mitigation de CVE-2026-31431 (mise sur liste noire d'algif_aead) ne protège pas contre Dirty Frag.
Pourquoi le nom "Dirty Frag" ?
La vulnérabilité « salit » le membre frag de struct sk_buff, la plaçant dans la même classe de bugs que Dirty Pipe — des défauts logiques permettant des écritures non privilégiées dans le cache de pages.
Ce dépôt est destiné à des fins éducatives et défensives uniquement. N'utilisez aucune information ou code de ce dépôt sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite de tester.
Restez en sécurité. Patchez tôt. Patchez souvent. Bon hacking 🛡️
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Dirty Frag (2026) |
|---|
| Condition de concurrence requise | Oui | Partielle | Non | Non |
| Spécifique à une version | Oui | Oui | Non | Non |
| Fiabilité | Aléatoire | Modérée | Déterministe | Déterministe |
| Couverture des distributions | Limitée | Limitée | Toutes depuis 2017 | Toutes depuis 2017 |
| Contourne la mitigation Copy Fail | — | — | N/A | Oui |
| Distribution | Version testée | Statut |
|---|
| Ubuntu 24.04.4 | 6.17.0-23-generic | Affecté — correctif en cours de déploiement |
| RHEL 10.1 | 6.12.0-124.49.1.el10_1.x86_64 | Affecté — correctif en cours de déploiement |
| AlmaLinux 10 | 6.12.0-124.52.3.el10_1.x86_64 | Affecté — correctif disponible |
| CentOS Stream 10 | 6.12.0-224.el10.x86_64 | Affecté — correctif en cours de déploiement |
| Fedora 44 | 6.19.14-300.fc44.x86_64 | Affecté — correctif disponible |
| openSUSE Tumbleweed | 7.0.2-1-default | Affecté — en cours |
| Debian | — | Affecté — en cours |
| Composant | Impact |
|---|
| SSH | ✅ Non affecté |
| dm-crypt / LUKS | ✅ Non affecté |
| kTLS / TLS dans le noyau | ✅ Non affecté |
| OpenSSL / GnuTLS / NSS (constructions par défaut) | ✅ Non affecté |
| IPsec / XFRM (tunnels ESP, VPN) | ⚠️ Cassé — esp4 et esp6 seront indisponibles |
| Clients AFS / OpenAFS utilisant RxRPC | ⚠️ Cassé — rxrpc sera indisponible |
Applications utilisant AF_ALG + AEAD directement | ⚠️ Vérifiez avec lsof | grep AF_ALG |
| Ressource | Lien |
|---|
| Correctif amont CVE-2026-43284 | f4c50a4034e6 |
| Correctif amont CVE-2026-43500 | aa54b1d27fe0 |
| NVD — CVE-2026-43284 | https://nvd.nist.gov/vuln/detail/CVE-2026-43284 |
| NVD — CVE-2026-43500 | https://nvd.nist.gov/vuln/detail/CVE-2026-43500 |
| Date | Événement |
|---|
| 2017-01-17 | Introduction de la régression CVE-2026-43284 (cac2661c53f3) |
| 2023-06-08 | Introduction de la régression CVE-2026-43500 (2dc334f1a63a) |
| 2026-05-05 | Correction de CVE-2026-43284 dans le noyau amont (f4c50a4034e6) |
| 2026-05-07 | Divulgation publique |
| 2026-05-10 | Correction de CVE-2026-43500 dans le noyau amont (aa54b1d27fe0) |
| 2026-05-10+ | Début de distribution des correctifs par les distributions |