
CVE-2026-31431 Script de detecção de vulnerabilidade Copy Fail no kernel Linux
CVE-2026-31431 (Copy Fail) é uma vulnerabilidade de escalonamento local de privilégios no kernel Linux que, por meio de sockets AF_ALG (address family 38) combinados com a chamada de sistema de cópia zero splice(), contorna as permissões de escrita de arquivos para adulterar o page cache, permitindo a modificação de binários SUID sem permissão de escrita e, consequentemente, a obtenção de privilégios root.
socket(AF_ALG, SOCK_SEQPACKET, 0) # Cria socket AF_ALG
-> bind(authesn(hmac(sha256),cbc(aes))) # Vincula template de criptografia AEAD
-> sendmsg(operação AEAD) # Aciona o caminho de criptografia do kernel
-> splice(-> arquivo alvo) # Escrita de cópia zero, contornando verificação de permissões
-> Adultera arquivos SUID como /usr/bin/su # Escalona para root
| Ramo do Kernel | Faixa Afetada | Versão Corrigida |
|---|---|---|
| mainline / 6.19.x | < 6.19.12 | >= 6.19.12 |
| 6.18.x (stable) | < 6.18.22 | >= 6.18.22 |
| 6.12.x (LTS) | < 6.12.23 | >= 6.12.23 |
| 6.6.x (LTS) | < 6.6.87 | >= 6.6.87 |
| 6.1.x (LTS) | < 6.1.130 | >= 6.1.130 |
| 4.14 ~ < 7.0 | Todos afetados | Atualizar para versão segura |
| < 4.14 | Não afetado | - |
| >= 7.0 | Já inclui correção | - |
# Baixar o script
wget https://raw.githubusercontent.com/tangjie1/CVE-2026-31431-Check/main/cve-2026-31431-check.sh
# Conceder permissão de execução e executar (requer root)
chmod +x cve-2026-31431-check.sh
sudo ./cve-2026-31431-check.sh
# Modo não interativo (adequado para automação/CI)
sudo ./cve-2026-31431-check.sh --non-interactive
| Nº | Item de Verificação | Descrição |
|---|---|---|
| [1.0] | Tabela de faixas de versões afetadas | Exibe a comparação de versões afetadas/corrigidas por ramo |
| [1.1] | Versão do kernel | Compara com as faixas afetadas conhecidas e as bases corrigidas |
| [1.2] | Status do módulo algif_aead | Quatro estados: embutido / carregado / presente com carregamento sob demanda / ausente |
| [1.3] | Template de criptografia authencsn | Verifica disponibilidade em /proc/crypto |
| [1.4] | Medidas de mitigação | initcall_blacklist + lista negra modprobe.d |
| [1.5] | Julgamento abrangente | Conclusão safe/medium/high/critical com base em múltiplos fatores |
| Nº | Item de Verificação | Descrição |
|---|---|---|
| [2.1] | Detecção de page cache SUID | Comparação de hash entre dd direct I/O e cache |
| [2.2] | Histórico de carregamento de módulos | dmesg + tempo de carregamento do lsmod |
| [2.3] | Varredura do histórico do Shell | Correspondência de palavras-chave em .bash_history de todos os usuários |
| [2.4] | Detecção de arquivos do sistema | Usuários anômalos com UID=0 / tempo de modificação de passwd e SUID |
| [2.5] | Varredura de diretórios temporários | Arquivos suspeitos nas últimas 24h em /tmp /var/tmp /dev/shm |
| [2.6] | Auditoria de logs do sistema | Registros de falha do su + palavras-chave de vulnerabilidade do sudo |
| [2.7] | Detecção de escape de contêiner | Ambiente Docker + seccomp + /proc/1/root |
| Método | Princípio | Requer Reinicialização | Cenário de Uso |
|---|---|---|---|
| Método 1 | Lista negra modprobe.d + rmmod | Não | CONFIG=m (modo módulo) |
| Método 2 | Parâmetro de kernel initcall_blacklist | Sim | CONFIG=y (modo embutido) ou defesa em profundidade |
| Método 3 | Atualizar kernel para versão segura | Sim | Correção permanente (recomendado) |
Ubuntu / Debian / Kali / CentOS / RHEL / Rocky / AlmaLinux / Fedora / openSUSE / Arch Linux / Alpine Linux
Licença MIT
Esta ferramenta destina-se exclusivamente a pesquisas de segurança e testes de penetração autorizados. O usuário deve garantir a conformidade com as leis e regulamentos locais, utilizando-a somente em sistemas-alvo com autorização explícita. O desenvolvedor não se responsabiliza por quaisquer consequências do uso não autorizado.