
Scripts d’atténuation permanents pour CVE-2026-31431 (Copy Fail) sur Ubuntu 24.04, mettant sur liste noire le module noyau vulnérable algif_aead et mettant à jour l’initramfs pour persister après les redémarrages.
Ce dépôt contient des scripts conçus pour neutraliser la vulnérabilité critique CVE-2026-31431, surnommée « Copy Fail », sur les systèmes Ubuntu.
[!IMPORTANT] Compatibilité : Ces scripts sont adaptés et testés sur Ubuntu Server 24.04 LTS. Bien que la logique soit similaire pour d'autres distributions, ils n'ont pas été testés sur Debian ni sur d'autres variantes de Linux.
Avant d'appliquer le correctif, téléchargez le script de détection officiel (développé par rootsecdev) pour valider l'état actuel de votre système :
# Télécharger le script de détection
wget https://raw.githubusercontent.com/rootsecdev/cve_2026_31431/main/test_cve_2026_31431.py
# Assurez-vous que python3 est installé
python3 --version
La vulnérabilité CVE-2026-31431 ($CVSS\ 7.8$) affecte le sous-système cryptographique du noyau Linux (module ).
algif_aeadUn utilisateur local peut corrompre le Page Cache du système en exploitant une faille dans l'optimisation « in-place » de la fonction splice(). Cela permet à un attaquant de forcer le noyau à écrire des données arbitraires (numéros de séquence) dans les pages mémoire de fichiers qui devraient être en lecture seule (tels que les binaires SUID ou les fichiers système sensibles).
modprobe -r ne suffit pasLe noyau Linux utilise un mécanisme appelé auto-chargement. Si un processus ou un script (comme le détecteur) demande un socket de type AF_ALG, le noyau recharge automatiquement le module même s'il a été supprimé manuellement. La méthode utilisée dans ce correctif (« Hard Block ») empêche physiquement le binaire du module d'être chargé par le noyau.
Exécutez le testeur pour confirmer si votre noyau actuel est exposé :
python3 test_cve_2026_31431.py
Si le script affiche [!] VULNERABLE, passez à l'étape suivante.
Le script patch-CVE-2026-31431.sh neutralise le vecteur d'attaque de manière permanente. Il crée un fichier de configuration dans /etc/modprobe.d/ et met à jour l'initramfs pour garantir que le blocage persiste après un redémarrage.
chmod +x patch-CVE-2026-31431.sh
sudo ./patch-CVE-2026-31431.sh
Exécutez à nouveau le script de détection. Vous devriez maintenant voir un message indiquant que les prérequis ne sont pas remplis :
[+] Precondition not met ('authencesn(...) cannot be instantiated).
Cela confirme que le module est neutralisé avec succès.
Une fois qu'Ubuntu publiera un correctif officiel via une mise à jour du noyau (consultez les notes de apt upgrade pour CVE-2026-31431), vous devriez restaurer les capacités cryptographiques natives :
chmod +x unpatch-CVE-2026-31431.sh
sudo ./unpatch-CVE-2026-31431.sh
La protection repose sur la directive suivante dans /etc/modprobe.d/cve-2026-31431-mitigation.conf :
blacklist algif_aead
install algif_aead /bin/true
La commande install redirige la tentative du noyau de charger le module vers /bin/true, qui renvoie un code de sortie « succès » sans exécuter aucun code vulnérable.