Was geschah
Der Sicherheitsforscher Asim Manizada hat am 18. September funktionierende Exploit-Codes für vier Linux-Kernel-Schwachstellen veröffentlicht, die jeweils lokale Privilegieneskalation bis root ermöglichen. Die Bugs tragen die Namen DirtyAH6, TUNderflow, PPPoEject und DiagSpill — und sie sind alt. Zwischen 10 und 21 Jahre lebten sie im Kernel, unentdeckt, bis Manizadas KI-gestützte Analyse sie fand.
Alle vier sind mittlerweile im Mainline-Kernel behoben. Wer einen aktuellen Kernel fährt, ist sicher. Wer nicht patcht und einen älteren Kernel einsetzt, sollte das schnellstens ändern — die Exploits sind öffentlich auf GitHub verfügbar.
Die vier Schwachstellen
DirtyAH6 — CVE-2026-80844
- Komponente: IPsec Authentication Header für IPv6 (AH6/XFRM)
- CVE: CVE-2026-80844
- Voraussetzung: Unprivileged User Namespaces (für LPE), CAP_NET_ADMIN + CAP_NET_RAW
- Remote möglich: Ja, aber nur unter engen Bedingungen — Host muss IPv6-Router/Gateway sein und AH im Transport-Mode einsetzen. Remote-Root nur im Lab mit vorherigem Memory-Grooming erreicht.
Der Bug sitzt in ipv6_rearrange_rthdr(). Die Funktion liest die Anzahl Adressen aus hdrlen und nutzt segments - segments_left, um einen Adress-Zeiger zu verschieben — ohne vorher zu prüfen, ob segments_left <= segments. Ein crafted IPv6-Paket mit hdrlen=2 und segments_left=255 verschiebt den Zeiger um 4.064 Bytes aus dem Buffer heraus und übergibt diese Länge an memmove(). Out-of-Bounds-Write.
Der Exploit korruptiert skb_shared_info über einen separaten AH6-Routing-Header-OOB und bringt einen nachfolgenden ESP-Decrypt dazu, in ein file-backed Fragment zu schreiben — und ersetzt dabei pam_rootok.so durch pam_permit.so. Ein su reicht danach für root.
TUNderflow — CVE-2026-81000
- Komponente: TUN/TAP virtuelle Netzwerkgeräte
- CVE: CVE-2026-81000
- CVSS: 7.8 (High)
- Voraussetzung: Unprivileged User Namespaces, TUN/TAP-Support
- Remote möglich: Nein
tun_set_headroom() speichert den Receive-Headroom direkt in tun->align. tun_get_user() nutzt denselben Wert sowohl als reservierten Platz als auch als Größe. Ein netkit-Device mit 4.096 Bytes konfiguriertem Headroom, unter einem VXLAN-Device und einem Open vSwitch-Datapath, kann 4.160 Bytes an einen raw TUN-Port weitergeben. Dann unterläuft SKB_MAX_HEAD(4160) — der negative good_linear-Wert wird zu einem riesigen size_t, und tun_alloc_skb() platziert skb->data 64 Bytes hinter seiner 4.096-Byte-Allokation. Die nachfolgende Paketverarbeitung liest und schreibt außerhalb des skb-Heads.
Der Exploit arrangiert file-backed Pipe-Buffer neben dem fehlerhaften TUN-Paket. Der OOB-Write setzt PIPE_BUF_FLAG_CAN_MERGE auf einen davon, und ein Pipe-Write ersetzt pam_rootok.so durch pam_permit.so.
PPPoEject — CVE-2026-68121
- Komponente: PPP over Ethernet (PPPoE)
- CVE: CVE-2026-68121
- Voraussetzung: Unprivileged User Namespaces, PPPoE-Support
- Remote möglich: Nein
pppoe_sendmsg() hält einen Zeiger in den skb-Head, während es dev_hard_header() aufruft. Ein Device-Callback kann dabei pskb_expand_head() triggern und den alten Head freigeben. PPPoE schreibt danach in den freigegebenen Speicher — ein klassischer Use-After-Free.
Der Exploit racet gefüllte FD-Tables in den freigegebenen skb-Head und nutzt die PPPoE-Writes, um einen Live-Eintrag auf ein gefälschtes struct file umzuleiten. Schließen dieses FDs ruft einen kontrollierten Kernel-Callback auf, installiert root-Credentials und öffnet eine root-Shell.
DiagSpill — CVE-2026-74469
- Komponente: SCTP-Diagnostik (sctp_diag)
- CVE: CVE-2026-74469
- Voraussetzung: Keine. Keine User Namespaces, keine speziellen CAPs. SCTP + sctp_diag müssen verfügbar sein.
- Remote möglich: Crash/DoS ja, Remote-Root nein
Eine SCTP-Assoziation kann 65.536 Peer-Transports haben. transport_count ist aber nur 16 Bit breit — der 65.536ste Transport setzt den Zähler auf 0 zurück. sctp_diag reserviert daraufhin keinen Platz für die Peer-Liste, kopiert aber die volle Liste — und überschreibt etwa 8 MiB über das Ende des Netlink-Response-Buffers hinaus.
Remote-Crash ist möglich, wenn ASCONF/ADD-IP aktiviert sind (standardmäßig aus) und entweder SCTP-AUTH oder net.sctp.addip_noauth_enable=1 steht. Ein bösartlicher Peer fügt genug Transports hinzu, und ein ss-Aufruf auf dem Target triggert die Überschreibung. Remote-Root sieht Manizada auch mit perfektem Memory-Grooming nicht als realistischen Pfad.
Der Exploit groomed die sock_diag-Überschreibung in Page Tables, nutzt die korruptierten Page Tables um Host-Memory zu mappen, findet und überschreibt ein Credential-Objekt, installiert eine sudoers-Regel und öffnet eine root-Shell.
Überblick
| Name | CVE | Kernel-Bereich | User-NS nötig? | Remote? |
|---|---|---|---|---|
| DirtyAH6 | CVE-2026-80844 | IPsec AH6 (IPv6) | Ja | Crash unter engen Bedingungen; Remote-Root nur im Lab |
| TUNderflow | CVE-2026-81000 | TUN/TAP | Ja | Nein |
| PPPoEject | CVE-2026-68121 | PPPoE | Ja | Nein |
| DiagSpill | CVE-2026-74469 | SCTP (sctp_diag) | Nein | Crash unter engen Bedingungen; kein Remote-Root |
Drei der vier Lücken brauchen unprivileged User Namespaces — ein Linux-Feature, das normalen Usern erlaubt, als root in einer privaten Sandbox zu agieren. Die meisten Distributionen aktivieren dies standardmäßig. DiagSpill ist die Ausnahme: Es braucht weder User Namespaces noch besondere Privilegien, solange SCTP und sctp_diag verfügbar sind.
Betroffene Kernel-Versionen
Die Bugs sind alt — zwischen 10 und 21 Jahre. Die ersten stabilen Kernel-Releases mit allen vier Fixes:
- 5.10.270
- 5.15.221
- 6.1.188
- 6.6.157
- 6.12.109
- 6.18.50
- 7.2.4
Wer eine Distribution nutzt (Debian, Ubuntu, Red Hat, SUSE), sollte das jeweilige Security-Advisory prüfen — Distros verwenden eigene Versionsnummern und backporten die Fixes nach eigenem Zeitplan.
Was tun
Patchen. Das ist die einzig echte Lösung. Manizada empfiehlt ausdrücklich, zu patchen statt Features zu deaktivieren — es könnten andere Pfade zu denselben Bugs existieren.
Wenn Patchen kurzfristig nicht möglich ist:
- Unprivileged User Namespaces deaktivieren — schließt den Ordinary-User-Pfad zu DirtyAH6, TUNderflow und PPPoEject. DiagSpill bleibt erreichbar. Container oder Prozesse mit entsprechenden CAPs sind ebenfalls nicht geschützt.
- Betroffene Features deaktivieren, wenn ungenutzt: AH6, TUN/TAP, PPPoE, SCTP/sctp_diag.
KI-gestützte Bug-Jagd
Manizada fand die vier Lücken mit einem KI-gestützten Prozess, der eine Karte der Kernel-Memory-Verwaltung baut und über die Memory-Layout-Geometrie nachdenkt. Der Kernel-Commit für DirtyAH6 enthält eine Assisted-by-Zeile, die sein KI-Tooling creditiert.
Das ist Teil eines längeren Trends: 2026 sah eine Reihe von Linux-Kernel-LPEs, mehrere davon mit Hilfe von LLMs gefunden. Manizada selbst disclosed im Juli OVSwrap, eine ähnliche Open vSwitch-Lücke. Einer der neuen Exploits nutzt auch eine Technik aus Dirty Frag (CVE-2026-43284), einer anderen Kernel-Root-Lücke von Mai 2026.
Manizada schreibt, dass dieser Batch wahrscheinlich die öffentliche Phase seines KI-gestützten Bug-Huntings abschließt.
Eigene Systeme prüfen
Schneller Check, ob der eigene Kernel verwundbar ist:
# Kernel-Version prüfen
uname -r
# User-Namespaces-Status
cat /proc/sys/kernel/unprivileged_userns_clone 2>/dev/null || echo "nicht gesetzt"
# SCTP-Modul verfügbar?
modprobe -n sctp_diag 2>/dev/null && echo "verfügbar" || echo "nicht verfügbar"
Wer auf dem Proxmox-Host oder den LXC-Containern einen Kernel < 7.2.4 fährt (bzw. den entsprechenden Distro-Äquivalenten), sollte die Distro-Advisories checken. Bei uns läuft der Host auf 7.0.2-6-pve — PVE backportet die Fixes in den eigenen Kernel, also das Proxmox-Security-Advisory prüfen.