Copy fail : depuis 2017, une faille dans le noyau Linux permettait à un utilisateur de passer root
Une optimisation trop rapide
Illustration : Flock
Le 30 avril à 13h40
Depuis 2017, une vulnérabilité dans le module cryptographique authencesn du noyau Linux laissait à un compte d’un simple utilisateur la possibilité de passer en root. Elle concerne la plupart des grandes distributions jusqu’au déploiement du patch, qui est déjà en cours.
Copy fail : depuis 2017, une faille dans le noyau Linux permettait à un utilisateur de passer root
Une optimisation trop rapide
Illustration : Flock
Depuis 2017, une vulnérabilité dans le module cryptographique authencesn du noyau Linux laissait à un compte d’un simple utilisateur la possibilité de passer en root. Elle concerne la plupart des grandes distributions jusqu’au déploiement du patch, qui est déjà en cours.
Sécurité
Sécurité
4 min
C’est l’entreprise de sécurité Xint.io qui a révélé, ce mercredi 29 avril, cette vulnérabilité (CVE-2026-31431, d’une sévérité élevée de 7,8/10) permettant une élévation des privilèges en local.
Le score n’est « que » de 7,8 car le vecteur d’attaque est local (AV:L) : il faut déjà avoir un accès local sur la machine, ici un compte utilisateur. La même avec une attaque depuis le réseau (AV:N) se serait approchée de 10.
N’importe qui peut devenir root
Appelée « Copy Fail », celle-ci permet (sans accès au réseau, sans utiliser de fonctionnalités de débogage du noyau et sans avoir installé quoi que ce soit avant) à toute personne possédant un simple compte utilisateur sur quasiment n’importe quelle distribution Linux d’obtenir les privilèges root et donc d’y faire tout ce qu’elle veut.
Comme l’explique l’entreprise sur le site dédié à la faille, « un utilisateur local sans privilèges peut écrire quatre octets contrôlés dans le page cache de n’importe quel fichier accessible en lecture sur un système Linux, et s’en servir pour obtenir les privilèges root ».
Les responsables des distributions ont commencé à mettre à jour le paquet de leur noyau Linux pour bloquer l’utilisation d’une faille de sécurité qui se situait directement dans le noyau. Le danger concerne les systèmes partagés entre plusieurs utilisateurs, les clusters de conteneurs (Kubernetes, Docker…), etc. Un utilisateur lambda pourrait ainsi accéder aux données des autres utilisateurs.
Une faille dans le module cryptographique authencesn du noyau
Xint.io explique que cette faille a été découverte par le chercheur de l’entreprise Theori, Taeyang Lee, en étant assisté par l’IA de son outil Xint Code alors qu’il étudiait la manière dont le sous-système de cryptographie de Linux interagit avec les données stockées dans le page cache. C’est un système de cache qui permet au noyau d’avoir un accès plus rapide à certaines informations.
De fait, c’est un bug dans le module cryptographique authencesn du noyau Linux qui est en cause, accessible via l’interface de socket AF_ALG, en combinaison avec l’appel système splice(). « Un utilisateur peut ouvrir un socket, le lier à n’importe quel modèle AEAD (chiffrement authentifié avec données associées) et lancer le chiffrement ou le déchiffrement de données arbitraires. Aucun privilège n’est requis », explique Xint. De son côté, la fonction splice() transfère des données entre les descripteurs de fichiers et les pipes sans les copier, en renvoyant simplement les page caches par référence.
En utilisant un script Python très court (732 octets) qui ne fait appel qu’à des bibliothèques standard et ciblant le page cache du noyau, il est possible d’accéder au binaire qui permet d’être superutilisateur : /usr/bin/su. La modification se fait en mémoire, pas directement sur le périphérique de stockage.
Une ligne de commande suffit…
Nous l’avons testé sur un de nos VPS avec Ubuntu 24.04 LTS, nous sommes bien passés en root avec une seule ligne de commande en utilisant le script Python :
Les chercheurs ont constaté la faille sur les distributions Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 ou encore SUSE 16 et expliquent logiquement que « les autres distributions utilisant les noyaux concernés — Debian, Arch, Fedora, Rocky, Alma, Oracle, ainsi que les distributions embarquées — présentent le même comportement ».
Un patch pour le noyau a déjà été proposé et accepté. Celui-ci supprime une optimisation des opérations AEAD qui avait été ajoutée en 2017. « Mettez à jour le paquet du noyau de votre distribution avec une version incluant le commit a664bf3d603d de la branche principale », expliquent les chercheurs, « la plupart des principales distributions proposent désormais ce correctif », comme Debian (Forky et Sid), Ubuntu, par exemple mais la mise en place est encore en cours chez Red Hat et Suse.
Commentaires (48)
Abonnez-vous pour prendre part au débat
Déjà abonné ou lecteur ? Se connecter
Cet article est en accès libre, mais il est le produit d'une rédaction qui ne travaille que pour ses lecteurs, sur un média sans pub et sans tracker. Soutenez le journalisme tech de qualité en vous abonnant.
Accédez en illimité aux articles d'un média expert
Profitez d'au moins 1 To de stockage pour vos sauvegardes
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
Abonnez-vousLe 30 avril à 13h48
Le 30 avril à 13h51
--> Non, pas Debian en tout cas.
J'ai patché toutes les workstations avec le correctif proposé :
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
Modifié le 30 avril à 13h56
Le 30 avril à 14h02
Donc patch en urgences des workstations :)
Le 30 avril à 16h36
La modification du fichier /etc/modprobe.d/disable-algif-aead.conf est indispensable pour s’assurer que quand un programme provoque son activation, ça échoue, le désactiver ne suffit pas.
Suffit de lancer le PoC sur une machine sur laquelle le module est désactivé et de voir qu’il passe quand même pour voir le problème… (s’il marche pas ça garantie pas que c’est safe, il peut échouer pour d’autres raisons, dans le doute mettre à jour le kernel et/ou appliquer cette configuration est préférable dans tous les cas).
Le 30 avril à 14h16
Le 30 avril à 14h52
Ces chercheurs qui divulguent des failles avant que les versions de toutes les distributions majeurs soient corrigées sont irresponsables.
C'est dommage de ne pas vérifier leurs dires avant de tranquilliser à tort les utilisateurs.
Par contre, le patch du noyau date du 31 mars. C'est surprenant que Debian ne l'ait pas encore intégré.
Il y a probablement eu un manque de communication sur le fait que c'est une vulnérabilité du noyau. Le commentaire du commit n'aide pas à être alerté sur l'importance de la correction.
Remarque : sur ma Debian 12, le script python ne fonctionne pas : il me demande un mot de passe (de root, je suppose) et échoue donc. Je n'ai pas creusé plus que cela.
Le 30 avril à 15h00
Le timing est ultra clair:
Le 30 avril à 17h32
Le 1er mai à 16h44
Le 30 avril à 13h54
On peut se demander s'il va être possible de rooter sur Android des appareils dont le bootloader est verrouillé ?
Le 30 avril à 14h00
Le 30 avril à 13h57
Le 30 avril à 13h58
Modifié le 30 avril à 14h53
Cette vuln est un fail magistral des process de patching sous NDA des équipes upstream.
2026-03-23 : Reported to Linux kernel security team
2026-03-24 : Initial acknowledgment
2026-03-25 : Patches proposed and reviewed
2026-04-01 : Patch committed to mainline
2026-04-22 : CVE-2026-31431 assigned
2026-04-29 :Public disclosure
=> Et donc pourquoi c'est pas dans les downstream de TOUTES LES DISTRO §§§§
Et il faudra sérieusement se poser la question de QUI a introduit ce commit en 2017.
side node:
les désactivations du module marchent sur les distrib à module.
Sur les EL & dérivés, il faut modifier le bootloader grub pour désactiver la feature qui est kernel native.
La bonne nouvelle c'est qu'on peut le faire assez rapidement avec grubby:
puis juste un reboot suffit.
side note bis:
la fonctionnalité "kernel native" semble assez proche de zéro en terme d'utilité. Ca se voit avec les effets de la désactivation (proche de zéro). On peut donc vraiment se demander POURQUOI ce truc a été injecté dans le kernel ...
Le 30 avril à 14h54
puis juste un reboot suffit.
Le 30 avril à 14h56
Modifié le 30 avril à 16h47
M'enfin, entre ça et les tutos qui disent de désactiver les mécanismes de sécurité par facilité... (j'en pouvais plus de ceux qui disaient de désactiver SELinux à la moindre contrariété)
On a le darwinisme qu'on mérite.
Le 30 avril à 14h09
PermissionError: [Errno 13] Permission denied: '/bin/su'(pas de/usr, c’est le bon chemin sous Gentoo).Bon ben pas besoin de patch.
Le 30 avril à 16h39
Le 30 avril à 17h58
Le 30 avril à 14h54
Le 30 avril à 14h57
Le 30 avril à 16h41
Ça permet aussi de sortir des containers (pas encore de PoC sur ce point cela dit).
Donc bon, oui, moins critique sur les postes personnels mono-utilisateurs (c’est d’ailleurs indiqué dans la description de la CVE), mais… pas anodin pour autant.
Le 30 avril à 15h07
Le 30 avril à 22h11
Le 30 avril à 15h35
Je partage en tout cas l'avis d'autres sur le timing absolument irresponsable sur la révélation de cette vuln. Et quand je vois à quoi ressemble le PoC, j'en conclus que ces gens ne vivent pas dans la réalité (en tout cas pas la mienne).
Le 30 avril à 16h12
Sauf que le code en question te rend bien la main en tant que root.
Donc une fois que tu as jaugé que ça marche, pas besoin de le faire sur 50 machines...
Le 30 avril à 17h21
Par exemple en passant à curl une version différente de celle que ton navigateur t'as montré comme bien expliqué sur
https://tferdinand.net/pourquoi-curl-bash-est-une-mauvaise-habitude-dangereuse/
Le 30 avril à 17h34
J'indique uniquement qu'à partir du moment où tu l'a proofé dans une sandbox, tu peux conclure que l'intégralité de ton parc ayant les mêmes specs que ta sandbox sera vulnérable.
le POC n'a pas besoin d'être executé sur tout ton parc pour démontrer son efficacité.
A l'inverse, les mitigation factors, une fois identifiés peuvent eux être executés PARTOUT.
Et à date, la désactivation du module inline/déchargement de la feature via grub semblent des mesures de contournement/blocage assez efficace, et avec un risque/impact faible.
Modifié le 30 avril à 16h14
J'en peux plus de toute cette précipitation.
J'ai l'impression que tout le monde deviens fou et fait n'importe quoi.
Le 30 avril à 16h43
Le 30 avril à 17h28
Le 1er mai à 00h24
En plus, ce bug est l'illustration qu'on pouvait cacher (et on le peut certainement encore) en une seule ligne des petits "cadeaux", même si on pensait être en sécurité.
Quand je vois le nombre procédures d'install qui demandent de copier une ligne qui fait un curl pour récupérer un script qui contient parfois du binaire et l'exécuter en sudo ... Sous Windows on passe des charges de travail de virus en powershell comme ça (powershell, exe encodé base 64 + chiffrement, monté en RAM et exécution: ça passe plein d'antivirus).
Vu l'essor de Linux ce derniers temps, attendez-vous à avoir de plus en plus d'attaques et à avoir besoin de payer un antivirus.
On a déjà eu crackarmor, le sproblèmes de IO Uring qui passaient outre la sécu, sudo, ... Il y a encore certainement beaucoup d'autres candidats aux failles, il ne faut pas se croire plus malin qu'un autre et tester les exploits sur des machines (sauf si vous en avez une dédiée physique).
Le 30 avril à 15h54
Le 30 avril à 16h43
Le 30 avril à 17h44
Le 30 avril à 16h43
Le 30 avril à 17h05
Le 30 avril à 16h40
RedHat (et Alma) n'ont pas encore de patch et le workaround n'est pas fonctionnel car AF_ALG est directement dans le noyau et non en module.
Ca va être sympa pour ceux qui sont d'astreinte ce long weekend.
Modifié le 30 avril à 17h25
grubby --update-kernel ALL --args='initcall_blacklist=algif_aead_init'puis reboot
(grubby permet de maj grub et de disabler le module built-in au niveau du bootloader)
Et je suis très énervé contre Redhat qui n'arrive pas à publier ce workaround
Surtout qu'en l'état, je vois pas comment on aura un nouveau kernel avant plusieurs heures/jours
Modifié le 30 avril à 20h04
Modifié le 30 avril à 21h27
Mais sinon, grubby est la bonne commande a utiliser (cf mes posts).
Tu peux être encore plus sélectif en ciblant juste l'interface ou juste l'algo. Moi j'ai ete un peu bourrin mais au moins depuis 14h y'a un fix...
(You read it here first!)
Le 30 avril à 16h44
Modifié le 30 avril à 19h23
Je viens d'essayer sur Arch (7.0.2-1-cachyos) que j'avais mis à jours hier ou avant-hier et ça me demande le mdp.
Le 1er mai à 09h36
Modifié le 30 avril à 22h25
Modifié le 1er mai à 16h41
Soit des gens ont appliqué le correctif après 21h30 sur leur infrastructure un 30/04, soit en France il faudra attendre lundi. À moins que l'exploitation soit qualifiée, évidemment.
Signaler un commentaire
Voulez-vous vraiment signaler ce commentaire ?