
Preuve de concept d'exploitation pour CVE-2026-31431, une vulnérabilité de corruption du cache de pages du noyau Linux permettant une élévation de privilèges locale via algif_aead. Inclut exploit.py et des recommandations d'atténuation.
Une preuve de concept professionnelle pour la vulnérabilité CVE-2026-31431, une faille critique dans la gestion du cache de pages algif_aead / authencesn du noyau Linux.
La vulnérabilité CVE-2026-31431, communément appelée « Copy Fail », implique un bug d'écriture temporaire dans le cache de pages divulgué le 29 avril 2026. Elle permet à un utilisateur local non privilégié de corrompre la vue du cache de pages de fichiers critiques du système comme /etc/passwd ou /usr/bin/su sans modifier le fichier sur disque, permettant ainsi une élévation de privilèges locale (LPE). [1]
Le composant algif_aead effectue des opérations AEAD (Authenticated Encryption with Associated Data) en place. Lorsque les données sources sont fournies via splice() depuis un fichier régulier, la liste scatterlist de destination référence les pages du cache de pages du fichier. L'algorithme authencesn(hmac(sha256), cbc(aes)) effectue une écriture « temporaire » de 4 octets du champ seqno_lo de l'AAD dans la destination, corrompant directement la copie du cache de pages. [1]
| Distribution | Statut |
|---|---|
| Ubuntu 24.04 LTS | Confirmée vulnérable |
Remarque : Tout noyau contenant le commit
72548b093ee3(datant de 2017) sans le revert en amont est potentiellement concerné.
| Fichier | Description |
|---|---|
exploit.py | Une implémentation compacte de la primitive LPE ciblant les binaires système. |
Pour obtenir un shell root à l'aide du script d'exploitation fourni :
python3 exploit.py
Le script automatise la corruption du cache de pages de /usr/bin/su ou /etc/passwd pour élever les privilèges. Il est conseillé aux utilisateurs d'examiner attentivement le code avant son exécution, car il interagit avec des composants système sensibles.
La primitive principale exploite la séquence suivante :
sendmsg avec un AAD de 8 octets et des contrôles AEAD spécifiques.splice() sur le descripteur de fichier cible dans le socket d'opération.recv(), qui exécute l'écriture temporaire avant de renvoyer une erreur.En attendant le déploiement d'un noyau corrigé, le module algif_aead doit être désactivé :
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
sudo rmmod algif_aead 2>/dev/null
AVERTISSEMENT : Cet outil est destiné uniquement à des fins éducatives et d'évaluation de sécurité autorisée. Toute utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale et contraire à l'éthique. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.
[1] Xint Blog : Copy Fail - Divulgation des distributions Linux
© 2026 BEN
| Amazon Linux 2023 | Confirmée vulnérable |
| RHEL 14.3 | Confirmée vulnérable |
| SUSE 16 | Confirmée vulnérable |