
Preuve de concept d'exploitation pour CVE-2026-31431, une vulnérabilité de corruption mémoire AF_ALG du noyau Linux. Utilise splice pour patcher /usr/bin/su dans le cache de pages, permettant une élévation de privilèges root sans mot de passe.
CopyFail est un exploit de preuve de concept pour CVE-2026-31431, ciblant une vulnérabilité de corruption mémoire dans l'API Crypto du noyau Linux (AF_ALG). L'exploit exploite l'appel système splice pour effectuer une modification non autorisée du cache de pages du binaire /usr/bin/su, permettant une élévation de privilèges vers root sans mot de passe.
La vulnérabilité réside dans la gestion par le noyau Linux des transferts de données zéro-copie entre les sockets AF_ALG et d'autres descripteurs de fichiers via splice. En raison d'une synchronisation ou d'une vérification des limites inadéquate dans l'implémentation aead, les données traitées par le moteur cryptographique peuvent être réécrites dans le cache de pages du fichier source.
AF_ALG et utilise sendmsg pour mettre en file d'attente une charge utile malveillante dans les tampons internes de la socket.splice pour transférer des données du binaire /usr/bin/su vers la socket AF_ALG, la vulnérabilité provoque l'écrasement du cache de pages du binaire en mémoire par le contenu du tampon de la socket.su par une charge utile ELF minimale qui génère un shell root. Comme le cache de pages est modifié, les exécutions ultérieures de su exécutent le code de l'attaquant au lieu du binaire d'origine.RawSyscall pour toutes les interactions avec le noyau.AF_ALG/splice.fmt ou os).Compilez l'exploit pour l'architecture actuelle :
go build -ldflags="-s -w" -o CopyFail CVE-2026-31431.go
Exécutez le binaire compilé :
./CopyFail
En cas d'exécution réussie, le binaire su sera modifié en mémoire et exécuté, accordant un shell root.
La démonstration suivante montre l'exploit compilé et exécuté sur une installation Kali Linux standard.
# 1. Vérifier l'utilisateur non privilégié actuel
kali@kali:~$ whoami
kali
# 2. Compiler l'exploit
kali@kali:~$ go build -ldflags="-s -w" -o CopyFail CVE-2026-31431.go
# 3. Exécuter l'exploit CopyFail
kali@kali:~$ ./CopyFail
[+] Déclenchement de la corruption mémoire AF_ALG...
[+] Modification de /usr/bin/su dans le cache de pages...
[+] Exécution du binaire modifié...
# 4. Succès : Élévation vers un shell root
root@kali:/home/kali# id
uid=0(root) gid=0(root) groups=0(root)
root@kali:/home/kali# whoami
root
Pour atténuer cette vulnérabilité, les mesures suivantes sont recommandées :
af_alg et les modules associés :
modprobe -r af_alg
auditd) pour surveiller les appels splice suspects ciblant des binaires système sensibles.⚠️ Avertissement : Cet outil est destiné uniquement à la recherche en sécurité autorisée et à des fins éducatives. La modification du cache de pages est une opération volatile et peut provoquer une instabilité du système. L'auteur décline toute responsabilité en cas d'utilisation abusive.
CVE-2026-31431 (« Copy Fail ») a été découverte et divulguée par l'équipe de recherche de Theori.
Ce projet est sous licence MIT LICENSE.