Aller au contenu

Dirty Frag sous Linux : vérifier l'exposition et installer les correctifs

··1359 mots·7 mins
Cryptolab.re
Auteur
Cryptolab.re
Cryptolab est un blog personnel où je documente mes expérimentations techniques : infra, self-hosting, réseau, crypto et projets parfois inutiles, souvent instructifs.
Sommaire

Dirty Frag désigne deux vulnérabilités du noyau Linux publiées le 7 mai 2026 par Hyunwoo Kim. Elles sont suivies sous CVE-2026-43284 pour le chemin XFRM/ESP et CVE-2026-43500 pour RxRPC.

Dans les deux cas, un attaquant qui peut déjà exécuter du code localement peut modifier une page du cache mémoire associée à un fichier normalement accessible en lecture seule. Le démonstrateur public utilise cette primitive pour obtenir les privilèges root.

Mise à jour du 28 août 2026 : les deux CVE disposent désormais de correctifs dans les noyaux fournis par les principales distributions. La désactivation des modules reste une solution temporaire lorsque la mise à jour est impossible. L’article initial, écrit pendant la divulgation, indiquait encore que le second correctif n’était pas publié.

En bref
#

  • L’exploitation est locale : l’attaquant doit déjà pouvoir lancer du code sur l’hôte ou dans un workload partageant son noyau.
  • Les deux chemins vulnérables concernent XFRM/ESP, utilisé par IPsec, et RxRPC, notamment utilisé par AFS.
  • Un exploit local public existe. Canonical n’indique pas de démonstrateur public d’évasion de conteneur dans son avis.
  • CVE-2026-43284 est évaluée à 8,8 et CVE-2026-43500 à 7,8, toutes deux au niveau High.
  • La présence des modules dans /proc/modules aide à prioriser, mais ne suffit pas à prouver qu’un noyau est corrigé ou vulnérable.
  • La réponse recommandée est d’installer le noyau corrigé de la distribution, puis de redémarrer.
  • La désactivation de esp4, esp6 et rxrpc peut interrompre IPsec, StrongSwan ou AFS.

Explication technique
#

Linux conserve en mémoire les pages de fichiers récemment lues. Ce page cache évite de relire les mêmes données sur le stockage à chaque accès.

Avec des mécanismes zero-copy comme splice(), une page peut aussi être référencée par un fragment de socket buffer, ou skb. Le problème apparaît lorsqu’un chemin réseau suppose que ce fragment lui appartient et effectue une opération cryptographique directement dessus. Si le fragment référence encore une page du cache, l’écriture modifie la copie en mémoire du fichier.

Le flux simplifié est le suivant :

fichier lisible
  -> page cache
    -> splice() et fragment de skb partagé
      -> traitement cryptographique sur place
        -> modification de la page en mémoire
          -> relecture par un programme privilégié

Les permissions du fichier sur disque ne sont pas modifiées. C’est précisément ce qui rend le comportement difficile à repérer avec un simple contrôle d’intégrité du système de fichiers.

CVE-2026-43284 : XFRM/ESP
#

Le premier chemin passe par XFRM et ESP, composants utilisés pour le traitement IPsec. Un fragment partagé pouvait atteindre une opération cryptographique sans la copie de protection attendue.

Le démonstrateur publié prépare une page du cache avec splice(), puis utilise cette primitive pour modifier en mémoire un binaire privilégié. L’exploitation dépend néanmoins des fonctions disponibles, des restrictions sur les espaces de noms utilisateur et de la configuration du noyau.

CVE-2026-43500 : RxRPC
#

Le second chemin concerne RxRPC. Là encore, des fragments de page appartenant à un autre contexte pouvaient être traités directement par les opérations de sécurité du protocole.

Ce chemin n’a pas exactement les mêmes préconditions que XFRM/ESP. Désactiver seulement ESP ou seulement RxRPC laisse donc l’autre vulnérabilité potentiellement atteignable sur un noyau non corrigé.

Une famille plus large
#

Des variantes supplémentaires ont été documentées après la divulgation initiale, notamment DirtyClone. Cela ne change pas l’action immédiate : il faut utiliser les paquets de sécurité de la distribution plutôt que sélectionner un correctif isolé à partir d’un unique commit amont.

Impact réel
#

Serveur sans utilisateur local
#

Le risque immédiat est plus faible si aucun compte non privilégié, agent de build ou service capable d’exécuter du code tiers n’est présent. La faille ne fournit pas, à elle seule, un accès distant initial.

Elle reste pertinente dans une chaîne d’attaque. Une compromission limitée d’une application peut fournir l’exécution locale nécessaire à l’élévation vers root.

Hébergement mutualisé et CI/CD
#

Les machines multi-utilisateurs, runners CI auto-hébergés, services de compilation et plateformes qui exécutent du code non fiable sont prioritaires. L’attaquant y dispose plus facilement du premier niveau d’exécution requis.

Conteneurs et Kubernetes
#

Les conteneurs partagent le noyau de l’hôte. Canonical considère qu’une exploitation peut faciliter une évasion de conteneur dans les environnements qui lancent des workloads arbitraires, même si son avis ne mentionne pas de démonstrateur public spécifique à ce scénario.

Un cluster qui n’exécute que des images maîtrisées reste moins exposé qu’une plateforme multi-tenant, mais il doit tout de même recevoir le noyau corrigé.

Vérifier son exposition
#

Commencer par relever le noyau effectivement démarré :

uname -r

Sur Debian ou Ubuntu, lister les images installées :

dpkg-query -W -f='${Package}\t${Version}\n' 'linux-image-*' 2>/dev/null

La comparaison doit se faire avec l’avis de la distribution. Un numéro de version amont ne suffit pas, car les correctifs sont régulièrement rétroportés sans changement majeur de version.

Vérifier ensuite les modules actuellement chargés :

grep -E '^(esp4|esp6|rxrpc) ' /proc/modules || echo "Modules non chargés"

Ce résultat n’est qu’un indice. Un module absent de cette liste peut encore être disponible et chargé à la demande. La seule preuve de correction reste le statut du paquet publié par le fournisseur.

Exemples de versions Ubuntu corrigées
#

Au 28 août 2026, Canonical publie notamment les versions suivantes :

Version UbuntuPaquet noyau corrigé
26.04 LTS7.0.0-22.22
25.106.17.0-35.35
24.04 LTS6.8.0-124.124
22.04 LTS5.15.0-181.191
20.04 LTS5.4.0-231.251 avec Ubuntu Pro

Les noyaux HWE, cloud, temps réel et spécifiques aux fournisseurs ont leurs propres versions. Il faut consulter la ligne correspondant exactement au paquet installé.

Détection
#

Il n’existe pas d’indicateur universel permettant d’affirmer qu’une exploitation a eu lieu. La modification peut ne toucher que le cache mémoire et disparaître après un redémarrage.

Les signaux suivants peuvent justifier une investigation :

  • shell privilégié obtenu depuis un compte inattendu ;
  • exécution d’un binaire de démonstration connu ;
  • utilisation inhabituelle de unshare, splice() ou de sockets RxRPC par un compte non privilégié ;
  • chargement inexpliqué de esp4, esp6 ou rxrpc ;
  • activité anormale autour de /usr/bin/su ou /etc/passwd.

Ces événements ne prouvent pas une exploitation. Inversement, leur absence ne prouve pas que la machine est saine. En cas de soupçon sérieux, isoler l’hôte et analyser sa mémoire et son historique d’exécution avant de le redémarrer.

Ne pas lancer le PoC sur un serveur de production pour tester l’exposition. Le test modifie volontairement le page cache et ne constitue pas une méthode de vérification sûre.

Correctifs et mitigations
#

Installer le noyau de sécurité
#

Sur Ubuntu, Canonical recommande la mise à jour des paquets, suivie d’un redémarrage :

sudo apt update
sudo apt full-upgrade
sudo reboot

Le redémarrage interrompt les services et doit être planifié. Après le retour de la machine, vérifier le noyau réellement chargé :

uname -r

Sur Debian, RHEL, SUSE ou une distribution dérivée, utiliser l’avis et les paquets du fournisseur. Compiler uniquement le dernier noyau amont peut contourner les mécanismes de support et de rétroportage de la distribution.

Mitigation temporaire
#

Si aucun noyau corrigé ne peut être installé immédiatement, les modules concernés peuvent être bloqués dans /etc/modprobe.d/dirty-frag.conf :

install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false

Sur Ubuntu, la prise en compte au prochain démarrage nécessite de régénérer l’initramfs :

sudo update-initramfs -u -k all

Cette modification peut couper un VPN IPsec, StrongSwan, AFS ou une autre dépendance RxRPC. Elle doit être testée et accompagnée d’une procédure de retour arrière. Une fois le noyau corrigé installé, Canonical indique que cette mitigation n’est plus nécessaire.

Conclusion
#

Dirty Frag est une élévation locale de privilèges, pas une compromission distante autonome. La priorité dépend donc de la capacité d’un utilisateur, d’un service ou d’un workload à exécuter du code sur l’hôte.

Les runners CI, environnements multi-utilisateurs et clusters exécutant du code tiers doivent être traités en premier. Pour les autres machines, la bonne réponse reste la même : vérifier l’avis du fournisseur, installer le noyau corrigé et confirmer après redémarrage que la version attendue est active.

Sources
#

Sources vérifiées le 28 août 2026 :

Articles connexes

Ubuntu Server 26.04 LTS : ce qu'il faut savoir avant de migrer

··2469 mots·12 mins
Ubuntu 26.04 LTS est sortie le 23 avril 2026 sous le nom Resolute Raccoon. Pour un poste desktop, c’est une nouvelle LTS avec GNOME 50, Wayland et quelques changements visibles. Pour un serveur, c’est autre chose : une base qui peut rester en production pendant plusieurs années, avec un nouveau noyau, une pile crypto plus stricte, des paquets serveur mis à jour, des changements de comportement sur des services courants, et une stratégie de support à bien comprendre avant de lancer un do-release-upgrade. Je regarde donc Ubuntu 26.04 LTS sous l’angle qui m’intéresse le plus ici : serveurs, VPS, homelab, cloud, sécurité et migration propre.

30 projets open source récemment étoilés sur GitHub

L’open source est redevenu bruyant. Très bruyant. Entre les agents IA, les scanners de vulnérabilités, les outils anti-crawlers, les dashboards de monitoring et les apps self-hosted, on peut remplir un serveur en une soirée et le regretter pendant six mois. Le vrai travail n’est plus de trouver des projets. Le vrai travail, c’est de trier. Je mets beaucoup trop d’étoiles sur GitHub. Pas parce que je compte tout installer. Ce serait le meilleur moyen de transformer un homelab en brocante numérique impossible à maintenir. Mais parce qu’une étoile GitHub, bien utilisée, est un marque-page technique. Elle dit : “ce projet répond peut-être à un problème que j’ai déjà rencontré, ou à un problème que je vais rencontrer bientôt” Dans un homelab, le plus dur n’est pas d’installer un projet open source. C’est de savoir s’il mérite encore d’être là dans six mois. C’est exactement pour ça que je garde une veille GitHub : pas pour tout déployer, mais pour repérer les signaux faibles. Cette sélection part donc de mes 30 stars GitHub publiques les plus récentes, récupérées depuis mon profil GitHub foudreclair et plus précisément depuis mes stars publiques. Je ne les présente pas comme un classement, ni comme une recommandation de production. Et surtout, je ne les ai pas tous testés. C’est une photographie de veille : ce qui a attiré mon attention à un moment donné, et ce que ces projets racontent de mes sujets actuels. On y retrouve des thèmes nets : IA, sécurité, infra légère, self-hosting, dev tools, Fediverse, publication web et données personnelles. Ce qui m’intéresse, ce n’est pas la hype. C’est ce que ces projets disent des problèmes que les admins, devs et self-hosters essaient vraiment de résoudre aujourd’hui. Cet article s’adresse surtout aux personnes qui maintiennent un homelab, un petit VPS, un site statique, ou une veille technique personnelle. Anubis m’intéresse particulièrement dans ce contexte, parce qu’il répond à un problème récent et très concret : les petits sites qui subissent le trafic de crawlers automatisés. Je ne l’ai pas encore testé ; je veux justement le faire proprement avec Pangolin, puis en tirer un article dédié sur le duo Pangolin + Anubis. Cette liste est datée : 21 avril 2026. Elle correspond aux 30 dépôts publics les plus récemment étoilés sur mon profil GitHub au moment de la rédaction. Si je change mes stars, l’ordre public sur GitHub peut évoluer, et c’est normal. L’objectif n’est pas de figer un classement, mais de documenter une veille à un instant donné.