Copy Fail : 732 octets de Python suffisent pour devenir root sur (presque) tous les Linux depuis 2017
Une faille logique dormante depuis neuf ans dans le module algif_aead du noyau Linux transforme n'importe quel utilisateur local en administrateur. Un script Python de 732 octets suffit.
Une faille critique sommeillait depuis 2017 dans le sous-systeme cryptographique du noyau Linux. Trouvee par une IA en une heure, elle ouvre les portes du root.
Les enjeux
Ce qu'il faut comprendre
Une faille dormante depuis neuf ans
Introduite en 2017 dans le module algif_aead, la vulnerabilite est restee invisible pendant neuf ans, malgre des audits reguliers du noyau Linux.
Un exploit de 732 octets, 100% fiable
Le script Python tient en dix lignes et fonctionne sans race condition, sans recompilation, sans reglage par version. Le taux de succes annonce est de 100%.
Toutes les distributions majeures touchees
Ubuntu, Debian, RHEL, SUSE, Amazon Linux, Arch, Fedora : tous les noyaux Linux compiles depuis 2017 sont vulnerables.
Risque eleve sur Kubernetes et conteneurs
Copy Fail permet une evasion de conteneur et la compromission des noeuds Kubernetes, exposant des architectures cloud entieres.
L'IA trouve ce que neuf ans d'humains ont rate
L'agent IA Xint Code de Theori a identifie la faille en une heure de scan, posant la question de la solidite reelle des audits humains du noyau.
L'essentiel
Ce qu'il faut retenir
- La faille Copy Fail (CVE-2026-31431) affecte tous les noyaux Linux depuis 2017.
- Un script Python de 732 octets suffit pour obtenir les droits root.
- Le score de severite CVSS atteint 7,8/10, avec un vecteur d'attaque local.
- Le correctif officiel (commit a664bf3d603d) est integre au noyau depuis le 1er avril 2026.
- En attendant le patch, le CERT-EU recommande de desactiver le module algif_aead.
Pendant neuf ans [1], une porte derobee a baille dans le coeur de Linux sans que personne ne la voie. Copy Fail [2], officiellement repertoriee CVE-2026-31431 [3], permet a n’importe quel utilisateur local non privilegie d’obtenir un acces root complet [4] sur la quasi-totalite des distributions Linux livrees depuis 2017 [5]. Le tout avec un script Python de 732 octets [6] qui tient en dix lignes [7] et fonctionne du premier coup [8].
La vulnerabilite a ete revelee publiquement le 29 avril 2026 [9] par l’entreprise de securite Xint.io [10], apres une decouverte initiale par Taeyang Lee [11], chercheur chez Theori [12]. Son score CVSS atteint 7,8/10 [13], avec un vecteur d’attaque local [14].
Une optimisation de 2017 qui se retourne contre le noyau
Le bug se loge dans algif_aead [16], le composant du noyau qui expose les operations de chiffrement aux programmes utilisateurs via l’interface socket AF_ALG [17]. Cette interface permet a n’importe quel processus, sans privilege particulier [18], d’invoquer le sous-systeme cryptographique du noyau.
L’origine du probleme remonte a une introduite dans le noyau 4.14 [19] en aout 2017 [20]. Entre 2011 et 2017, trois modifications du code ont ete apportees independamment [21] [22], chacune anodine isolement, mais qui combinees ont cree une fenetre d’ecriture hors limites. Lors d’un dechiffrement AEAD, l’algorithme authencesn [23] ecrit quatre octets [24] au-dela de la zone de sortie legitime, dans des pages chainees qui referencent encore le cache de pages du fichier cible [25].
Concretement: un attaquant peut modifier discretement la copie en memoire d’un fichier sensible sans toucher au fichier original sur le disque [26]. En visant su [27], la commande qui permet de changer d’identite sur Linux, il devient root.
Une IA trouve en une heure ce que neuf ans d’audit humain ont rate
L’angle qui derange dans cette affaire: la faille n’a pas ete trouvee par un cerveau humain qui scrutait le code. Taeyang Lee [28] a glisse un prompt cible a Xint Code [29], l’agent IA d’audit developpe par Theori, en lui demandant d’examiner les chemins accessibles depuis l’espace utilisateur dans le sous-systeme crypto. Une heure de scan [30] plus tard, l’IA livrait Copy Fail comme resultat critique [31].
Note de transparence sur les chiffres: les sources divergent legerement sur la duree exacte. Xint.io evoque moins d’une heure [31] tandis que la note technique parle d’une heure [30]. Cette difference de quelques minutes ne change rien a l’essentiel: l’ordre de grandeur (soixante minutes) reste sans commune mesure avec les neuf annees d’audit humain qui n’ont rien vu.
Pourquoi neuf ans d’yeux humains n’ont rien vu
L’echec de la revue humaine n’est pas un mystere quand on examine la mecanique du bug. Copy Fail n’est pas une erreur visible dans une seule ligne de code: il resulte de la combinaison de trois modifications independantes [21], introduites entre 2011 et 2017 [22], chacune correcte isolement et passant sans alarme dans son contexte. C’est leur empilement, plusieurs annees apres, qui ouvre la fenetre d’ecriture hors limites. Aucune relecture ponctuelle de commit ne pouvait raisonnablement reconstituer cette chaine combinatoire a posteriori.
Le noyau Linux recoit plusieurs dizaines de milliers de commits par version stable, et le sous-systeme crypto figure parmi les plus techniques. Pour un humain, suivre les flux de scatterlist entre algif_aead, authencesn et le page cache demande de reconstruire mentalement un graphe d’appels que peu de mainteneurs maitrisent en totalite. Une IA generaliste, elle, peut explorer toutes les branches accessibles depuis l’espace utilisateur en parallele, sans biais d’attention. C’est ce changement d’echelle - et non un quelconque genie de la machine - qui a fait la difference.
On se souvient que Heartbleed, la faille d’OpenSSL revelee en 2014, etait restee plus de deux ans dans le code avant d’etre detectee, alors qu’OpenSSL est l’une des bibliotheques cryptographiques les plus auditees au monde. Plus pres de nous, le programme OSS-Fuzz de Google a permis d’identifier des milliers de bugs dormants dans des projets open source via du fuzzing automatise. Copy Fail prolonge cette logique - une faille longue duree exhumee par un outil automatise - mais ouvre un palier nouveau: c’est la premiere fois qu’une vulnerabilite critique du noyau Linux est attribuee publiquement a un agent d’audit assiste par IA. Pour les equipes de securite, le signal est clair: la revue humaine reste necessaire, mais elle ne peut plus etre la seule ligne de defense sur des bases de code de cette taille.
Un exploit deterministe, sans race condition
Ce qui distingue Copy Fail de ses ancetres celebres - Dirty Cow en 2016 [32] et Dirty Pipe en 2022 [33] - tient en un mot: determinisme. Dirty Cow exigeait de gagner une condition de course, parfois plusieurs essais, parfois un crash [34]. Dirty Pipe dependait de la version du noyau [35]. Copy Fail, lui, est ce que les chercheurs appellent un straight-line logic bug [36]: il se declenche sans race, sans tentative repetee, sans fenetre de timing sujette aux plantages [37].
Le meme script Python fonctionne sur des kernels 6.12 a 6.18 [38], sur x86 comme sur ARM [39]. Le taux de succes annonce sur les distributions testees atteint 100% [40] [41].
Toutes les distributions majeures touchees
Les chercheurs ont confirme l’exploitation reussie sur Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 et SUSE 16 [42] [43] [44] [45] avec exactement le meme code. Selon Xint.io, les autres distributions utilisant les noyaux concernes - Debian, Arch, Fedora, Rocky, Alma, Oracle, ainsi que les distributions embarquees - presentent le meme comportement [46].
Sur Ubuntu, plus de cinquante variantes du package linux sont concernees [47], y compris les saveurs cloud (linux-aws, linux-azure, linux-gcp, linux-oracle) [48] et les saveurs specialisees (linux-kvm, linux-raspi, linux-realtime, linux-nvidia) [49]. Seul Ubuntu 26.04 (Resolute) et les noyaux ulterieurs ne sont pas affectes [50].
L’angle mort: Kubernetes et les conteneurs
Copy Fail n’est pas qu’une elevation de privilege locale. C’est aussi un primitif d’evasion de conteneur et un vecteur de compromission des noeuds Kubernetes [51]. Un attaquant dans un conteneur compromis peut s’echapper et prendre le controle du serveur hote [52]. Pour les environnements Kubernetes, tres repandus en entreprise [53], l’enjeu est colossal: un seul pod malveillant peut potentiellement compromettre tout un cluster.
Pire encore pour les equipes de detection: la corruption de la page cache contourne le chemin d’ecriture VFS ordinaire et n’est jamais marquee comme sale par le mecanisme de writeback du noyau [54]. Les outils d’integrite de fichiers comparant les sommes de controle sur disque ne detectent rien [55] [56], parce que le fichier sur disque reste inchange [57]. Apres un redemarrage, les traces de l’exploitation disparaissent [58].
Patcher, ou bloquer le module
Le correctif officiel existe: il s’agit du commit a664bf3d603d [59], integre au noyau le 1er avril 2026 [60] [61], qui annule l’ de 2017 [62]. Debian (Forky et Sid) et Ubuntu ont deja deploye le correctif [63]. La mise en place est encore en cours chez Red Hat et Suse [64].
Pour les systemes qui ne peuvent etre mis a jour immediatement, le CERT-EU recommande de desactiver le module algif_aead [65] en deux lignes de commande [66]. Bonne nouvelle: SSH, le chiffrement de disque ou le VPN utilisent d’autres chemins dans le noyau et ne seront pas affectes par cette desactivation [67]. La mesure n’affecte pas non plus dm-crypt/LUKS, kTLS, IPsec/XFRM, OpenSSL, GnuTLS ni NSS [68].
Sur les charges conteneurisees, CERT-EU recommande egalement de bloquer la creation de sockets AF_ALG via des politiques seccomp [69], une mesure qui empeche l’exploitation meme sur les noyaux non corriges [70]. La consigne s’applique aux environnements Docker, Podman et aux clusters Kubernetes [71].
Ce que les sources ne disent pas
Aucune source consultee ne fait etat d’une exploitation confirmee dans la nature a la date de publication. Cette absence est notable: neuf ans de presence silencieuse dans le noyau constituent une fenetre suffisamment large pour qu’une agence de renseignement ou un acteur malveillant l’ait decouverte avant Theori. Aucun element public ne permet de l’affirmer, mais aucun ne permet non plus de l’exclure. Les chercheurs n’ont communique aucun indicateur de compromission anterieur a la divulgation.
Deuxieme zone d’ombre: le PoC etant deja public sur le GitHub de Theori [72], le decalage entre la divulgation et le deploiement complet des patchs chez Red Hat et SUSE [73] cree une fenetre d’exploitation reelle pour les attaquants opportunistes. Aucune source ne quantifie le nombre de systemes encore vulnerables au moment ou ces lignes sont ecrites. Troisiemement, la methodologie - un prompt IA pour trouver une faille noyau passee sous les radars pendant neuf ans - n’a pas encore ete reproduite publiquement par des equipes concurrentes: la communaute open source ignore donc combien d’autres bombes a retardement dorment dans le code.
Pour les administrateurs systeme, le message est sans ambiguite: mettez a jour vos kernels sans attendre, ou desactivez le module concerne [74]. La faille est publique, le PoC est disponible, et l’exploitation est triviale [75].
Sources
Voir le détail de chaque fait sourcé (75)
« resté dans l'ombre pendant près de neuf ans, vous avez bien lu »
clubic.com ↗ ↩
« la faille Linux dite « Copy Fail » (CVE-2026-31431) »
clubic.com ↗ ↩
« cette vulnérabilité (CVE-2026-31431, d’une sévérité élevée de 7,8/10) »
next.ink ↗ ↩
« permet à un simple utilisateur local d'obtenir un accès root complet sur toutes les grandes distributions depuis 2017 »
clubic.com ↗ ↩
« The vulnerability affects every mainstream Linux distributions shipping a kernel built since 2017. »
cert.europa.eu ↗ ↩
« A single 732-byte Python script can edit a setuid binary and obtain root on essentially all Linux distributions shipped since 2017. »
xint.io ↗ ↩
« Le script de démonstration tient en dix lignes et 732 octets »
frandroid.com ↗ ↩
« et il marche du premier coup, sans recompilation, sans race condition, sans réglage par version du noyau »
frandroid.com ↗ ↩
« C’est l’entreprise de sécurité Xint.io qui a révélé, ce mercredi 29 avril, cette vulnérabilité »
next.ink ↗ ↩
« C’est l’entreprise de sécurité Xint.io qui a révélé, ce mercredi 29 avril, cette vulnérabilité »
next.ink ↗ ↩
« cette faille a été découverte par le chercheur de l’entreprise Theori, Taeyang Lee »
next.ink ↗ ↩
« cette faille a été découverte par le chercheur de l’entreprise Theori, Taeyang Lee »
next.ink ↗ ↩
« CVE-2026-31431, d’une sévérité élevée de 7,8/10 »
next.ink ↗ ↩
« Le score n’est « que » de 7,8 car le vecteur d’attaque est local (AV:L) »
next.ink ↗ ↩
« Une vulnérabilité passée au travers de neuf ans de revues humaines »
frandroid.com ↗ ↩
« un bug logique enfoui dans « algif_aead », le composant du noyau chargé de certaines opérations de chiffrement »
clubic.com ↗ ↩
« AF_ALG is a socket type that exposes the kernel's crypto subsystem to unprivileged userspace. »
xint.io ↗ ↩
« A user can open a socket, bind to any AEAD (Authenticated Encryption with Associated Data) template, and invoke encryption or decryption on arbitrary data. No privileges required. »
xint.io ↗ ↩
« Active depuis l'introduction d'une de performance dans le noyau 4.14 en 2017 »
generation-nt.com ↗ ↩
« introduit en août 2017 pour une a priori inoffensive »
frandroid.com ↗ ↩
« trois modifications du code ont été apportées indépendamment »
clubic.com ↗ ↩
« Entre 2011 et 2017, trois modifications du code ont été apportées indépendamment »
clubic.com ↗ ↩
« authencesn is an AEAD wrapper used by IPsec for Extended Sequence Number (ESN) support. »
xint.io ↗ ↩
« un utilisateur sans privilège peut écrire quatre octets contrôlés dans le cache de pages »
frandroid.com ↗ ↩
« The kernel retains the scatterlist entries for the tag and chains them onto the end of the output scatterlist using sg_chain: The output scatterlist now has two regions [.] followed by the chained tag pages, still referencing the original page cache pages of the target file. »
xint.io ↗ ↩
« un attaquant peut modifier discrètement la copie en mémoire d'un fichier sensible, sans toucher au fichier original sur le disque »
clubic.com ↗ ↩
« En visant « su », la commande qui permet de changer d'identité sur Linux »
clubic.com ↗ ↩
« This finding was AI-assisted, but began with an insight from Theori researcher Taeyang Lee, who was studying how the Linux crypto subsystem interacts with page-cache-backed data. »
xint.io ↗ ↩
« He used Xint Code to scale his research across the entire crypto subsystem, and Copy Fail was the most critical finding in the report. »
xint.io ↗ ↩
« Une heure de scan »
frandroid.com ↗ ↩
« Xint Code a livré Copy Fail comme résultat critique en moins d’une heure. »
android-mt.ouest-france.fr ↗ ↩
« Dirty Cow en 2016 »
clubic.com ↗ ↩
« Dirty Pipe (CVE-2022-0847) was version-specific and required precise pipe buffer manipulation. »
xint.io ↗ ↩
« Dirty Cow demandait de gagner une condition de course, parfois plusieurs essais, parfois un crash »
frandroid.com ↗ ↩
« Dirty Pipe dépendait de la version du noyau »
frandroid.com ↗ ↩
« Copy Fail, lui, est ce que les chercheurs appellent un straight-line logic bug »
frandroid.com ↗ ↩
« Copy Fail is a straight-line logic flaw. It triggers without races, retries, or crash-prone timing windows. »
xint.io ↗ ↩
« Le même script Python fonctionne sur des kernels 6.12 à 6.18 »
frandroid.com ↗ ↩
« sur x86 comme sur ARM »
frandroid.com ↗ ↩
« Le taux de succès annoncé sur les distributions testées est de 100%, ce qui est exceptionnel pour un exploit kernel. »
itsense.fr ↗ ↩
« it does not require complex race conditions and works with 100% reliability via a tiny script. »
suse.com ↗ ↩
« capable de faire tomber Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 et SUSE 16 avec exactement le même code »
korben.info ↗ ↩
« capable de faire tomber Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 et SUSE 16 avec exactement le même code »
korben.info ↗ ↩
« capable de faire tomber Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 et SUSE 16 avec exactement le même code »
korben.info ↗ ↩
« capable de faire tomber Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1 et SUSE 16 avec exactement le même code »
korben.info ↗ ↩
« « 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 » »
next.ink ↗ ↩
« Plus de cinquante variantes du package linux sont concernées sur Ubuntu seulement. »
itsense.fr ↗ ↩
« Les saveurs cloud (linux-aws, linux-azure, linux-gcp, linux-oracle), les saveurs spécialisées (linux-kvm, linux-raspi, linux-realtime, linux-nvidia), les variantes FIPS. »
itsense.fr ↗ ↩
« Les saveurs cloud (linux-aws, linux-azure, linux-gcp, linux-oracle), les saveurs spécialisées (linux-kvm, linux-raspi, linux-realtime, linux-nvidia), les variantes FIPS. »
itsense.fr ↗ ↩
« Ubuntu 26.04 (Resolute) and later kernels are not affected [2]. »
cert.europa.eu ↗ ↩
« Copy Fail is not just a local privilege escalation. It is a container escape primitive and a Kubernetes node compromise vector (Part 2). »
xint.io ↗ ↩
« Un attaquant dans un conteneur Kubernetes compromis peut ainsi s'échapper et prendre le contrôle du serveur hôte »
generation-nt.com ↗ ↩
« les environnements Kubernetes, très répandus en entreprise »
clubic.com ↗ ↩
« The write bypasses the ordinary VFS write path. The corrupted page is never marked dirty by the kernel's writeback machinery. »
xint.io ↗ ↩
« Standard file integrity tools comparing on-disk checksums will miss it, because the on-disk file is unchanged. »
xint.io ↗ ↩
« Integrity checking tools (checksums) will not detect anything »
suse.com ↗ ↩
« As shown by the exploit the change can only occurs in RAM (page cache), the file on disk would remain unchanged. »
suse.com ↗ ↩
« after a reboot, any traces of an exploit working disappear. »
suse.com ↗ ↩
« The upstream fix is mainline commit a664bf3d603d »
cert.europa.eu ↗ ↩
« Un correctif existe depuis le 1er avril 2026 »
clubic.com ↗ ↩
« The upstream fix is mainline commit a664bf3d603d, which reverts the 2017 optimisation. It was committed on 1 April 2026 [1]. »
cert.europa.eu ↗ ↩
« which reverts the 2017 optimisation »
cert.europa.eu ↗ ↩
« la plupart des principales distributions proposent désormais ce correctif, comme Debian (Forky et Sid), Ubuntu, par exemple »
next.ink ↗ ↩
« la mise en place est encore en cours chez Red Hat et Suse »
next.ink ↗ ↩
« Disable the algif_aead kernel module persistently on all affected systems until a patched kernel is available »
cert.europa.eu ↗ ↩
« désactiver manuellement le composant vulnérable (« algif_aead ») en deux lignes de commande »
clubic.com ↗ ↩
« SSH, le chiffrement de disque ou le VPN utilisent d'autres chemins dans le noyau et ne seront pas affectés par cette désactivation »
clubic.com ↗ ↩
« This workaround does not affect dm-crypt/LUKS, kTLS, IPsec/XFRM, OpenSSL, GnuTLS, NSS, or SSH. »
cert.europa.eu ↗ ↩
« CERT-EU recommends blocking AF_ALG socket creation via seccomp policies on all containerised workloads and pipelines, regardless of patch status [1]. »
cert.europa.eu ↗ ↩
« this measure effectively prevents exploitation even on unpatched kernels. »
cert.europa.eu ↗ ↩
« This applies to Docker and Podman-based environments [5] as well as Kubernetes clusters [6]. »
cert.europa.eu ↗ ↩
« L'exploit est dispo ici sur le GitHub de Theori »
korben.info ↗ ↩
« Red Hat a d’abord temporisé avant de s’aligner »
frandroid.com ↗ ↩
« Pour les administrateurs système, le message est clair: mettez à jour vos kernels sans attendre, ou désactivez le module concerné. »
android-mt.ouest-france.fr ↗ ↩
« La faille est publique, le PoC est disponible, et l’exploitation est triviale. »
android-mt.ouest-france.fr ↗ ↩
Sources
- Copy Fail, l'impensable faille Linux vieille de 9 ans qui donne les pleins pouvoirs à n'importe quel utilisateur
- Copy fail : depuis 2017, une faille dans le noyau Linux permettait à un utilisateur de passer root
- Copy Fail: 732 Bytes to Root on Every Major Linux Distribution.
- Copy Fail - Une IA trouve la faille Linux que personne n'a vue
- Alerte sécurité : ce hack prend le contrôle de n'importe quel PC Linux
- High Vulnerability in the Linux Kernel ("Copy Fail")
- Copy Fail, la faille qui offre un accès root sur Linux depuis 2017 !
- Copy Fail : une IA découvre une faille critique dans le noyau Linux
- Copyfail : 1 commande pour passer en super admin
- SUSE responds to the copy.fail vulnerability
