
Script de mitigação sem reinicialização para o bug do kernel Copy Fail (CVE-2026-31431). Desativa o módulo vulnerável algif_aead e remove o cache de páginas para binários setuid.
Utilitário mínimo de mitigação sem reinicialização para Copy Fail / CVE-2026-31431.
Este script desativa o caminho vulnerável do módulo algif_aead e tenta
descarregar o módulo imediatamente. Ele também realiza uma tentativa de melhor esforço
para remover da cache de páginas o /usr/bin/su.
Isto é uma mitigação, não uma correção do kernel. Instale o kernel corrigido do seu fornecedor assim que estiver disponível.
O script executa a mitigação recomendada pelo aviso público do Copy Fail:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Isso impede que algif_aead seja carregado novamente via modprobe e o descarrega
do kernel em execução, se possível.
Em seguida, executa um pequeno trecho em Python que chama posix_fadvise() com
para a primeira página do :
POSIX_FADV_DONTNEED/usr/bin/suos.posix_fadvise(fd, 0, page, os.POSIX_FADV_DONTNEED)
Esta é uma tentativa de melhor esforço para remover a página relevante da cache de páginas. Não substitui a aplicação de correções e não garante a limpeza de todos os possíveis binários setuid visados.
/usr/bin/su?A prova de conceito pública do Copy Fail tem como alvo /usr/bin/su por padrão. Este
script, portanto, tenta remover a primeira página do /usr/bin/su da cache de páginas
após desativar o caminho vulnerável do módulo.
Se o seu ambiente tiver exploração testada ou suspeita contra outro binário setuid, revise e adapte o script de acordo.
Revise o script primeiro.
sudo ./mitigate-copy-fail.sh
Verifique se o módulo não está carregado:
lsmod | grep '^algif_aead' || echo "algif_aead is not loaded"
Verifique se a regra do modprobe existe:
cat /etc/modprobe.d/disable-algif.conf
Saída esperada:
install algif_aead /bin/false
Tente carregar o módulo manualmente:
sudo modprobe algif_aead
Ele deve falhar ou recusar o carregamento.
Reverta somente após instalar um kernel corrigido ou após aceitar o risco.
sudo rm -f /etc/modprobe.d/disable-algif.conf
sudo modprobe algif_aead
Este script não:
Para cargas de trabalho não confiáveis, como contêineres, sandboxes, runners de CI e hosts
multiusuário, considere endurecimento adicional, como bloquear a criação de sockets AF_ALG
com seccomp.