
# Copy Fail (CVE-2026-31431) Exploit de LPE. Uma reimplementação limpa e multi-arquitetura em Python que visa a vulnerabilidade de cache de páginas AF_ALG do kernel Linux.
Escalação local de privilégios em kernels Linux da versão 4.11 até (mas não incluindo) as versões corrigidas 6.18.
A falha reside na interface de socket AF_ALG do kernel — especificamente em como authencesn lida com listas scatter-gather durante a descriptografia AEAD in-place. O resultado: um usuário sem privilégios pode sobrescrever 4 bytes por vez no page cache de qualquer arquivo legível.
Sobrescreva um binário setuid como /usr/bin/su com shellcode, execute-o, e você é root. Sem corrida, sem símbolos do kernel, sem recompilação. O mesmo payload AArch64 de 172 bytes (ou 160 para x86-64, 126 para i386, 138 para ARMv7) funciona em todas as distribuições.
A vulnerabilidade foi descoberta por Taeyang Lee & Theori / Xint Code e publicada em 29 de abril de 2026. Este repositório é uma reimplementação independente, baseada em classes, destinada a testes autorizados.
| Verificando a vulnerabilidade | Explorando e obtendo root |
|---|---|
![]() | ![]() |
allowPrivilegeEscalation: true (o padrão do Kubernetes) pode escapar.Qualquer coisa executando um kernel entre 4.11 e aproximadamente 6.17.x, o que inclui:
Kernels corrigidos: mainline ≥ 6.18.22 / 6.19.12 / 7.0, além de backports para árvores estáveis.
# Verifique se o sistema é vulnerável
python3 exploit.py --check
# Execute o exploit (requer usuário não-root)
python3 exploit.py
os.splice nativo a partir do 3.10)authencesn(hmac(sha256),cbc(aes))/usr/bin/su é o padrão; use --scan para encontrar alternativas)Se a verificação reclamar do algoritmo, carregue os módulos necessários:
sudo modprobe algif_aead authencesn hmac cbc
Algumas distribuições incluem um bloqueio temporário (/etc/modprobe.d/disable-algif_aead.conf). O script o remove automaticamente quando executado como root, ou você pode excluí-lo manualmente.
Permanente: Atualize seu kernel. No Ubuntu/Debian:
sudo apt update && sudo apt upgrade linux-image-generic
Solução alternativa (não afeta IPsec/XFRM):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Nota: IPsec/XFRM não é afetado por este bloqueio porque usa a API de criptografia do kernel diretamente, não AF_ALG.
Contêineres:
A mitigação principal é bloquear o socket AF_ALG com um perfil seccomp. Além disso, defina allowPrivilegeEscalation: false no contexto de segurança do seu pod para habilitar no_new_privs, o que impede o kernel de honrar bits setuid em execve().
Esta ferramenta é para fins educacionais e testes de segurança autorizados. Não a execute em sistemas que você não possui ou para os quais não tem permissão por escrito para testar.