
Prova de conceito de exploit para CVE-2026-31431, uma vulnerabilidade de corrupção do page-cache do kernel Linux que permite escalonamento local de privilégios via algif_aead. Inclui exploit.py e orientações de mitigação.
Uma prova de conceito profissional para a vulnerabilidade CVE-2026-31431, uma falha crítica no tratamento do page-cache de algif_aead / authencesn no kernel Linux.
A vulnerabilidade CVE-2026-31431, conhecida coloquialmente como "Copy Fail", envolve um bug de escrita temporária (scratch-write) no page-cache divulgado em 29 de abril de 2026. Ela permite que um usuário local sem privilégios corrompa a visão do page-cache de arquivos críticos do sistema, como /etc/passwd ou /usr/bin/su, sem modificar o arquivo no disco, possibilitando a Escalação de Privilégios Local (LPE). [1]
O componente algif_aead realiza operações AEAD (Autenticação de Dados Associados com Criptografia) in-place. Quando os dados de origem são fornecidos via splice() a partir de um arquivo regular, o scatterlist de destino referencia as páginas do page-cache do arquivo. O algoritmo authencesn(hmac(sha256), cbc(aes)) realiza uma escrita temporária de 4 bytes do campo seqno_lo do AAD no destino, corrompendo diretamente a cópia no page-cache. [1]
| Distribuição | Status |
|---|---|
| Ubuntu 24.04 LTS | Confirmada como Vulnerável |
Nota: Qualquer kernel que contenha o commit
72548b093ee3(datado de 2017) sem a reversão upstream é potencialmente afetado.
| Arquivo | Descrição |
|---|---|
exploit.py | Uma implementação compacta da primitiva de LPE direcionada a binários do sistema. |
Para obter um shell root usando o script de exploit fornecido:
python3 exploit.py
O script automatiza a corrupção do page-cache de /usr/bin/su ou /etc/passwd para elevar privilégios. Recomenda-se que os usuários revisem minuciosamente o código antes da execução, pois ele interage com componentes sensíveis do sistema.
A primitiva central aproveita a seguinte sequência:
sendmsg com AAD de 8 bytes e controles AEAD específicos.splice() no descritor de arquivo de destino para o socket da operação.recv(), que executa a escrita temporária antes de retornar um erro.Até que um kernel corrigido seja implantado, o módulo algif_aead deve ser desabilitado:
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
sudo rmmod algif_aead 2>/dev/null
AVISO: Esta ferramenta é apenas para fins educacionais e de avaliação de segurança autorizada. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita para testar é ilegal e antiético. Os autores não assumem responsabilidade por uso indevido.
[1] Blog Xint: Copy Fail - Divulgação para Distribuições Linux
© 2026 BEN
| Amazon Linux 2023 | Confirmada como Vulnerável |
| RHEL 14.3 | Confirmada como Vulnerável |
| SUSE 16 | Confirmada como Vulnerável |