CVE 2026 31431, communément appelée "Copy Fail", est une vulnérabilité locale d'élévation de privilèges de haute sévérité affectant le noyau Linux. Le problème affecte les noyaux livrés par toutes les distributions Linux majeures depuis 2017 et permet à un utilisateur local non privilégié d'obtenir une exécution au niveau racine sur le système hôte.
La vulnérabilité provient d'un défaut de logique dans le sous-système cryptographique du noyau Linux, en particulier l' interface algif_aead exposée via les socketsAF_ALG. Sous certaines conditions, cette faille permet une modification contrôlée ducache de page enmémoire du noyaupour lesfichiers enlectureseule, y compris les binairessetuid root. Lorsqu'un tel binaire modifié est exécuté, l'attaquant peut obtenir des privilèges élevés.
Un attaquant disposant d'une exécution locale de code (par exemple, un compte utilisateur standard, un compte de service compromis, un point d'appui d'évasion de conteneur, ou un travail CI malveillant) peut :
Contrairement auxfaillesantérieures d'élévationdes privilèges sous Linux, Copy Fail :
Systèmes concernés
Recommandations
Integrity360 a effectué une analyse dynamique contrôlée descharges utiles dedémonstrationdeCopy Fail accessibles au publicafin de valider l'exploitabilité et d'évaluer le risque opérationnel.
L'analyse dynamique par l'exécution des charges utiles a révélé que l'exploit cible le chemin du bogue "Copy Fail" de Linux en corrompant le cache de page d'un exécutable protégé, spécifiquement "su", sans ouvrir ce fichier en écriture. La charge utile ouvre la cible en lecture seule, pilote à plusieurs reprises une interface cryptographique du noyau via "AF_ALG", déplace les données soutenues par la cible via splice, puis signale que le cache de page a été modifié avant d'exécuter la cible.
Il ne s'agit pas d'un écrasement de fichier normal. L'exploit abuse d'un chemin de copie côté noyau de sorte que l'image en mémoire de l'exécutable est modifiée même si le descripteur de fichier est en lecture seule. La trace de l'analyse dynamique montre que l'exécution passe par "sh -c su", suivi par l'exécution de "su", qui ne se comporte plus comme l'aide"setuid" d'origineet passe à "sh". Pendant l'exécution, nous avons observé que "setgid(0)" et "setuid(0)" échouent avec "EPERM", ce qui est cohérent avec l'élévation de privilèges supprimée par le traçage ; le comportement de l'exploit est toujours visible parce que l'exécution est redirigée vers un shell.
L'exploit commence par ouvrir "su" avec "O_RDONLY" et annonce une charge utile de 1704 octets (426 itérations). Ce nombre est important : la boucle semble patcher la cible en morceaux de 4 octets, avec 426 x 4 = 1704. Chaque itération crée un nouveau socket "AF_ALG", le lie à un crypto path "AEAD", définit les paramètres de l'algorithme avec "setsockopt", et envoie un petit bloc de contrôle artisanal avec "sendmsg".
L'étape critique est la paire d'appels d'épissage. Tout d'abord, les octets sont épissés à partir du descripteur de fichier cible en lecture seule dans un tuyau. Ensuite, ils sont épissés à partir du tuyau dans laprise"AF_ALG"acceptée. Cela permet de maintenir le transfert dans l'espace du noyau et d'éviter une écriture normale dans l'espace utilisateur. Après chaque tentative, "recvfrom" renvoie "EBADMSG", ce qui indique que l'opération cryptographique a échoué du point de vue de l'espace utilisateur, mais la trace montre clairement que l'exploit s'appuie sur un effet secondaire côté noyau qui survit à cet échec.
Vers la fin de la trace, l'exploit effectue le transfert complet de 1704 octets, ferme les descripteurs, imprime le cache de page muté ; exécute la cible, et exécute immédiatement "sh -c su". Cela conduit à "execve("/usr/bin/su", ...)", puis à l'échec de "setgid(0)" et "setuid(0)", et enfin à "execve("/bin/sh", ["sh"], [])". Cette séquence indique que l'image mise en cache de "su" a été modifiée de sorte que l'exécution ne suit plus la logique du programme original.
Exploitation réussie
Linux 5.4.0-122-generic (x86_64)
Exploitation infructueuse
Linux 7.0.0-15-générique (x86_64, noyau corrigé)
Référence de la charge utile
https:// github.com/tgies/copy-fail-c
Si vous êtes préoccupé par l'une des menaces décrites dans ce bulletin ou si vous avez besoin d'aide pour déterminer les mesures à prendre pour vous protéger contre les menaces les plus importantes auxquelles votre organisation est confrontée, veuillez contacter votre gestionnaire de compte, ou bien prenez contact avecnous pour savoir comment vous pouvez protéger votre organisation.