
Idempotentes Shell-Skript, das eine persistente iptables-Regel installiert, die IPv4-TCP-Pakete mit IP-Optionen verwirft, um CVE-2026-98432 auf Ubuntu und Debian zu entschärfen, bis ein gepatchter Kernel verfügbar ist.
Ein einzelnes idempotentes Skript, das eingehende IPv4-TCP-Pakete mit IP-Optionen verwirft, die Regel über Neustarts hinweg beibehält und prüft, ob sie funktioniert. Es ist für Ubuntu- (18.04 – 24.04) und Debian-Server (11 – 13) gedacht, die noch keinen gepatchten Kernel erhalten können.
Dies ist eine Übergangslösung, keine Behebung. Die einzige echte Behebung ist ein gepatchter Kernel plus ein Neustart. Entfernen Sie diese Gegenmaßnahme, sobald der Server einen gepatchten Kernel ausführt.
curl -fsSL https://raw.githubusercontent.com/Mervent/cve-2026-98432/master/install.sh | sudo sh
Sie können es beliebig oft ausführen: Die Dateien werden überschrieben und die Regel wird nie dupliziert. Am Ende validiert das Skript das Ergebnis und beendet sich bei jedem Fehler mit einem Nicht-Null-Exit-Code:
--- validation ---
OK helper installed: /usr/local/sbin/cve-2026-98432-mitigation
OK cron entry: /etc/cron.d/cve-2026-98432
OK cron service enabled
OK iptables rule active (raw/PREROUTING)
OK exactly one rule (no duplicates)
plain SYN: connected, SYN with IP options: timeout
OK drop test: packets with IP options are dropped
--- rule counters ---
pkts bytes target prot opt in out source destination
3 204 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 u32 "0x0>>0x18&0xf=0x6:0xf" /* cve-2026-98432 */
| Pfad | Zweck |
|---|---|
/usr/local/sbin/cve-2026-98432-mitigation | Hilfsprogramm, das die Regel verwaltet. Ohne Argument fügt es die Regel hinzu, falls sie fehlt. --check beendet sich mit 0, wenn die Regel aktiv ist. --remove löscht sie. |
/etc/cron.d/cve-2026-98432 | @reboot-Eintrag, der die Regel nach jedem Start erneut anwendet |
Die Regel selbst:
iptables -t raw -I PREROUTING -p tcp -m u32 --u32 "0>>24&0xF=6:15" \
-m comment --comment cve-2026-98432 -j DROP
sudo /usr/local/sbin/cve-2026-98432-mitigation --check && echo active
sudo iptables -t raw -L PREROUTING -v -n | grep cve-2026-98432
sudo /usr/local/sbin/cve-2026-98432-mitigation --remove
sudo rm /usr/local/sbin/cve-2026-98432-mitigation /etc/cron.d/cve-2026-98432
Um zu prüfen, ob Ihre Distribution einen Fix bereitgestellt hat, sehen Sie in
Ubuntu oder Debian
nach (für Debian 9 – 11 im Freexian ELTS-Tracker).
Sobald Ihre Version „Fixed" anzeigt, führen Sie apt update && apt full-upgrade aus, starten Sie neu und entfernen Sie dann die Mitigation.
Stand 1. November 2026 verfügen Debian 12 (linux 6.1.190-1, DLA-4841-1) und Debian 13 (linux 6.12.113-1,
DSA-6568-1) bereits über gepatchte Kernel, daher sollten Sie auf diesen Versionen ein Upgrade durchführen, anstatt dieses Skript zu verwenden.
Der Fix für Debian 11 (linux 5.10.272-1, ELA-1846-1) ist nur im ELTS-Repository von Freexian verfügbar: kommerziell,
aber auf Anfrage kostenlos für Privatpersonen und kleine gemeinnützige Organisationen.
CVE-2026-98432 („ipv4: free inet_opt and ireq_opt after an RCU grace period") ist eine Use-after-free-Schwachstelle im IPv4-TCP-Handshake. Sie betrifft Linux 4.4 und später und wird mit CVSS 9.8 bewertet.
Wenn ein SYN IPv4-Optionen enthält, speichert der Kernel diese im Request-Socket, um sie im
SYN-ACK zurückzuspiegeln. tcp_v4_syn_recv_sock() übergibt diesen Puffer dann ohne Kopie an den Child-Socket.
Wenn der Child-Socket beendet wird, wird der Puffer mit einem einfachen kfree() freigegeben, während eine andere CPU ihn möglicherweise
noch liest, um ein SYN-ACK für ein erneut übertragenes SYN zu erstellen.
All dies geschieht im Kernel, bevor eine Anwendung die Verbindung sieht. Jeder lauschende IPv4-TCP- Port ist auf diesem Weg erreichbar (SSH, HTTP, PostgreSQL und so weiter), und es werden keine Anmeldedaten benötigt. Anthropic meldete einen funktionierenden Remote-Root-Exploit gegen Hosts, die einen Multipath-TCP-(MPTCP-) Listener betreiben. Das Go Security Team weist darauf hin, dass der Fehler nicht auf MPTCP beschränkt ist.
Der Speicher, der zu früh freigegeben wird, existiert nur, wenn das eingehende SYN IPv4-Optionen enthält. Ohne Optionen gibt es keinen gespeicherten Puffer, sodass die Use-after-free-Schwachstelle nichts hat, worauf sie wirken kann. Legitimer TCP-Verkehr enthält praktisch nie IPv4-Optionen, sodass das Verwerfen dieser Pakete in der Praxis nichts kostet. Red Hat (RHSB-2026-016) und AlmaLinux veröffentlichen eine äquivalente nftables-Regel.
u32 "0>>24&0xF=6:15" liest das IHL-Feld, die IPv4-Header-Länge in 32-Bit-Wörtern. Ein Wert von 5 ist
der reine 20-Byte-Header. Werte von 6 bis 15 bedeuten, dass Optionen vorhanden sind.
Red Hat erklärt, dass eine solche Regel „die Anfälligkeit für diese Schwachstelle verringert, sie aber nicht vollständig verhindern kann". Betrachten Sie sie als Risikominderung, bis der Kernel gepatcht ist.
raw / PREROUTINGPREROUTING sieht jedes eingehende Paket, sowohl Verkehr zum Host als auch Verkehr, der an Docker-
Container auf veröffentlichten Ports weitergeleitet wird. Eine Regel in INPUT, wo ufw seine Regeln platziert, würde
den weitergeleiteten Verkehr verfehlen.raw-Tabelle wird vor dem Connection Tracking ausgeführt, sodass verworfene Pakete niemals Conntrack-Einträge erzeugen.raw/PREROUTING nicht, sodass die Regel deren Neustarts übersteht.iptables ist auf jeder Zielversion von Ubuntu vorhanden. Auf Ubuntu 18.04 und 20.04 verwendet es das Legacy-
Backend; ab Ubuntu 22.04 und auf Debian 11+ ist es iptables-nft. Die Binärdatei nft ist nicht
überall standardmäßig installiert. Auf Debian kann iptables selbst fehlen; das Skript fordert Sie dann auf,
apt install iptables auszuführen.iptables-nft teilen sich ufw/Docker und diese Regel das nf_tables-Backend, sodass eine Regel beide abdeckt.u32-Match benötigt das Kernelmodul xt_u32. Wenn es fehlt, schlägt das Skript fehl und fordert Sie auf,
modinfo xt_u32 zu prüfen.@rebootnftables.service. Auf Ubuntu beginnt /etc/nftables.conf mit flush ruleset, und der
Dienst führt beim Stoppen nft flush ruleset aus. Beides löscht ufw- und Docker-Regeln.iptables-persistent. netfilter-persistent save schreibt jede aktuelle Regel, einschließlich
der von Docker, in einen Dump, und das Wiederherstellen dieses Snapshots beim Booten steht im Konflikt mit den Regeln, die Docker selbst erstellt.before.rules. Es funktioniert nur, wenn ufw aktiviert ist, und seine Chains sehen keinen weitergeleiteten
Traffic zu Containern./etc/cron.d ist durch
Überschreiben idempotent, und das Entfernen ist ein einziges rm. Der Kompromiss ist ein Zeitfenster von einigen Sekunden nach dem Booten, in dem
das Netzwerk aktiv ist, aber cron die Regel noch nicht angewendet hat. Das ist akzeptabel für eine Mitigation, die
nur bis zum nächsten Kernel-Update bestehen muss.net.mptcp.enabled=0Das Deaktivieren von MPTCP entfernt die Vorbedingung des einen veröffentlichten Exploits, nicht den Bug. Reine TCP-
Listener durchlaufen weiterhin denselben verwundbaren Code. Auf einem Server ohne MPTCP-Listener
(ss -Mlnp gibt nichts aus) ändert das sysctl überhaupt nichts. Es ist eine harmlose Ergänzung, kein
Ersatz für diese Regel.