
Outil de diagnostic passif qui vérifie si un système Linux est vulnérable à CVE-2026-31431 en testant l'accessibilité des sockets AF_ALG, fournissant des recommandations d'atténuation et des codes de sortie adaptés à l'intégration continue.
Un script Python simple et sûr qui détermine si un système Linux est vulnérable à la CVE-2026-31431 (« Copy Fail »), une élévation de privilèges locale qui affecte toutes les principales distributions depuis le noyau 4.14.
La CVE-2026-31431 est un bug logique linéaire dans le module de socket cryptographique algif_aead du noyau Linux. En utilisant des sockets AF_ALG combinées à splice(), un attaquant non privilégié peut écraser 4 octets dans le cache de pages d'un binaire setuid et obtenir les droits root.
| Propriété | Détail |
|---|
| Condition de course requise | ❌ Non – l'exploitation est déterministe |
| Offsets du noyau requis | ❌ Non – aucun offset spécifique à une version n'est nécessaire |
| Complexité de l'exploit | Un script Python unique de 732 octets suffit pour obtenir root |
| Ce vérificateur | Diagnostic passif uniquement – ne déclenche pas la vulnérabilité |
Le script tente de créer et de lier un socket AF_ALG en utilisant le modèle d'algorithme exact sur lequel repose la vulnérabilité :
authencesn(hmac(sha256),cbc(aes))
| Résultat | Signification |
|---|---|
| Socket créé et lié | Le chemin de code vulnérable est accessible – corrigez immédiatement |
EAFNOSUPPORT (errno 97) | Module non chargé – surface d'attaque indisponible |
Permission denied | La politique MAC (SELinux/AppArmor) bloque l'accès – sûr |
Le script ne déclenche pas la vulnérabilité de quelque manière que ce soit. Il est totalement passif et sûr à exécuter.
Clonez le dépôt ou téléchargez check_copyfail.py, puis exécutez :
python3 check_copyfail.py
____ _____ _ _
/ ___|___ _ __ _ _| ___|_ _(_) |
| | / _ \| '_ \| | | | |_ / _` | | |
| |__| (_) | |_) | |_| | _| (_| | | |
\____\___/| .__/ \__, |_| \__,_|_|_|
|_| |___/
CVE-2026-31431 « Copy Fail » – Vérificateur d'accessibilité
Phalanx CCS / d_0_4 | Usage défensif uniquement
-------------------------------------------------------
Version du noyau : 6.1.0-28-amd64
Plage de versions : Plage potentiellement affectée
Cible AF_ALG : authencesn(hmac(sha256),cbc(aes))
[!!!] SURFACE D'ATTAQUE VULNÉRABLE ACCESSIBLE
Socket créé et lié – AF_ALG accessible
Atténuation immédiate :
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Mettez ensuite à jour votre noyau dès que des correctifs sont disponibles.
Correctif en amont : commit a664bf3d603d
Le script se termine avec le code 1 si la surface d'attaque est accessible, et 0 si le système est sûr — ce qui le rend adapté à une utilisation dans des scripts shell, des playbooks Ansible et des pipelines CI.
En attendant une mise à jour du noyau, désactivez le module vulnérable :
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Le correctif officiel est le commit a664bf3d603d dans le noyau principal. Mettez à jour via le gestionnaire de paquets de votre distribution dès que des correctifs sont disponibles.
Ce vérificateur signalera toujours un système sûr sur les appareils Android modernes (y compris Termux). Le socket AF_ALG est indisponible pour les applications non privilégiées en raison des politiques SELinux obligatoires, donc la vulnérabilité n'est pas exploitable sur les builds Android standard.
Ce projet est sous licence MIT License – voir LICENSE pour plus de détails. N'hésitez pas à l'utiliser, le modifier et le distribuer.
Avertissement : Cet outil est destiné uniquement à des fins de diagnostic défensif.
Ne l'utilisez pas sur des systèmes dont vous n'êtes pas propriétaire ou sans autorisation écrite explicite.