
Scripts de mitigação permanente para o CVE-2026-31431 (Copy Fail) no Ubuntu 24.04, colocando na lista negra o módulo do kernel vulnerável algif_aead e atualizando o initramfs para persistir entre reinicializações.
Este repositório contém scripts projetados para neutralizar a vulnerabilidade crítica CVE-2026-31431, apelidada de "Copy Fail", em sistemas Ubuntu.
[!IMPORTANT] Compatibilidade: Estes scripts são adaptados e testados no Ubuntu Server 24.04 LTS. Embora a lógica seja semelhante para outras distribuições, eles não foram testados no Debian ou em outras variantes do Linux.
Antes de aplicar o patch, baixe o script oficial de detecção (desenvolvido por rootsecdev) para validar o estado atual do seu sistema:
# Baixar o script de detecção
wget https://raw.githubusercontent.com/rootsecdev/cve_2026_31431/main/test_cve_2026_31431.py
# Garanta que você tenha o python3 instalado
python3 --version
A vulnerabilidade CVE-2026-31431 ($CVSS\ 7.8$) afeta o subsistema criptográfico do kernel Linux (módulo algif_aead).
Um usuário local pode corromper o Page Cache do sistema explorando uma falha na otimização "in-place" da função splice(). Isso permite que um atacante force o kernel a escrever dados arbitrários (números de sequência) em páginas de memória de arquivos que deveriam ser somente leitura (como binários SUID ou arquivos sensíveis do sistema).
modprobe -r não é suficienteO kernel Linux usa um mecanismo chamado auto-carregamento. Se um processo ou script (como o detector) solicitar um socket do tipo AF_ALG, o kernel recarrega automaticamente o módulo, mesmo que ele tenha sido removido manualmente. O método usado neste patch ("Hard Block") impede fisicamente que o binário do módulo seja carregado pelo kernel.
Execute o testador para confirmar se o seu kernel atual está exposto:
python3 test_cve_2026_31431.py
Se o script exibir [!] VULNERABLE, prossiga para o próximo passo.
O script patch-CVE-2026-31431.sh neutraliza o vetor de ataque permanentemente. Ele cria um arquivo de configuração em /etc/modprobe.d/ e atualiza o initramfs para garantir que o bloqueio persista após uma reinicialização.
chmod +x patch-CVE-2026-31431.sh
sudo ./patch-CVE-2026-31431.sh
Execute o script de detecção novamente. Agora você deve ver uma mensagem indicando que os pré-requisitos não são atendidos:
[+] Precondition not met ('authencesn(...) cannot be instantiated).
Isso confirma que o módulo foi neutralizado com sucesso.
Quando o Ubuntu lançar uma correção oficial por meio de uma atualização do kernel (verifique as notas do apt upgrade para o CVE-2026-31431), você deve restaurar as capacidades criptográficas nativas:
chmod +x unpatch-CVE-2026-31431.sh
sudo ./unpatch-CVE-2026-31431.sh
A proteção depende da seguinte diretiva dentro de /etc/modprobe.d/cve-2026-31431-mitigation.conf:
blacklist algif_aead
install algif_aead /bin/true
O comando install redireciona a tentativa do kernel de carregar o módulo para /bin/true, que retorna um código de saída de "sucesso" sem executar nenhum código vulnerável.