
Copy Fail (CVE-2026-31431) é uma falha lógica no módulo algif_aead do kernel Linux — parte da API de criptografia de espaço de usuário AF_ALG. Foi divulgada em 29 de abril de 2026 por Theori / Xint Code.
Um script de deteção somente leitura para a vulnerabilidade de escalonamento de privilégios locais Copy Fail no kernel Linux.
Sem código de exploit. Sem socket AF_ALG aberto. Sem ficheiros escritos fora de/etc/modprobe.d(apenas quando aplica a mitigação manualmente).
Copy Fail (CVE-2026-31431) é uma falha lógica no módulo algif_aead do kernel Linux — parte da API criptográfica de userspace AF_ALG. Foi divulgada em 29 de abril de 2026 por Theori / Xint Code.
Um script Python de 732 bytes pode conceder a um utilizador local sem privilégios acesso total de root em praticamente todas as principais distribuições Linux criadas desde 2017 — sem condições de corrida, offsets de kernel ou payloads compilados.
| Propriedade | Detalhe |
|---|---|
| CVE | CVE-2026-31431 |
| CVSS | 7.8 ALTO |
| Tipo | Escalonamento de Privilégios Local (LPE) |
| Kernels afetados | 4.14 – 6.18.21, 6.19.0 – 6.19.11 |
| Causa raiz | Otimização in-place do algif_aead (commit 72548b093ee3, 2017) |
| Correção upstream | Reversão via commit a664bf3d603d |
| Fiabilidade do exploit | Determinística — não requer condição de corrida |
modprobe.d, parâmetro de cmdline do kernel initcall_blacklistkmod conforme USN-8226-1Nota sobre Ubuntu / Debian: O Ubuntu não incrementa a versão do kernel upstream ao fazer backport de patches de segurança. O script verifica portanto a versão do pacote
kmod(>= 31+20240202-2ubuntu7.2conforme USN-8226-1) em vez de depender apenas da string de versão do kernel.
| Distribuição | Método de verificação |
|---|---|
| Ubuntu / Linux Mint | Versão do pacote kmod (USN-8226-1) |
| Debian | Versão do pacote kmod + rastreador de segurança |
| Parrot OS | Versão do pacote kmod (Debian rolling) |
| RHEL / CentOS / AlmaLinux / Rocky | dnf updateinfo + cmdline initcall_blacklist |
| Fedora | dnf updateinfo |
| Amazon Linux | dnf check-update --security |
| SUSE / openSUSE | zypper lp |
| Arch Linux | pacman -Syu linux |
# Download
curl -O https://raw.githubusercontent.com/kw-soft/copyfail/main/copyfail.sh
# Tornar executável
chmod +x copyfail.sh
# Executar (root recomendado para visibilidade total do módulo)
sudo ./copyfail.sh
============================================
CVE-2026-31431 'Copy Fail' — Deteção Segura
============================================
[*] Kernel: 6.8.0-71-generic
[!] O kernel 6.8.0-71-generic está no intervalo vulnerável upstream (4.14 – 6.19.11)
[~] Segue-se a verificação de backport da distribuição — o número de versão por si só não é conclusivo
[*] Estado do módulo algif_aead:
[!] algif_aead está CARREGADO — a superfície de ataque está ativa
[*] Estado do patch da distribuição:
Distribuição : Ubuntu 24.04
kmod instalado : 31+20240202-2ubuntu6
kmod necessário : >= 31+20240202-2ubuntu7.2
[!] kmod 31+20240202-2ubuntu6 < 31+20240202-2ubuntu7.2 — mitigação NÃO aplicada
============================================
RESULTADO
============================================
[!] VULNERÁVEL — kernel afetado e algif_aead está ativo
============================================
CVE-2026-31431 'Copy Fail' — Deteção Segura
============================================
[*] Kernel: 6.8.0-71-generic
[!] O kernel 6.8.0-71-generic está no intervalo vulnerável upstream (4.14 – 6.19.11)
[~] Segue-se a verificação de backport da distribuição — o número de versão por si só não é conclusivo
[*] Estado do módulo algif_aead:
[✓] algif_aead NÃO está carregado
[✓] Blacklist modprobe ativa: /etc/modprobe.d/disable-algif_aead.conf
[*] Estado do patch da distribuição:
Distribuição : Ubuntu 24.04
kmod instalado : 31+20240202-2ubuntu7.2
kmod necessário : >= 31+20240202-2ubuntu7.2
[✓] kmod >= 31+20240202-2ubuntu7.2 — mitigação USN-8226-1 presente
============================================
RESULTADO
============================================
[✓] MITIGADO — algif_aead está bloqueado
[~] Aplique um kernel corrigido quando disponível para resolver totalmente o problema
sudo apt update && sudo apt upgrade && sudo reboot
Isto instala o pacote kmod corrigido (USN-8226-1) que adiciona uma regra modprobe.d bloqueando algif_aead.
Se um reinício imediato não for possível:
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf
sudo update-initramfs -u
sudo rmmod algif_aead 2>/dev/null || echo "Módulo em uso — reinício necessário"
⚠️ Em kernels da família RHEL,
algif_aeadestá embutido no kernel (CONFIG_CRYPTO_USER_API_AEAD=y).
As regrasmodprobe.dnão têm efeito. Use o parâmetro grub em vez disso:
sudo grubby --update-kernel=ALL --args='initcall_blacklist=algif_aead_init'
sudo reboot
sudo pacman -Syu linux && sudo reboot
A mitigação não afeta nenhum dos seguintes:
dm-crypt / encriptação de disco completo LUKSApenas aplicações explicitamente configuradas para usar o motor afalg ou que ligam sockets AEAD AF_ALG diretamente podem ser afetadas — isto é raro em implementações padrão.
A Hetzner não aplica atualizações de SO automaticamente. O Ubuntu inclui unattended-upgrades pré-instalado, mas este deve ser ativado e configurado.
# Verificar se as atualizações de segurança automáticas estão ativas
cat /etc/apt/apt.conf.d/20auto-upgrades
# Ver histórico de atualizações
grep "^Start-Date\|^Commandline" /var/log/apt/history.log | tail -30
# Verificar se a mitigação kmod foi aplicada automaticamente
grep "kmod\|algif" /var/log/apt/history.log
# Verificar a última execução de unattended-upgrades
tail -30 /var/log/unattended-upgrades/unattended-upgrades.log
Nota: Mesmo com
unattended-upgradesativado, os reinícios automáticos estão desativados por padrão.
Um novo kernel só se torna ativo após umrebootmanual.
Este script destina-se a ser utilizado em sistemas que possui ou que está autorizado a testar.
Realiza verificações somente leitura e não explora a vulnerabilidade de forma alguma.