
Detecta e mitiga o CVE-2026-31431 (Copy Fail) no Linux ao sondar a vulnerabilidade AF_ALG e, opcionalmente, colocar em lista negra o módulo afetado.
Detecta e (opcionalmente) mitiga a CVE-2026-31431 ("Copy Fail") num host Linux.
A vulnerabilidade é uma primitiva de escrita no page-cache acessível através da família de sockets AF_ALG usando a transformação AEAD authencesn(hmac(sha256),cbc(aes)). Este script reproduz a mesma primitiva demonstrada pela Theori, mas direcionada a um ficheiro temporário criado pelo próprio script em vez de um binário setuid, pelo que o teste em si é não destrutivo.
Se o kernel for vulnerável, o script oferece a aplicação de uma mitigação: colocar algif_aead na blacklist via /etc/modprobe.d/disable-algif-aead.conf e descarregar o módulo. Uma atualização do kernel ainda é necessária para uma correção completa.
os.splice)uv para executar o script com uma versão de Python fixadasudo / root — necessário para aplicar a mitigação (escrever em /etc/modprobe.d e rmmod); a deteção por si só funciona sem privilégios, mas o script pergunta interativamente se deseja aplicar o patchsudo $(which uv) run --python 3.10 /path/to/copy_fail_test.py
$(which uv) é usado para que o sudo mantenha o binário uv correto no PATH.
O script irá:
AF_ALG + authencesn(hmac(sha256),cbc(aes)) está acessível.✅ NOT VULNERABLE — saída 0🚨 VULNERABLE — solicita a aplicação da mitigação e depois re-testa⚠️ INCONCLUSIVE — saída 2 (ex.: a chamada splice/sendmsg retornou erro)Se aceitar o prompt, o script:
install algif_aead /bin/false em /etc/modprobe.d/disable-algif-aead.conf.rmmod algif_aead.Se o módulo estiver compilado no kernel (não carregável), é necessário um reinício para que a blacklist tenha efeito. Em qualquer caso, aplique o patch ao kernel quando houver uma atualização disponível — a blacklist apenas remove um ponto de entrada.
Equivalente manual:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
O passo de deteção escreve num tempfile.NamedTemporaryFile que cria e depois elimina; nenhum ficheiro do sistema é tocado. O passo de mitigação é a única parte que modifica o host, e apenas se confirmar no prompt.