
Forschungs-Repository für CVE-2026-81000 (TUNderflow), einen Integer-Underflow im Receive-Headroom des Linux-Kernel-TUN/TAP-Treibers, der lokale Rechteausweitung ermöglicht, mit PoC, Ursachenanalyse und Laboreinrichtung.
TUNderflow
Eine Speicherbeschädigungsschwachstelle im Linux-Kernel im TUN/TAP-Netzwerk- Subsystem, verursacht durch unzureichende Begrenzung des Empfangs-Headrooms und einen Integer-Underflow im Paketallokationspfad.
Dieses Repository ist für autorisierte Sicherheitsforschung, Schwachstellen- analyse, CTF-Umgebungen, Kernel-Debugging und defensives Testen gedacht.
Verwenden Sie Proof-of-Concept-Code nicht gegen Systeme ohne ausdrückliche Autorisierung.
Die CVE-Beschreibung bezeichnet das Problem als Integer-Underflow, der dazu
führen kann, dass skb->data außerhalb des allozierten skb-Head positioniert
wird.
Die Schwachstelle befindet sich im TUN/TAP-Empfangspfad des Linux-Kernels.
Der betroffene Code verwendet den konfigurierten Empfangs-Headroom des TUN-Geräts sowohl als Paket-Headroom als auch bei der Berechnung, wie viele Paketdaten linear bleiben sollen.
Ein überdimensionierter Headroom-Wert kann daher eine ungültige Berechnung in folgendem Ausdruck erzeugen:
SKB_MAX_HEAD(align)
Wenn der übergebene Wert den nutzbaren einseitigen skb-Head überschreitet, kann die Berechnung unterlaufen.
Konzeptionell:
Überdimensionierter Empfangs-Headroom
│
▼
SKB_MAX_HEAD()
│
▼
Integer-Underflow
│
▼
Negativer Wert
│
▼
size_t-Wrap
│
▼
Ungültige skb-Datenplatzierung
│
▼
Kernel-Speicherbeschädigung
Die verwundbare Implementierung befindet sich in:
drivers/net/tun.c
wobei tun_get_user() im Zentrum des verwundbaren Pfads steht.
Das zugrunde liegende Problem ist ein unzureichend begrenzter TUN-Empfangs- Headroom.
Der Kernel kann eine überdimensionierte Headroom-Anforderung über Netzwerk- gerätepfade empfangen, die den Wert an TUN/TAP weiterleiten.
Die Schwachstelle wird besonders interessant, wenn eine komplexe virtuelle Netzwerkkonfiguration dazu führt, dass ein großer Headroom-Wert ein TUN-Gerät erreicht.
Die öffentliche Offenlegung beschreibt ein Szenario mit:
Netkit
│
▼
VXLAN
│
▼
Open vSwitch
│
▼
TUN
Eine Beispielkonfiguration kann etwa 4160 Bytes Headroom an einen Raw-TUN- Port weiterleiten, wodurch die verwundbare Arithmetik unterläuft.
Die Beschädigung tritt in der Speicherverwaltungslogik des Kernel-Netzwerks auf.
Mögliche Konsequenzen sind:
Die öffentliche Offenlegung meldet die Schwachstelle als Teil einer Gruppe von Linux-Local-Root-Schwachstellen und gibt an, dass der veröffentlichte PoC auf unterstützten Zielen eine unprivilegierte lokale Benutzer-zu-Root-Ausführung erreichen kann.
Die Ausnutzbarkeit ist umgebungsabhängig und erfordert die entsprechende TUN-/Netzwerkgerätekonfiguration und unterstützende Funktionalität.
ANGREIFER
│
▼
Überdimensionierter Netzwerk-Headroom
│
▼
Virtuelles Netzwerkgerät
│
▼
Open vSwitch
│
▼
TUN/TAP
│
▼
tun_get_user()
│
▼
SKB_MAX_HEAD(align)
│
▼
Integer-Underflow
│
▼
size_t-Wraparound
│
▼
Ungültiger skb->data-Offset
│
▼
Kernel-Speicherbeschädigung
Die wichtigen Komponenten sind:
drivers/net/tun.c
│
├── tun_set_headroom()
│
├── tun_get_user()
│
└── tun_alloc_skb()
Die verwundbare Beziehung lässt sich vereinfacht darstellen als:
tun->align
│
├── skb-Headroom
│
└── Berechnung der linearen Daten
Die Verwendung desselben überdimensionierten Werts in beiden Berechnungen erzeugt eine unsichere Beziehung zwischen dem angeforderten Headroom und dem tatsächlichen skb-Head-Budget.
Die kritische Sicherheitseigenschaft lässt sich konzeptionell darstellen als:
usable_head < requested_headroom
was zu folgendem Ergebnis führen kann:
SKB_MAX_HEAD(align) < 0
gefolgt von einer vorzeichenlosen Konvertierung:
negativer Wert
↓
size_t
↓
sehr großer vorzeichenloser Wert
Dies kann letztendlich die skb-Allokation/Datenplatzierung beeinflussen.
Die offizielle Beschreibung weist speziell darauf hin, dass der resultierende
Wert beim Zuweisen an die size_t-Variable linear umschlägt.
Der Upstream-Fix ist:
447c9303942c439a117d9b76ce6d6e2116c38ee7
Commit:
net: tun: bound receive headroom
Der Fix begrenzt den von TUN gespeicherten Headroom gegen das verfügbare einseitige skb-Head-Budget und den größten gültigen 16-Bit-skb-Header-Offset. Er stellt außerdem sicher, dass ausreichend lineare Daten für die Raw-TUN- und TAP-Verarbeitung verfügbar sind.
Benutzer / Netzwerkgerät
│
▼
Großer Headroom
│
▼
tun->align
│
▼
Unsichere Arithmetik
│
▼
Potenzieller OOB-Zugriff
Benutzer / Netzwerkgerät
│
▼
Großer Headroom
│
▼
Begrenzter Headroom
│
▼
Sichere skb-Berechnung
│
▼
Normale Paketverarbeitung
Empfohlene Labortopologie:
┌─────────────────────────────────────────┐
│ Linux VM / Host │
│ │
│ ┌─────────┐ ┌──────────────┐ │
│ │ Netkit │────▶│ VXLAN │ │
│ └─────────┘ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ Open vSwitch │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ TUN/TAP │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────┘
Nützliche Werkzeuge:
uname -a
ip link
ip tuntap
bridge link
ovs-vsctl show
dmesg -w
Für Kernel-Debugging:
GDB
GDB + GEF
GDB + pwndbg
crash
objdump
readelf
pahole
Den laufenden Kernel prüfen:
uname -r
Kernel-Konfiguration prüfen:
grep CONFIG_TUN /boot/config-$(uname -r)
Erwartete Konfiguration:
CONFIG_TUN=y
oder:
CONFIG_TUN=m
Prüfen, ob das Modul geladen ist:
lsmod | grep tun
Die öffentliche Offenlegung stellt ein dediziertes TUNderflow-PoC-Repository für kontrollierte Validierung bereit.
Für einen sicheren Forschungsablauf:
1. Verwundbaren Kernel bauen
2. Isolierte VM booten
3. TUN/TAP konfigurieren
4. Überdimensionierten Headroom reproduzieren
5. Kernel-Meldungen überwachen
6. Absturz-/Beschädigungsverhalten erfassen
7. Upstream-Patch anwenden
8. Test wiederholen
9. Ergebnisse vergleichen
Den Kernel überwachen:
sudo dmesg -w
Das Ziel des Labors ist es, den Unterschied zwischen verwundbarem und gepatchtem Verhalten zu demonstrieren, anstatt Produktionssysteme anzugreifen.
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
Die empfohlene Gegenmaßnahme ist die Installation eines Kernels, der den Upstream-Sicherheitsfix oder einen entsprechenden Distributions-Backport enthält.
Für Debian/Kali:
sudo apt update
sudo apt full-upgrade
Dann neu starten:
sudo reboot
Überprüfen:
uname -r
In Produktionsumgebungen sollte der installierte Distributions-Kernel gegen die Sicherheitshinweise des Herstellers überprüft werden, anstatt sich ausschließlich auf die Upstream-Versionsnummer zu verlassen.
Oracle Linux beispielsweise hat Sicherheitsupdates veröffentlicht, die den
Fix net: tun: bound receive headroom enthalten.
Die öffentliche Offenlegung identifiziert die folgenden stabilen Kernel- Releases als die ersten Releases, die die Fixes für die vier offengelegten Local-Root-Schwachstellen einschließlich TUNderflow enthalten:
TUNderflow demonstriert mehrere wichtige Kernel-Sicherheitsprinzipien:
Netzwerkkonfigurationswerte dürfen niemals blind vertraut werden.
Integer-Underflow kann eine scheinbar harmlose Berechnung in ein Speichersicherheits-Primitiv verwandeln.
Ein Netzwerkgeräte-Headroom-Wert muss mit dem tatsächlichen skb-Speicherbudget konsistent bleiben.
Virtuelle Netzwerkschichten können unerwartete Paket-Metadaten über mehrere Subsysteme hinweg weiterleiten.
Die Untersuchung des Upstream-Fixes bietet oft ein klareres Verständnis der ursprünglichen Schwachstelle als die alleinige Betrachtung des Absturzes.
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
| Feld | Details |
|---|
| CVE | CVE-2026-81000 |
| Codename | TUNderflow |
| Komponente | Linux Kernel |
| Subsystem | TUN/TAP |
| Betroffener Code | drivers/net/tun.c |
| Primäre Funktion | tun_get_user() |
| Fehlerklasse | Integer-Underflow / Out-of-Bounds-Speicherzugriff |
| Auswirkung | Kernel-Speicherbeschädigung |
| Potenzieller Impact | Lokale Privilegieneskalation |
| CVSS v3.1 | 7.8 — Hoch |
| Angriffsvektor | Lokal |
| Erforderliche Rechte | Niedrig |
| Benutzerinteraktion | Keine |
| Status | Gepatcht |
| Sicherheitseigenschaft | Verwundbar | Gepatcht |
|---|
| Headroom begrenzt | ❌ | ✅ |
| Großer Headroom sicher behandelt | ❌ | ✅ |
| Underflow-Bedingung verhindert | ❌ | ✅ |
| skb-Datenplatzierung geschützt | ❌ | ✅ |
| Fehlerhafte Netzwerkkonfiguration sicher abgelehnt | ❌ | ✅ |
| Branch | Behobenes Release |
|---|
| 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 |