
Copy Fail (CVE-2026-31431) é uma vulnerabilidade de escalonamento local de privilégio no kernel Linux QUE TOMOU CONTA DAS REDES SOCIAIS. Ela foi divulgada publicamente em 29 de abril de 2026 e está ligada ao subsistema criptográfico do kernel, especialmente à interface AF_ALG / algif_aead e ao template criptográfico authencesn. Em termos práticos: um usuário local sem privilégios pode abusar de uma falha lógica para fazer uma escrita controlada de poucos bytes no page cache de um arquivo legível e, a partir disso, alterar o comportamento de binários privilegiados para obter root.
O conceito central é que o kernel permite que programas em userspace usem algoritmos criptográficos via sockets AF_ALG. A falha apareceu em uma lógica de operação “in-place” em AEAD, isto é, quando a origem e o destino da operação criptográfica são tratados de forma inadequada como se pudessem compartilhar o mesmo espaço/mapeamento. O patch oficial basicamente remove essa complexidade e volta a operar “out-of-place”, porque não havia benefício real em operar in-place nesse caso.
O nome Copy Fail vem justamente dessa ideia: uma cópia que deveria cair em um destino seguro acaba afetando um local errado/controlável. A exploração pública descreve uma cadeia envolvendo AF_ALG, splice(), page cache e uma escrita controlada de 4 bytes em arquivo legível. Isso é perigoso porque muitos binários privilegiados do sistema, como su, sudo, pkexec, passwd, mount, chsh e chfn, normalmente são executáveis setuid-root e, em várias distribuições, também são legíveis por usuários comuns.
O impacto é alto porque não é uma exploração remota: o atacante precisa ter acesso local ao sistema, por exemplo uma conta shell, usuário em servidor compartilhado, container mal isolado ou ambiente multiusuário. Mas, uma vez dentro, a falha pode permitir virar root sem depender de race condition, offsets específicos por distribuição ou tentativas instáveis. Os pesquisadores afirmam ter testado em Ubuntu, Amazon Linux, RHEL e SUSE, incluindo SUSE 16.
Nós como membros da OWASP Capítulo São Paulo, temos a missão de ajudar a mitigar este problema…
A mitigação principal e correta é atualizar o kernel para uma versão que contenha o patch/revert de algif_aead. A mitigação com chmod é uma defesa emergencial: ela reduz a superfície de ataque removendo permissão de leitura de binários setuid sensíveis, mantendo a execução e o bit setuid. Então abaixo o comando de autoria do Raphael Bastos A.K.A. coffnix para executar o chmod removendo o direito de leitura dos comandos passwd chsh chfn mount sudo pkexec
for b in passwd chsh chfn mount sudo su pkexec;
do p=$(readlink -f "$(command -v "$b")");
[ -n "$p" ] && chmod 4711 "$p"; done
O brinquedo funciona assim: ele percorre a lista de binários sensíveis (passwd, chsh, chfn, mount, sudo, pkexec), encontra o caminho real de cada um com command -v e readlink -f, e aplica chmod 4711 no arquivo encontrado.
O modo 4711 significa:
4 = ativa o bit setuid7 = dono/root pode ler, escrever e executar1 = grupo só pode executar1 = outros usuários só podem executar
Ou seja, o binário continua funcionando como setuid-root, mas deixa de ser legível por usuários comuns. Como a exploração depende de atingir arquivos legíveis no page cache, remover a permissão de leitura desses binários dificulta ou bloqueia essa cadeia específica contra esses alvos.
Em sistemas de produção, eu usaria assim:
sudo sh -c 'for b in passwd chsh chfn mount sudo pkexec; do p=$(readlink -f "$(command -v "$b")"); [ -n "$p" ] && chmod 4711 "$p"; done'
Depois valide:
ls -l /usr/bin/passwd /usr/bin/chsh /usr/bin/chfn /usr/bin/mount /usr/bin/sudo /usr/bin/pkexec
Você deve ver algo parecido com:
-rws--x--x root root ...
Resumo: patch de kernel é a correção real; chmod 4711 nos binários setuid é uma mitigação rápida para reduzir o alvo explorável enquanto o kernel corrigido não é aplicado.