
Ferramentas de deteção e mitigação para CVE-2026-31431 (Copy Fail) em kernels Linux. Inclui scripts Phalanx-CCS e Silent4Labs, além de um playbook Ansible para aplicar mitigação temporária (bloquear o módulo algif_aead ou parâmetro de inicialização) em servidores.
Este pacote fornece uma solução automatizada para detectar e mitigar a vulnerabilidade CVE-2026-31431 (também conhecida como Copy Fail) em sistemas Linux com kernels afetados (versões 4.14 a 6.12.84, 6.13 a 6.18.21, etc.).
As ferramentas consistem em:
mitigate_copyfail.sh) que:
CONFIG_CRYPTO_USER_API_AEAD=m|y).=m): cria /etc/modprobe.d/disable-algif-aead.conf com install algif_aead /bin/false e descarrega o módulo (rmmod).=y): adiciona o parâmetro de inicialização do kernel initcall_blacklist=algif_aead_init (requer reinicialização).mitigation.yml) que:
Nota importante: A mitigação é temporária. A correção permanente é atualizar o kernel para uma versão que inclua o patch
a664bf3d603d(≥6.18.22, ≥6.19.12 ou ≥7.0).
become: yes)sudo (para aplicar a mitigação)Os scripts de detecção (Phalanx-CCS e Silent4Labs) são seguros e não exploram a vulnerabilidade; eles apenas verificam a superfície de ataque.
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # Script unificado (detecção + mitigação)
│ ├── check_copyfail.py # Phalanx-CCS (verificador de acessibilidade)
│ └── check-copyfail.sh # Silent4Labs (avaliação de risco)
├── ansible/
│ ├── ansible.cfg # (opcional) Configuração do Ansible
│ ├── inventory.ini # Inventário de servidores
│ └── mitigation.yml # Playbook principal
└── resultados_cve/ # Pasta gerada automaticamente para logs
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
inventory.ini)Exemplo para um servidor remoto:
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=my_password # se usar senha para sudo
Em mitigation.yml, a tarefa Copy scripts to remote usa src: "../scripts/{{ item }}". Certifique-se de que o caminho relativo está correto ou modifique-o conforme sua estrutura.
A partir do diretório ansible/:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k solicita a senha SSH.-K solicita a senha become (sudo).Ao usar localhost com ansible_connection=local, não é necessário SSH.
O playbook exibe um resumo em texto simples semelhante a:
==========================================
RESULTADOS DA MITIGAÇÃO
==========================================
Host: server1
------------------------------------------
- Status: SISTEMA SEGURO
- Código: (não aplicável)
------------------------------------------
- Pontuação final: 40 / 100
- Nível de risco: MÉDIO
==========================================
Além disso, um arquivo de log é salvo em resultados_cve/<hostname>_mitigation.log contendo a saída completa do script (data, versão do kernel, mensagens de detecção, etc.).
Se os valores extraídos mostrarem ? ou Não detectado, habilite as tarefas de depuração em mitigation.yml:
when: false para when: true nas três tarefas DEBUG (ou defina when: true para visualizar clean_stdout e saídas de regex).Edite as tarefas Create local results directory e Save full output to local file:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
Comente as tarefas de cópia e ajuste o caminho na tarefa Run mitigation script para apontar para o local existente.
Altere when: false para when: true na última tarefa (Clean up remote scripts).
initcall_blacklist) requer uma reinicialização para ter efeito. O playbook não reinicia automaticamente; uma janela de manutenção deve ser planejada.CONFIG_CRYPTO_USER_API_AEAD=y (kernel embutido), o módulo não pode ser descarregado com rmmod; a única forma é o parâmetro de inicialização./proc/crypto e /boot/config-*; eles são executados com become: yes.Este projeto é distribuído sob a licença MIT. Scripts de terceiros (Phalanx-CCS, Silent4Labs) mantêm suas respectivas licenças.
Se você achar esta ferramenta útil, por favor, considere dar uma estrela no GitHub!