
Ferramenta de diagnóstico passiva que verifica se um sistema Linux é vulnerável ao CVE-2026-31431 testando a acessibilidade do socket AF_ALG, fornecendo orientações de mitigação e códigos de saída compatíveis com CI.
Um script Python simples e seguro que determina se um sistema Linux é vulnerável à CVE-2026-31431 ("Copy Fail"), uma escalada de privilégio local que afeta todas as principais distribuições desde o kernel 4.14.
A CVE-2026-31431 é um bug lógico linear no módulo de socket criptográfico algif_aead do kernel Linux. Ao usar sockets AF_ALG em combinação com splice(), um atacante sem privilégios pode sobrescrever 4 bytes no cache de páginas de um binário setuid e obter acesso root.
| Propriedade | Detalhe |
|---|
| Condição de corrida necessária | ❌ Não – a exploração é determinística |
| Offsets de kernel necessários | ❌ Não – nenhum offset específico de versão é necessário |
| Complexidade da exploração | Um único script Python de 732 bytes é suficiente para root |
| Este verificador | Apenas diagnóstico passivo – não aciona a vulnerabilidade |
O script tenta criar e vincular um socket AF_ALG usando o modelo de algoritmo exato do qual a vulnerabilidade depende:
authencesn(hmac(sha256),cbc(aes))
| Resultado | Significado |
|---|---|
| Socket criado e vinculado | O caminho de código vulnerável está acessível – aplique o patch imediatamente |
EAFNOSUPPORT (errno 97) | Módulo não carregado – superfície de ataque indisponível |
Permission denied | Política MAC (SELinux/AppArmor) bloqueia o acesso – seguro |
O script não aciona a vulnerabilidade de forma alguma. Ele é completamente passivo e seguro de executar.
Clone o repositório ou baixe check_copyfail.py e execute:
python3 check_copyfail.py
____ _____ _ _
/ ___|___ _ __ _ _| ___|_ _(_) |
| | / _ \| '_ \| | | | |_ / _` | | |
| |__| (_) | |_) | |_| | _| (_| | | |
\____\___/| .__/ \__, |_| \__,_|_|_|
|_| |___/
CVE-2026-31431 "Copy Fail" – Verificador de Alcance
Phalanx CCS / d_0_4 | Apenas para uso defensivo
-------------------------------------------------------
Versão do kernel: 6.1.0-28-amd64
Faixa de versão : Faixa potencialmente afetada
Alvo AF_ALG : authencesn(hmac(sha256),cbc(aes))
[!!!] SUPERFÍCIE DE ATAQUE VULNERÁVEL ACESSÍVEL
Socket criado e vinculado – AF_ALG acessível
Mitigação imediata:
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Em seguida, atualize seu kernel assim que os patches estiverem disponíveis.
Correção upstream: commit a664bf3d603d
O script sai com o código 1 se a superfície de ataque estiver acessível e 0 se o sistema estiver seguro — tornando-o adequado para uso em scripts de shell, playbooks Ansible e pipelines de CI.
Até que uma atualização do kernel esteja disponível, desative o módulo vulnerável:
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
A correção oficial é o commit a664bf3d603d no kernel principal. Atualize pelo gerenciador de pacotes da sua distribuição assim que os patches estiverem disponíveis.
Este verificador sempre reportará seguro em dispositivos Android modernos (incluindo Termux). O socket AF_ALG está indisponível para aplicativos sem privilégios devido às políticas obrigatórias do SELinux, portanto a vulnerabilidade não é explorável em builds Android padrão.
Este projeto está licenciado sob a Licença MIT – consulte LICENSE para detalhes. Sinta-se à vontade para usar, modificar e distribuir.
Aviso: Esta ferramenta é apenas para fins de diagnóstico defensivo.
Não a use em sistemas que você não possui ou sem permissão escrita explícita.