
# Função Ansible que aplica e verifica a mitigação do modprobe.d para CVE-2026-31431, desabilitando o módulo do kernel algif_aead, com verificações de segurança para sistemas da família Debian.
Role Ansible para aplicar (e posteriormente remover) a mitigação via modprobe.d para
CVE-2026-31431 ("Copy Fail") no subsistema AF_ALG / algif_aead do kernel Linux.
Testado em Debian. Pull requests para outras distribuições, casos extremos ou melhorias são muito bem-vindos.
A role insere um snippet de configuração em /etc/modprobe.d/ que impede o
carregamento do módulo do kernel algif_aead:
install algif_aead /bin/false
Em seguida, ela verifica se a mitigação é realmente eficaz:
/boot/config-$(uname -r) e recusando-se a executar se AEAD estiver compilado
no kernel (CONFIG_CRYPTO_USER_API_AEAD=y) — o modprobe.d não pode bloquear código embutido.algif_aead não está atualmente em lsmod.AF_ALG e tenta
bind() em aead/gcm(aes). Após a mitigação, o bind deve falhar com
FileNotFoundError.Nenhuma reinicialização é necessária.
Para reverter (por exemplo, quando um kernel corrigido estiver instalado), defina
cve_2026_31431_state=absent.
A mitigação que circula no oss-security — inserir
install algif_aead /bin/false em /etc/modprobe.d/ e executar rmmod no
módulo — não funciona em CloudLinux, AlmaLinux, RHEL ou qualquer outra
distribuição da família RHEL, e não funciona em kernels personalizados compilados com
AEAD embutido.
Nesses sistemas, algif_aead é compilado no kernel
(CONFIG_CRYPTO_USER_API_AEAD=y), portanto:
modprobe.d não podem bloquear o carregamento (não há nada para carregar — o
código já está na imagem do kernel).rmmod algif_aead não pode remover código embutido.Os comandos parecem ser bem-sucedidos, mas deixam o sistema inalterado, dando uma falsa sensação de proteção. Você pode confirmar se o seu kernel é afetado:
zgrep '^CONFIG_CRYPTO_USER_API_AEAD=' /boot/config-$(uname -r)
=m → módulo, esta role pode mitigar.=y → embutido, você precisa de uma atualização de kernel + reinicialização ou de uma assinatura
de livepatch. Esta role detectará isso e se recusará a executar.| Nome | Padrão | Observações |
|---|---|---|
cve_2026_31431_state | present | Defina como absent para remover a mitigação |
cve_2026_31431_conf | /etc/modprobe.d/disable-algif_aead.conf | Caminho para o arquivo de bloqueio |
ansible-galaxy install joltcan.cve_2026_31431
ansible-playbook -i <seu-inventario> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml
Limpeza quando o kernel corrigido estiver em execução:
ansible-playbook -i <seu-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
Issues e pull requests são bem-vindos — especialmente:
algif_aead é carregável
(Arch, Gentoo, Alpine, etc.).algif_aead já carregado quando não há usuários
AF_ALG ativos.MIT — veja LICENSE.