
Detector não destrutivo para CVE-2026-31431 (Copy Fail) de escalonamento local de privilégios no Dom0 do XCP-ng 8.3, validando a vulnerabilidade do kernel por meio de teste de corrupção do page-cache.
Um script detector seguro e não destrutivo para CVE-2026-31431 ("Copy Fail"), validado contra XCP-ng 8.3 LTS anterior à atualização de segurança de 5 de maio de 2026.
⚠️ Somente uso autorizado. Execute este script exclusivamente em sistemas que você possui ou para os quais possui autorização explícita de teste.
CVE-2026-31431, apelidada de "Copy Fail", é uma vulnerabilidade de escalonamento local de privilégios (LPE) na interface criptográfica algif_aead do kernel Linux. Uma falha lógica no template authencesn — introduzida em 2017 — permite que um usuário local sem privilégios realize uma gravação controlada de 4 bytes no cache de páginas do kernel de qualquer arquivo legível, possibilitando o escalonamento de privilégios para root.
a664bf3d603d por Herbert XuO domínio de controle Dom0 do XCP-ng executa em um kernel Linux e é a camada de gerenciamento do hipervisor. Qualquer usuário sem privilégios com acesso a shell no Dom0 — incluindo contas de serviço criadas para pipelines de CI/CD, agentes de monitoramento, ferramentas de backup ou automação — pode explorar esta vulnerabilidade para obter root. A partir do root no Dom0, todas as VMs convidadas nesse host ficam comprometidas.
Uma instalação padrão do XCP-ng tem exposição mínima, pois pouquíssimos processos são executados como usuários não-root. O risco real se acumula ao longo do tempo à medida que operadores adicionam contas de serviço para fins legítimos sem restringir o acesso ao shell.
Audite as contas de serviço do seu Dom0:
awk -F: '$7 ~ /bash|sh/' /etc/passwd
Este é um detector de laboratório, não uma ferramenta de escalonamento de privilégios. Ele:
algif_aead / authencesn contra esse arquivoBinários do sistema, /etc/passwd e outros arquivos do sistema nunca são tocados. A corrupção do cache de páginas é apenas em memória — nada é gravado de volta no disco.
os.splice)python3 xcp_ng_cve_2026_31431_tester.py
| Código | Significado |
|---|---|
0 | Nenhuma corrupção observada — o sistema provavelmente está corrigido ou algif_aead está desabilitado |
1 | Erro de acionamento — algif_aead pode estar indisponível ou bloqueado |
2 | Vulnerável — corrupção do cache de páginas confirmada |
Nota: O código de saída
1em um sistema corrigido é comportamento esperado, não um erro do script. Seauthencesnfoi desabilitado no nível do kernel (como na correção do XCP-ng de 5 de maio), o bind do socket falhará e o script sairá com o código1.
| Data | Evento |
|---|---|
| 29 de abril de 2026 | CVE-2026-31431 divulgada publicamente |
| 4 de maio de 2026 | VATES publica VSA-2026-013 |
| 5 de maio de 2026 | Atualização de segurança de maio do XCP-ng 8.3 LTS lançada — correção do kernel disponível |
Atualize seus hosts XCP-ng e reinicie:
yum update
reboot
Após a reinicialização, verifique se o kernel atualizado está em execução:
uname -r
Execute novamente este script detector após a correção. Um sistema corrigido retornará o código de saída 1 (erro de acionamento), pois o template vulnerável authencesn não está mais disponível.
Nota: A correção do XCP-ng desabilita o suporte a IPSec ESN como consequência da remoção do componente vulnerável
authencesn. Para a maioria dos ambientes, isso não tem impacto prático. A VATES indicou que uma correção futura pode restaurar essa funcionalidade com uma solução adequada.
Antes de aplicar mitigações, confirme se algif_aead está compilado como módulo (=m) ou embutido no kernel (=y):
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
=m — Baseado em módulo; a lista negra do modprobe funcionará=y — Embutido no kernel; a lista negra do modprobe falhará silenciosamente e não fornecerá proteçãoPara kernels da família RHEL com =y, use o parâmetro de boot do grubby:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Este script é um derivado modificado do trabalho original de rootsecdev. Verifique a licença do repositório upstream antes de redistribuir e garanta que seu uso esteja em conformidade com seus termos.
Este script foi validado no XCP-ng 8.3 LTS executando um kernel sem correção em 5 de maio de 2026. Aplique imediatamente a atualização de segurança oficial da VATES se ainda não o fez.