
Exploit pour CVE-2026-31431, un bug authencesn du noyau Linux permettant une élévation de privilèges locale et une évasion de conteneur via une écriture de 4 octets dans le cache de pages.
732 octets pour obtenir root sur toutes les principales distributions Linux
CVE-2026-31431 (Copy Fail) est un bug logique dans le modèle cryptographique authencesn du noyau Linux. Il permet à un utilisateur local non privilégié de déclencher une écriture déterministe et contrôlée de 4 octets dans le cache de pages de n'importe quel fichier lisible sur le système.
CONFIG_CRYPTO_AUTHENC (pratiquement toutes les principales distributions depuis 2017)Le bug enchaîne deux comportements :
AF_ALG + splice : splice() transfère les pages du cache de pages par référence dans le scatterlist d'une socket AF_ALG. Pour le mode de déchiffrement AEAD en place, les pages de tag (provenant du cache de pages du fichier cible) restent chaînées au scatterlist de sortie via sg_chain().
Écriture scratch authencesn : crypto_authenc_esn_decrypt() utilise dst[assoclen + cryptlen] (au-delà du tag, dans les pages du cache de pages) comme espace scratch pour le réarrangement du numéro de séquence ESN, écrivant 4 octets contrôlés par l'attaquant sans jamais les restaurer.
La page corrompue n'est jamais marquée comme sale, donc le fichier sur disque reste inchangé. Mais c'est le cache de pages en mémoire qui est réellement lu — rendant la corruption immédiatement visible à l'échelle du système.
L'exploit corrompt le cache de pages de /usr/bin/su (ou de tout binaire setuid) avec une petite charge utile shellcode, 4 octets à la fois. Après toutes les itérations, l'exécution de su déclenche la charge utile et donne un shell root.
python3 exp.py
gcc -o exp exp.c
./exp
| Capacité | Détails |
|---|
Ce dépôt est publié à des fins éducatives et de recherche défensive uniquement. N'utilisez pas ce code sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester.
| Portable | Le même script fonctionne sur Ubuntu, Amazon Linux, RHEL, SUSE, et plus encore — aucun décalage spécifique à une distribution |
| Minuscule | L'exploit Python fait environ 732 octets |
| Discret | Contourne le chemin d'écriture VFS ; la page n'est jamais marquée comme sale ; les sommes de contrôle sur disque restent inchangées |
| Trans-conteneur | Le cache de pages est partagé entre les conteneurs — vecteur d'évasion de conteneur (voir Partie 2) |