
Rôle Ansible qui applique et vérifie l’atténuation modprobe.d pour CVE-2026-31431 en désactivant le module noyau algif_aead, avec des contrôles de sécurité pour les systèmes de la famille Debian.
Rôle Ansible pour appliquer (puis retirer) l'atténuation modprobe.d pour
CVE-2026-31431 (« Copy Fail ») dans le sous-système AF_ALG / algif_aead
du noyau Linux.
Testé sur Debian. Les pull requests pour d'autres distributions, cas limites ou améliorations sont les bienvenues.
Le rôle dépose un extrait de configuration dans /etc/modprobe.d/ qui empêche
le module noyau algif_aead d'être chargé :
install algif_aead /bin/false
Il vérifie ensuite que l'atténuation est réellement efficace en :
/boot/config-$(uname -r) et refusant de s'exécuter si AEAD est
compilé dans le noyau (CONFIG_CRYPTO_USER_API_AEAD=y) — modprobe.d ne
peut pas bloquer le code intégré.algif_aead n'est pas actuellement dans lsmod.AF_ALG et tente de
bind() sur aead/gcm(aes). Après l'atténuation, le bind doit échouer
avec FileNotFoundError.Aucun redémarrage n'est requis.
Pour revenir en arrière (par exemple une fois qu'un noyau corrigé est en
place), définissez cve_2026_31431_state=absent.
L'atténuation diffusée sur oss-security — déposer
install algif_aead /bin/false dans /etc/modprobe.d/ et rmmod du
module — ne fonctionne pas sur CloudLinux, AlmaLinux, RHEL, ni aucune autre
distribution de la famille RHEL, et ne fonctionne pas sur les noyaux
personnalisés compilés avec AEAD inclus.
Sur ces systèmes, algif_aead est compilé dans le noyau
(CONFIG_CRYPTO_USER_API_AEAD=y), donc :
modprobe.d ne peuvent pas bloquer le chargement (il n'y a rien
à charger — le code est déjà dans l'image du noyau).rmmod algif_aead ne peut pas supprimer le code intégré.Les commandes semblent réussir mais laissent le système inchangé, donnant une fausse impression de protection. Vous pouvez confirmer si votre noyau est concerné :
zgrep '^CONFIG_CRYPTO_USER_API_AEAD=' /boot/config-$(uname -r)
=m → module, ce rôle peut atténuer.=y → intégré, vous avez besoin d'une mise à jour du noyau + d'un
redémarrage ou d'un abonnement livepatch. Ce rôle détectera cela et
refusera de s'exécuter.| Nom | Défaut | Notes |
|---|---|---|
cve_2026_31431_state | present | Définir sur absent pour retirer l'atténuation |
cve_2026_31431_conf | /etc/modprobe.d/disable-algif_aead.conf | Chemin du fichier de blocage |
ansible-galaxy install joltcan.cve_2026_31431
ansible-playbook -i <votre-inventaire> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml
Nettoyage une fois que le noyau corrigé est en cours d'exécution :
ansible-playbook -i <votre-inventaire> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml -e cve_2026_31431_state=absent
- hosts: all
become: true
roles:
- role: joltcan.cve_2026_31431
Les issues et pull requests sont les bienvenues — en particulier :
algif_aead
est chargeable (Arch, Gentoo, Alpine, etc.).algif_aead déjà chargé
lorsqu'aucun utilisateur AF_ALG n'est actif.MIT — voir LICENSE.