
Forschungs-Repository für CVE-2026-80844 (DirtyAH6), eine lokale Rechteausweitung im Linux-Kernel IPv6 AH6/XFRM, mit PoC, Ursachenanalyse und Patch-Analyse.
DirtyAH6
CVE-2026-80844 ist eine Schwachstelle im Linux-Kernel, die das IPv6-Subsystem Authentication Header (AH6) / XFRM betrifft.
Die Schwachstelle wird durch eine unzureichende Validierung des Feldes
segments_left im IPv6-Routing-Header verursacht, was potenziell zu einer
Speicheroperation außerhalb der zulässigen Grenzen und zu einer Korruption des
Kernelspeichers führen kann.
Dieses Repository ist ausschließlich für autorisierte Sicherheitsforschung, Schwachstellenanalyse, CTFs und defensive Tests gedacht.
Verwenden Sie diese Forschung nicht gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Testgenehmigung haben.
| Feld | Details |
|---|---|
| CVE | CVE-2026-80844 |
| Codename | DirtyAH6 |
| Komponente | Linux-Kernel |
| Subsystem | IPv6 / XFRM / AH6 |
| Schwachstellentyp | Lokale Rechteausweitung |
| Angriffsvektor | Lokal |
| Angriffskomplexität | Niedrig |
| Erforderliche Rechte | Niedrig |
| Benutzerinteraktion | Keine |
| CVSS v3.1 | 7.8 — Hoch |
| Betroffener Code | net/ipv6/ah6.c |
| Status | Gepatcht |
Die Schwachstelle befindet sich im Verarbeitungspfad von IPv6 AH6.
Der betroffene Code führt eine Manipulation des Routing-Headers durch über:
net/ipv6/ah6.c
Konkret umfasst die anfällige Logik:
ipv6_rearrange_rthdr()
Die Funktion hat es versäumt, die Beziehung zwischen Folgendem angemessen zu validieren:
hdrlen
und:
segments_left
Ein Angreifer, der in der Lage ist, ein speziell präpariertes IPv6-Paket zu liefern, kann daher den Kernel dazu veranlassen, auf Speicher außerhalb der erwarteten Routing-Header-Grenzen zuzugreifen.
Dies kann zu Folgendem führen:
Malformed IPv6 packet
│
▼
AH6 / XFRM processing
│
▼
Invalid routing-header state
│
▼
Out-of-bounds memory operation
│
▼
Kernel memory corruption
│
▼
Potential privilege escalation
Das grundlegende Problem ist die unzureichende Validierung des segments_left-Werts im IPv6-Routing-Header.
Konzeptionell lässt sich die anfällige Bedingung wie folgt darstellen:
segments_left > available routing-header addresses
Der Kernel muss sicherstellen, dass die Anzahl der vom Routing-Header angeforderten Segmente mit der tatsächlichen Header-Länge übereinstimmt, bevor die zugehörigen Adressdaten manipuliert werden.
Ohne diese Validierung können nachfolgende Speicheroperationen über die gültigen Puffergrenzen hinaus ausgeführt werden.
Eine erfolgreiche Ausnutzung kann es einem Angreifer mit den erforderlichen lokalen Fähigkeiten/Umgebungsbedingungen ermöglichen, den Kernel-Speicher zu korrumpieren.
Mögliche Folgen sind:
Die genaue Ausnutzbarkeit hängt von der Kernel-Konfiguration, den verfügbaren Namespaces/Fähigkeiten und anderen Umgebungsbedingungen ab.
net/ipv6/ah6.c
Relevante Verarbeitung:
AH6
└── IPv6 Routing Header
└── ipv6_rearrange_rthdr()
Das problematische Szenario betrifft inkonsistente Metadaten in Routing-Headern.
Zum Beispiel, konzeptionell:
hdrlen → describes a limited number of addresses
segments_left → claims more addresses than are available
Diese Diskrepanz muss abgelehnt werden, bevor der Kernel die Adressumordnung durchführt.
Der Upstream-Fix führt eine Validierung des segments_left-Werts des Routing Headers ein, bevor der Kernel die anfällige Operation ausführt.
Der zugehörige Upstream-Commit ist:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
Die Sicherheitskorrektur lässt sich wie folgt zusammenfassen:
Before:
Trust segments_left
↓
Rearrange addresses
↓
Potential OOB access
After:
Validate segments_left
↓
Reject malformed header
↓
Safe AH6 processing
Die betroffenen Versionen hängen von der Upstream- und Vendor-Backport-Historie ab.
Benutzer sollten die Sicherheitshinweise ihrer Distribution überprüfen, anstatt sich nur auf die Upstream-Versionsnummer zu verlassen.
Beispiele für gepatchte Upstream-Stable-Releases sind:
| Kernel-Zweig | Gepatchtes 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 |
Den laufenden Kernel überprüfen:
uname -a
oder:
uname -r
Detaillierte Kernel-Informationen prüfen:
cat /proc/version
Für Debian-/Kali-basierte Systeme:
apt-cache policy linux-image-amd64
Für RPM-basierte Systeme:
rpm -q kernel
Distributions-Kernel backporten häufig Sicherheitsfixes, ohne die Upstream-Version auf offensichtliche Weise zu ändern. Prüfe immer die Vendor-Advisory/Changelog.
Die primäre Mitigation besteht darin, auf einen Kernel zu aktualisieren, der den Sicherheitsfix enthält.
Debian/Kali:
sudo apt update
sudo apt full-upgrade
Dann neu starten:
sudo reboot
Prüfen:
uname -r
Für Produktionssysteme konsultieren Sie die offizielle Sicherheitsempfehlung der Linux-Distribution, bevor Sie Kernel-Updates anwenden.
Empfohlene isolierte Umgebung:
Host
│
├── Kali Linux
│
└── Vulnerable Linux VM
│
├── Debug kernel
├── IPv6 enabled
├── AH6/XFRM support
└── Kernel symbols
Nützliche Debugging-Tools:
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
Kernel-Debugging:
sudo dmesg -w
Kernel-Symbole inspizieren:
cat /proc/kallsyms