
Rol de Ansible que aplica y verifica la mitigación de modprobe.d para CVE-2026-31431 deshabilitando el módulo del kernel algif_aead, con comprobaciones de seguridad para sistemas de la familia Debian.
Rol de Ansible para aplicar (y posteriormente eliminar) la mitigación de modprobe.d para
CVE-2026-31431 ("Copy Fail") en el subsistema AF_ALG / algif_aead
del kernel de Linux.
Probado en Debian. Las solicitudes de extracción para otras distribuciones, casos límite o mejoras son muy bienvenidas.
El rol coloca un fragmento de configuración en /etc/modprobe.d/ que impide que el
módulo del kernel algif_aead se cargue:
install algif_aead /bin/false
Luego verifica que la mitigación sea realmente efectiva mediante:
/boot/config-$(uname -r) y negarse a ejecutarse si AEAD está compilado
en el kernel (CONFIG_CRYPTO_USER_API_AEAD=y) — modprobe.d no puede bloquear
código integrado.algif_aead no está actualmente en lsmod.AF_ALG e intenta
bind() a aead/gcm(aes). Después de la mitigación, el bind debe fallar con
FileNotFoundError.No se requiere reinicio.
Para revertir (p. ej. una vez que un kernel parcheado esté instalado), establezca
cve_2026_31431_state=absent.
La mitigación que circula en oss-security — colocar
install algif_aead /bin/false en /etc/modprobe.d/ y ejecutar rmmod del
módulo — no funciona en CloudLinux, AlmaLinux, RHEL ni en ninguna otra
distribución de la familia RHEL, y no funciona en kernels personalizados compilados con
AEAD incluido.
En esos sistemas algif_aead está compilado en el kernel
(CONFIG_CRYPTO_USER_API_AEAD=y), por lo que:
modprobe.d no pueden bloquear la carga (no hay nada que cargar — el
código ya está en la imagen del kernel).rmmod algif_aead no puede eliminar código integrado.Los comandos parecen tener éxito pero dejan el sistema sin cambios, dando una falsa sensación de protección. Puede confirmar si su kernel está afectado:
zgrep '^CONFIG_CRYPTO_USER_API_AEAD=' /boot/config-$(uname -r)
=m → módulo, este rol puede mitigar.=y → integrado, necesita una actualización del kernel + reinicio o una suscripción
de livepatch. Este rol detectará esto y se negará a ejecutarse.| Nombre | Valor predeterminado | Notas |
|---|---|---|
cve_2026_31431_state | present | Establecer a absent para eliminar la mitigación |
cve_2026_31431_conf | /etc/modprobe.d/disable-algif_aead.conf | Ruta al archivo de bloqueo |
ansible-galaxy install joltcan.cve_2026_31431
ansible-playbook -i <su-inventario> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml
Limpieza una vez que el kernel parcheado esté en ejecución:
ansible-playbook -i <su-inventario> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml -e cve_2026_31431_state=absent
- hosts: all
become: true
roles:
- role: joltcan.cve_2026_31431
Las incidencias y solicitudes de extracción son bienvenidas — particularmente:
algif_aead es cargable
(Arch, Gentoo, Alpine, etc.).algif_aead ya cargado cuando no hay
usuarios de AF_ALG activos.MIT — ver LICENSE.