
# Exploit LPE Copy Fail (CVE-2026-31431) Une réimplémentation Python propre et multi-architectures ciblant la vulnérabilité du cache de pages AF_ALG du noyau Linux.
Élévation de privilèges locale sur les noyaux Linux de 4.11 jusqu'aux versions 6.18 corrigées (non incluses).
Le bug se situe dans l'interface socket AF_ALG du noyau — plus précisément dans la façon dont authencesn gère les listes scatter-gather lors du déchiffrement AEAD en place. Le résultat : un utilisateur non privilégié peut écraser 4 octets à la fois dans le cache de pages de n'importe quel fichier lisible.
Écrasez un binaire setuid comme /usr/bin/su avec du shellcode, exécutez-le, et vous êtes root. Pas de course, pas de symboles noyau, pas de recompilation. Le même payload AArch64 de 172 octets (ou 160 pour x86-64, 126 pour i386, 138 pour ARMv7) fonctionne sur toutes les distributions.
La vulnérabilité a été découverte par Taeyang Lee & Theori / Xint Code et publiée le 29 avril 2026. Ce dépôt est une réimplémentation indépendante, basée sur les classes, destinée aux tests autorisés.
| Vérification de la vulnérabilité | Exploitation et obtention de root |
|---|---|
![]() | ![]() |
allowPrivilegeEscalation: true (le défaut Kubernetes) peut s'en échapper.Tout ce qui exécute un noyau entre 4.11 et environ 6.17.x, ce qui inclut :
Noyaux corrigés : mainline ≥ 6.18.22 / 6.19.12 / 7.0, plus des backports vers les arbres stables.
# Vérifier si le système est vulnérable
python3 exploit.py --check
# Exécuter l'exploit (utilisateur non root requis)
python3 exploit.py
os.splice natif à partir de 3.10)authencesn(hmac(sha256),cbc(aes))/usr/bin/su est le défaut ; utilisez --scan pour trouver des alternatives)Si la vérification se plaint de l'algorithme, chargez les modules nécessaires :
sudo modprobe algif_aead authencesn hmac cbc
Certaines distributions livrent un blocage temporaire (/etc/modprobe.d/disable-algif_aead.conf). Le script le supprime automatiquement lorsqu'il est exécuté en root, ou vous pouvez le supprimer à la main.
Permanente : Mettez à jour votre noyau. Sur Ubuntu/Debian :
sudo apt update && sudo apt upgrade linux-image-generic
Solution de contournement (n'affecte pas IPsec/XFRM) :
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Note : IPsec/XFRM n'est pas affecté par ce blocage car il utilise l'API crypto du noyau directement, pas AF_ALG.
Conteneurs :
L'atténuation principale consiste à bloquer le socket AF_ALG avec un profil seccomp. De plus, définissez allowPrivilegeEscalation: false dans votre contexte de sécurité de pod pour activer no_new_privs, ce qui empêche le noyau d'honorer les bits setuid sur execve().
Cet outil est destiné aux tests de sécurité éducatifs et autorisés. Ne l'exécutez pas sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite de tester.