
Preuve de concept d'exploitation pour CVE-2026-31431, une vulnérabilité d'élévation de privilèges locale dans le noyau Linux au niveau du module algif_aead, permettant à des utilisateurs non privilégiés d'obtenir les droits root via une écriture de 4 octets dans le cache de pages.
Ce dépôt contient une preuve de concept (PoC) pour CVE-2026-31431, une vulnérabilité d'élévation de privilèges locale de haute sévérité dans le noyau Linux qui permet à tout utilisateur local non privilégié d'obtenir un accès root. La faille, surnommée « Copy Fail », réside dans le module algif_aead et peut être enchaînée avec l'interface socket AF_ALG et l'appel système splice() pour effectuer une écriture contrôlée de 4 octets dans le cache de pages de tout fichier lisible, comme le binaire setuid /usr/bin/su.
La vulnérabilité affecte presque tous les noyaux Linux publiés depuis 2017, y compris toutes les distributions majeures (Ubuntu, Debian, RHEL, SUSE, Amazon Linux et bien d'autres). Elle a été divulguée publiquement le 29 avril 2026. Un correctif a été validé en amont (commit a664bf3d603d), mais de nombreux fournisseurs sont encore en train de publier des noyaux corrigés. En attendant qu'un noyau corrigé soit disponible, il est fortement recommandé de désactiver le module noyau algif_aead comme mesure d'atténuation temporaire.
⚠ Important : Ce contenu est fourni strictement à des fins éducatives et de recherche en sécurité autorisée. Ne l'utilisez pas contre des systèmes qui ne vous appartiennent pas ou sans autorisation explicite.
Le dépôt contient deux implémentations de PoC qui démontrent l'exploitation sous différents angles.
copy-fail-poc-short.py — minimal, proche de l'originalUne version condensée qui reste très proche de l'exploit Python publié à l'origine. Elle utilise des noms de variables à une seule lettre et omet les commentaires ou constantes, ce qui la rend extrêmement compacte (732 octets). Cette variante :
/usr/bin/su et un socket brut AF_ALG AEAD.os.splice pour copier sans copie intermédiaire le morceau de 4 octets correspondant du fichier cible./usr/bin/su pour obtenir un shell root.copy-fail-poc.py — entièrement refactorisé, completUne version entièrement réécrite et bien documentée qui suit les bonnes pratiques Python. Cette variante :
send_data_over_crypto_socket()) pour isoler la logique principale.Cette version est idéale pour ceux qui souhaitent comprendre la vulnérabilité en profondeur ou adapter le code pour des recherches supplémentaires.
À un niveau élevé, l'exploit :
setuid cible (/usr/bin/su).AF_ALG AEAD et le configure avec les paramètres requis pour déclencher la faille logique.splice() sans copie intermédiaire.algif_aead, le noyau écrit par erreur 4 octets de données contrôlées par l'attaquant dans le cache de pages du binaire cible./usr/bin/su corrige efficacement le binaire à l'exécution, permettant à un utilisateur non privilégié d'exécuter une version corrigée qui renvoie un shell root.L'exploit est extrêmement fiable (taux de réussite de 100 %) et ne nécessite aucune fenêtre de course ni décalage spécifique au noyau.
a664bf3d603d (git.kernel.org)