
Prova de conceito de exploit para CVE-2026-31431 (Copy Fail), uma LPE do kernel Linux via corrupção de page-cache em algif_aead, com orientações de detecção, laboratório e mitigação.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead⚠️ USO AUTORIZADO APENAS — Este repositório é estritamente para testadores de penetração, pesquisadores de segurança e defensores operando sob autorização legal. O uso indevido é crime.
| # | Seção | Descrição |
|---|---|---|
| 1 | O que é Copy Fail? | Resumo da vulnerabilidade |
| 2 | Análise Técnica Detalhada | Análise de causa raiz |
| 3 | Sistemas Afetados | Matriz de distribuições e kernels |
| 4 | Estrutura do Repositório | Layout de arquivos |
| 5 | Configuração de Laboratório | Reprodução segura |
| 6 | Uso do Exploit | Fluxo de pentest |
| 7 | Detecção | YARA, Sigma, scripts |
| 8 | Mitigação | Patch e hardening |
| 9 | Relatórios de Pentest | Modelos de relatório |
| 10 | Legal e Ética | Aviso legal |
| 11 | Referências | CVEs, avisos, blogs |
Copy Fail é uma vulnerabilidade de escalação local de privilégios (LPE) divulgada em 29 de abril de 2026, afetando praticamente todas as principais distribuições Linux que executam kernels desde 2017.
Usuário Não Privilegiado ──► AF_ALG + splice() ──► Escrita de 4 bytes no Cache de Página ──► ROOT
| Propriedade | Detalhe |
|---|---|
| ID CVE | CVE-2026-31431 |
| Apelido | Copy Fail |
| CVSS v3.1 | 7.8 (ALTO) |
| Vetor de Ataque | Local |
| Privilégios Necessários | Baixo (qualquer usuário não privilegiado) |
| Interação do Usuário | Nenhum |
| Descobridor | Xint Code (Theori) |
| Divulgado | 29 de abril de 2026 |
| Tamanho do Exploit | 732 bytes (PoC em Python) |
| Status do Patch | ✅ Disponível — reverta o commit a664bf3d603d |
A vulnerabilidade decorre de uma otimização in-place defeituosa introduzida em 2017 (commit 72548b093ee3) dentro do módulo algif_aead da API de criptografia do espaço do usuário do kernel Linux (AF_ALG).
AF_ALG (API de criptografia do espaço do usuário)
└── módulo algif_aead
└── template authencesn ◄── VULNERÁVEL
└── otimização in-place (2017)
└── req->src == req->dst ◄── páginas de splice() encadeadas no scatterlist dst gravável
Passo 1: Abrir socket AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
Passo 2: Enviar páginas splice() referenciando o arquivo alvo
(páginas do cache de página de um binário privilegiado, ex. /usr/bin/sudo)
Passo 3: Acionar escrita temporária de authencesn
authencesn usa o buffer dst como área de rascunho →
escreve 4 bytes controlados ALÉM da região legítima de saída
Passo 4: A entrada do cache de página para o arquivo alvo agora está corrompida
(arquivo no disco intacto — apenas a cópia em memória foi modificada)
Passo 5: Executar o binário modificado → ROOT
O cache de página do kernel Linux armazena cópias em memória de arquivos. Quando um arquivo é lido, suas páginas são armazenadas em cache. A chamada de sistema splice() pode referenciar diretamente essas páginas em cache. Ao alimentar páginas do cache de página no scatterlist do AEAD do AF_ALG, a escrita temporária do authencesn cai dentro dessas páginas em cache, efetivamente corrigindo a cópia em memória de qualquer arquivo legível — incluindo binários privilegiados como sudo, pkexec ou passwd.
A correção upstream reverte a otimização defeituosa de 2017:
# Corrigido no commit: a664bf3d603d
git show a664bf3d603d
| Ramo do Kernel | Afetado? | Versão Corrigida |
|---|---|---|
| 4.9.x (LTS) | ✅ Sim | 4.9.340+ |
| 5.4.x (LTS) | ✅ Sim | 5.4.295+ |
| 5.10.x (LTS) | ✅ Sim | 5.10.239+ |
| 5.15.x (LTS) | ✅ Sim | 5.15.185+ |
| 6.1.x (LTS) | ✅ Sim | 6.1.132+ |
| 6.6.x (LTS) | ✅ Sim | 6.6.83+ |
| 6.12.x (LTS) | ✅ Sim | 6.12.19+ |
| < 4.9 (pré-2017) | ❌ Não | N/A — otimização não presente |
| Distribuição | Versões Afetadas | Corrigido? | Aviso |
|---|---|---|---|
| Ubuntu | < 26.04 (todas as versões) | ✅ Corrigido | USN |
| Ubuntu 26.04 (Resolute) | ❌ Não afetado | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ Corrigido | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ Corrigido | ALAS |
| SUSE / openSUSE | Todas afetadas | ✅ Corrigido | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ Corrigido | DSA |
| CloudLinux | 8, 9 | ✅ Corrigido | Aviso |