
Détecte et atténue la CVE-2026-31431 (Copy Fail) sous Linux en sondant la vulnérabilité AF_ALG et en plaçant éventuellement sur liste noire le module concerné.
Détecte et (optionnellement) atténue CVE-2026-31431 (« Copy Fail ») sur un hôte Linux.
La vulnérabilité est une primitive d'écriture dans le cache de pages accessible via la famille de sockets AF_ALG en utilisant la transformation AEAD authencesn(hmac(sha256),cbc(aes)). Ce script reproduit la même primitive que celle démontrée par Theori, mais ciblée sur un fichier temporaire auto-créé plutôt que sur un binaire setuid, afin que le test lui-même soit non destructif.
Si le noyau est vulnérable, le script propose d'appliquer une atténuation : mettre sur liste noire algif_aead via /etc/modprobe.d/disable-algif-aead.conf et décharger le module. Une mise à jour du noyau reste nécessaire pour un correctif complet.
os.splice)uv pour exécuter le script avec une version de Python épingléesudo / root — requis pour appliquer l'atténuation (écriture dans /etc/modprobe.d et rmmod) ; la détection seule s'exécute sans privilèges, mais le script demande interactivement s'il faut patchersudo $(which uv) run --python 3.10 /path/to/copy_fail_test.py
$(which uv) est utilisé pour que sudo conserve le bon binaire uv dans PATH.
Le script va :
AF_ALG + authencesn(hmac(sha256),cbc(aes)) est accessible.✅ NOT VULNERABLE — code de sortie 0🚨 VULNERABLE — invite à appliquer l'atténuation, puis re-teste⚠️ INCONCLUSIVE — code de sortie 2 (par ex. l'appel splice/sendmsg a renvoyé une erreur)Si vous acceptez l'invite, le script :
install algif_aead /bin/false dans /etc/modprobe.d/disable-algif-aead.conf.rmmod algif_aead.Si le module est compilé dans le noyau (non chargeable), un redémarrage est nécessaire pour que la liste noire prenne effet. Dans tous les cas, patchez le noyau lorsqu'une mise à jour est disponible — la liste noire ne supprime qu'un seul point d'entrée.
Équivalent manuel :
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
L'étape de détection écrit dans un tempfile.NamedTemporaryFile qu'elle crée puis supprime ; aucun fichier système n'est touché. L'étape d'atténuation est la seule partie qui modifie l'hôte, et uniquement si vous confirmez à l'invite.