
Exploit para CVE-2026-31431, uma vulnerabilidade authencesn do kernel Linux que permite escalonamento local de privilégios para root por meio de manipulação do cache de páginas.
"Copy Fail" é uma vulnerabilidade lógica crítica no template criptográfico authencesn do kernel Linux. Ela permite que um usuário local sem privilégios acione uma gravação determinística e controlada de 4 bytes no cache de páginas de qualquer arquivo legível do sistema. Ao mirar binários setuid (como /usr/bin/su), um atacante pode editar o cache de execução em memória para escalar privilégios para Root (UID 0).
Diferente de vulnerabilidades mais antigas como "Dirty Cow" ou "Dirty Pipe", o Copy Fail é uma falha lógica linear que é acionada sem condições de corrida, tentativas repetidas ou janelas de tempo propensas a travamentos. É altamente portátil e furtiva, pois modifica apenas o cache de páginas em memória, deixando o arquivo em disco completamente inalterado, contornando as ferramentas padrão de monitoramento de integridade de arquivos.
A vulnerabilidade existe na interseção de três componentes distintos do kernel:
splice(): A syscall splice() transfere dados entre descritores de arquivo e pipes sem copiar, passando páginas do cache de páginas por referência. Quando um usuário faz splice de um arquivo (como /usr/bin/su) em um socket AF_ALG, o scatterlist de entrada do socket mantém referências diretas às páginas em cache do kernel desse arquivo.authencesn: O algoritmo authencesn (usado para Números de Sequência Estendidos do IPsec) requer a reorganização de bytes. Para isso, ele grava temporariamente 4 bytes de números de sequência no buffer de saída como "espaço temporário". No entanto, ele grava além do limite legítimo de saída.Devido à otimização in-place de 2017, o scatterlist de saída contém as páginas do cache de páginas somente leitura passadas por splice(). Quando o authencesn grava além do limite de saída, ele sobrescreve diretamente 4 bytes dentro da memória em cache do kernel do arquivo alvo.
Um atacante pode explorar isso seguindo estes passos:
AF_ALG sem privilégios e fazer bind em authencesn(hmac(sha256),cbc(aes)).sendmsg() elaborado com um payload de Dados Autenticados Associados (AAD) contendo os 4 bytes que deseja gravar.splice() para canalizar o arquivo alvo (/usr/bin/su) para o socket. O offset e o comprimento definem exatamente onde no cache de páginas os 4 bytes serão gravados.recv() aciona a operação de decriptação, executando a gravação temporária fora dos limites diretamente no cache de páginas do arquivo alvo.execve("/usr/bin/su")). O kernel executa a versão adulterada do cache de páginas contendo o shellcode malicioso injetado, concedendo acesso root.Se não for possível aplicar o patch ou reiniciar o kernel imediatamente, você pode mitigar esta vulnerabilidade bloqueando todos os módulos af_alg relacionados e descarregando-os da memória.
Para bloquear esses módulos, execute os seguintes comandos:
# 1. Descarregar os módulos da memória se estiverem carregados atualmente
sudo modprobe -r algif_hash algif_skcipher algif_aead algif_rng af_alg
# 2. Adicionar os módulos à lista de bloqueio
echo -e "blacklist af_alg\nblacklist algif_hash\nblacklist algif_skcipher\nblacklist algif_aead\nblacklist algif_rng" | sudo tee /etc/modprobe.d/stop-exploit.conf
# 3. Impedir que o módulo af_alg seja carregado completamente
echo "install af_alg /bin/true" | sudo tee -a /etc/modprobe.d/stop-exploit.conf
# 4. Reiniciar o sistema para garantir que as alterações tenham efeito total
sudo reboot
A equipe de segurança do kernel Linux corrigiu esta vulnerabilidade (Commit: a664bf3d603d). O patch reverte as operações AEAD do AF_ALG para um modelo fora do lugar (out-of-place), separando os scatterlists de origem e destino. Isso impede que as páginas do cache de páginas sejam expostas ao scatterlist de destino gravável.
Ação Necessária: Atualize o kernel da sua distribuição para a versão mais recente fornecida pelo seu fornecedor (Ubuntu, Amazon Linux, RHEL, SUSE, etc.) e reinicie o sistema.