
Repository di ricerca per CVE-2026-81000 (TUNderflow), un underflow di intero nell'headroom di ricezione TUN/TAP del kernel Linux che consente l'escalation locale dei privilegi, con PoC, analisi della causa radice e configurazione del laboratorio.
TUNderflow
Una vulnerabilità di corruzione della memoria del kernel Linux nel sottosistema di networking TUN/TAP, causata da limiti insufficienti sull'headroom di ricezione e da un underflow di interi nel percorso di allocazione dei pacchetti.
Questo repository è destinato a ricerca di sicurezza autorizzata, analisi di vulnerabilità, ambienti CTF, debugging del kernel e test difensivi.
Non utilizzare il codice proof-of-concept contro sistemi senza esplicita autorizzazione.
L'advisory CVE descrive il problema come un underflow di interi che può causare
il posizionamento di skb->data al di fuori dell'head dell'skb allocato.
La vulnerabilità esiste nel percorso di ricezione TUN/TAP del kernel Linux.
Il codice interessato utilizza l'headroom di ricezione configurato del dispositivo TUN sia come headroom del pacchetto sia nel calcolo di quanti dati del pacchetto devono rimanere lineari.
Un valore di headroom eccessivo può quindi creare un calcolo non valido in:
SKB_MAX_HEAD(align)
Quando il valore fornito supera l'head skb utilizzabile di una pagina, il calcolo può andare in underflow.
Concettualmente:
Oversized receive headroom
│
▼
SKB_MAX_HEAD()
│
▼
Integer underflow
│
▼
Negative value
│
▼
size_t wrap
│
▼
Invalid skb data placement
│
▼
Kernel memory corruption
L'implementazione vulnerabile si trova in:
drivers/net/tun.c
con tun_get_user() al centro del percorso vulnerabile.
Il problema di fondo è l'headroom di ricezione TUN limitato in modo insufficiente.
Il kernel può ricevere una richiesta di headroom eccessiva attraverso percorsi di dispositivi di rete che propagano il valore a TUN/TAP.
La vulnerabilità diventa particolarmente interessante quando una configurazione di rete virtuale complessa fa sì che un valore di headroom elevato raggiunga un dispositivo TUN.
La divulgazione pubblica descrive uno scenario che coinvolge:
Netkit
│
▼
VXLAN
│
▼
Open vSwitch
│
▼
TUN
Una configurazione di esempio può propagare circa 4160 byte di headroom a una porta TUN raw, causando l'underflow dell'aritmetica vulnerabile.
La corruzione avviene nella logica di gestione della memoria di networking del kernel.
Le conseguenze potenziali includono:
La divulgazione pubblica riporta la vulnerabilità come parte di un gruppo di vulnerabilità local-root di Linux e afferma che il PoC pubblicato può ottenere l'esecuzione da utente locale non privilegiato a root su target supportati.
La sfruttabilità dipende dall'ambiente e richiede la configurazione pertinente del dispositivo TUN/di rete e le funzionalità di supporto.
ATTACKER
│
▼
Oversized network headroom
│
▼
Virtual network device
│
▼
Open vSwitch
│
▼
TUN/TAP
│
▼
tun_get_user()
│
▼
SKB_MAX_HEAD(align)
│
▼
Integer underflow
│
▼
size_t wraparound
│
▼
Invalid skb->data offset
│
▼
Kernel memory corruption
I componenti importanti sono:
drivers/net/tun.c
│
├── tun_set_headroom()
│
├── tun_get_user()
│
└── tun_alloc_skb()
La relazione vulnerabile può essere semplificata come:
tun->align
│
├── skb headroom
│
└── linear-data calculation
L'utilizzo dello stesso valore eccessivo in entrambi i calcoli crea una relazione non sicura tra l'headroom richiesto e il budget effettivo dell'head skb.
La proprietà di sicurezza critica può essere rappresentata concettualmente come:
usable_head < requested_headroom
che può risultare in:
SKB_MAX_HEAD(align) < 0
seguito da una conversione senza segno:
negative value
↓
size_t
↓
very large unsigned value
Questo può in definitiva influenzare l'allocazione/il posizionamento dei dati dell'skb.
La descrizione ufficiale nota specificamente che il valore risultante va in wrap
quando viene assegnato alla variabile size_t linear.
La correzione upstream è:
447c9303942c439a117d9b76ce6d6e2116c38ee7
Commit:
net: tun: bound receive headroom
La correzione limita l'headroom memorizzato da TUN rispetto al budget disponibile dell'head skb di una pagina e al più grande offset valido a 16 bit dell'header skb. Garantisce inoltre che siano disponibili dati lineari sufficienti per l'elaborazione TUN e TAP raw.
User / network device
│
▼
Large headroom
│
▼
tun->align
│
▼
Unsafe arithmetic
│
▼
Potential OOB access
User / network device
│
▼
Large headroom
│
▼
Bounded headroom
│
▼
Safe skb calculation
│
▼
Normal packet processing
Topologia di laboratorio consigliata:
┌─────────────────────────────────────────┐
│ Linux VM / Host │
│ │
│ ┌─────────┐ ┌──────────────┐ │
│ │ Netkit │────▶│ VXLAN │ │
│ └─────────┘ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ Open vSwitch │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ TUN/TAP │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────┘
Strumenti utili:
uname -a
ip link
ip tuntap
bridge link
ovs-vsctl show
dmesg -w
Per il debugging del kernel:
GDB
GDB + GEF
GDB + pwndbg
crash
objdump
readelf
pahole
Controllare il kernel in esecuzione:
uname -r
Controllare la configurazione del kernel:
grep CONFIG_TUN /boot/config-$(uname -r)
Configurazione attesa:
CONFIG_TUN=y
oppure:
CONFIG_TUN=m
Controllare se il modulo è caricato:
lsmod | grep tun
La divulgazione pubblica fornisce un repository PoC dedicato a TUNderflow per una validazione controllata.
Per un flusso di ricerca sicuro:
1. Build vulnerable kernel
2. Boot isolated VM
3. Configure TUN/TAP
4. Reproduce oversized headroom
5. Monitor kernel messages
6. Capture crash/corruption behavior
7. Apply upstream patch
8. Repeat test
9. Compare results
Monitorare il kernel:
sudo dmesg -w
L'obiettivo del laboratorio è dimostrare la differenza tra comportamento vulnerabile e corretto, piuttosto che attaccare sistemi di produzione.
CVE-2026-81000-TUNderflow/
│
├── README.md
│
├── exploit/
│ ├── poc.c
│ └── Makefile
│
├── analysis/
│ ├── root-cause.md
│ ├── kernel-path.md
│ ├── integer-underflow.md
│ └── patch-analysis.md
│
├── kernel/
│ ├── vulnerable/
│ └── patched/
│
├── lab/
│ ├── setup.sh
│ ├── cleanup.sh
│ └── topology.md
│
├── screenshots/
│
├── docs/
│ └── research-notes.md
│
└── LICENSE
La mitigazione consigliata è installare un kernel contenente la correzione di sicurezza upstream o un backport appropriato della distribuzione.
Per Debian/Kali:
sudo apt update
sudo apt full-upgrade
Poi riavviare:
sudo reboot
Verificare:
uname -r
Per gli ambienti di produzione, verificare il kernel della distribuzione installato rispetto all'advisory di sicurezza del fornitore, piuttosto che affidarsi esclusivamente al numero di versione upstream.
Oracle Linux, ad esempio, ha pubblicato aggiornamenti di sicurezza contenenti la
correzione net: tun: bound receive headroom.
La divulgazione pubblica identifica le seguenti release di kernel stabili come le prime release contenenti le correzioni per le quattro vulnerabilità local-root divulgate, incluso TUNderflow:
TUNderflow dimostra diversi importanti principi di sicurezza del kernel:
I valori di configurazione di rete non devono mai essere considerati ciecamente affidabili.
L'underflow di interi può trasformare un calcolo apparentemente innocuo in una primitiva di sicurezza della memoria.
Un valore di headroom di un dispositivo di rete deve rimanere coerente con il budget di memoria effettivo dell'skb.
I livelli di rete virtuale possono propagare metadati di pacchetto inattesi attraverso più sottosistemi.
Studiare la correzione upstream spesso fornisce una comprensione più chiara della vulnerabilità originale rispetto al solo esame del crash.
drivers/net/tun.ctun_get_user()447c9303942c439a117d9b76ce6d6e2116c38ee7net: tun: bound receive headroom0xBlackash
Cybersecurity Research · Linux Kernel Security · Vulnerability Research · CTF
CVE-2026-81000 · TUNderflow · TUN/TAP · Linux Kernel · LPE
| Campo | Dettagli |
|---|
| CVE | CVE-2026-81000 |
| Nome in codice | TUNderflow |
| Componente | Linux Kernel |
| Sottosistema | TUN/TAP |
| Codice interessato | drivers/net/tun.c |
| Funzione principale | tun_get_user() |
| Classe di bug | Underflow di interi / accesso fuori dai limiti |
| Impatto | Corruzione della memoria del kernel |
| Impatto potenziale | Escalation locale dei privilegi |
| CVSS v3.1 | 7.8 — Alto |
| Vettore di attacco | Locale |
| Privilegi richiesti | Bassi |
| Interazione utente | Nessuna |
| Stato | Corretto |
| Proprietà di sicurezza | Vulnerabile | Corretto |
|---|
| Headroom limitato | ❌ | ✅ |
| Headroom elevato gestito in sicurezza | ❌ | ✅ |
| Condizione di underflow prevenuta | ❌ | ✅ |
| Posizionamento dei dati skb protetto | ❌ | ✅ |
| Configurazione di rete malformata rifiutata in sicurezza | ❌ | ✅ |
| Branch | Release corretta |
|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |