
Eingehende IPv4-TCP-Pakete verwerfen, deren IP-Header Optionen enthält.
Eingehende IPv4-TCP-Pakete verwerfen, deren IP-Header Optionen enthält.
Ein kleiner, umkehrbarer iptables-Übergangslösung für CVE-2026-98432.
Verwirft IPv4-TCP-Pakete, die IP-Optionen enthalten, im aktuellen Netzwerk-Namespace. Enthält eine übersichtliche Statusausgabe, wiederholbare Apply/Remove-Befehle, ein schreibgeschütztes Inventar, einen optionalen systemd-Dienst und eine separate Verbindungsprüfung.
Version: 1.0.0 · Prüfdatum: 30. Oktober 2026 · Voraussetzungen: Linux + Bash + iptables
Dies ist Community-Filterung, kein Kernel-Fix und keine vom Hersteller zertifizierte vollständige Umgehungslösung. Eine vorhandene Regel beweist keine Exploit-Resistenz. Installieren Sie einen vom Hersteller gepatchten Kernel und booten Sie in diesen, oder verwenden Sie einen unterstützten Livepatch, der diese CVE ausdrücklich abdeckt.
Entpacken Sie die ZIP-Datei, öffnen Sie ein Terminal in diesem Verzeichnis und führen Sie dann aus:
# Read-only inventory; no root required, although visibility may be limited.
bash paranoid-cve98432.sh audit
# Preview the firewall commands; no changes, no root required.
bash paranoid-cve98432.sh apply --dry-run
# Apply the two runtime rules.
sudo bash paranoid-cve98432.sh apply
# Check exact rules and packet counters.
sudo bash paranoid-cve98432.sh status
Halten Sie Ihre SSH-Sitzung geöffnet und bestätigen Sie, dass eine zweite SSH-Verbindung und Ihre normalen Dienste weiterhin funktionieren. Clients, die IPv4-IP-Optionen erfordern, können betroffen sein.
Rückgängig machen:
sudo bash paranoid-cve98432.sh remove
Es werden nur die exakt getaggten Regeln dieses Tools entfernt. Andere Firewall-Regeln und alle sysctl-Einstellungen bleiben erhalten. Regeln, die Sie zuvor manuell installiert haben, einschließlich der ungetaggten Regel aus unserer Unterhaltung, werden weder entfernt noch übernommen.
| Abhängigkeit | Zweck |
|---|---|
| Bash | Laufzeitumgebung des Skripts |
iptables mit der IPv4-raw-Tabelle, u32- und comment-Matches | Paketfilterung |
Root und CAP_NET_ADMIN | Anwenden, Status und Entfernen |
flock, stat, mkdir | Serialisieren von Änderungen über ein privates Verzeichnis unter /run |
iproute2 (ss) | Optionale Inventarisierung von Listenern |
| Python 3.8+ | Optionaler Verifizierungshelfer |
| Python 3.9+ | Offline-Testsuite |
| systemd | Nur optionale Persistenz beim Booten |
Typische Pakete unter Ubuntu/Debian:
sudo apt install iptables util-linux iproute2 python3
Auf RHEL-Familien-Systemen variiert das Paket, das den Befehl iptables bereitstellt, je nach
Release. Prüfen Sie dnf provides '*/iptables'. Dieses Tool installiert keine Pakete
und ändert nicht das ausgewählte iptables-Backend.
Einige iptables-nft-Installationen unterstützen u32 in ihrer aktuellen Konfiguration nicht.
Wenn die Einfügung fehlschlägt, meldet das Tool einen Fehler und macht seine neuen Regeln rückgängig.
Wechseln Sie nicht blind die Firewall-Backends auf einem laufenden Server; verwenden Sie stattdessen ein natives nftables-
Äquivalent, das in Ihre bestehende Firewall integriert ist.
Genau diese Regeln, mit einem Kommentar zur Identifizierung:
iptables -w 10 -t raw -I PREROUTING 1 -p tcp \
-m u32 --u32 '0>>24&0x0F=6:15' \
-m comment --comment 'cve98432-guard:v1' -j DROP
iptables -w 10 -t raw -I OUTPUT 1 -p tcp \
-m u32 --u32 '0>>24&0x0F=6:15' \
-m comment --comment 'cve98432-guard:v1' -j DROP
Das erste Byte eines IPv4-Headers enthält die Version und die Internet Header
Length (IHL). Fünf 32-Bit-Wörter sind ein normaler 20-Byte-Header. IHL 6–15 bedeutet,
dass IP-Optionen vorhanden sind. u32 liest dieses Feld direkt aus.
PREROUTING filtert eingehenden IPv4-TCP-Verkehr, bevor er an Listener zugestellt wird.OUTPUT filtert auch lokal erzeugten Verkehr, einschließlich Versuchen, lokale
Listener zu erreichen. Es kann auch ausgehende Antworten mit IP-Optionen verwerfen.Dies sind IPv4-IP-Optionen, ein anderes Header-Feld als TCP-Optionen. Normaler SSH-, HTTPS- und sonstiger Verkehr ohne IP-Optionen fällt nicht unter die Übereinstimmung.
Ein zweimaliges Anwenden fügt keine weiteren Kopien hinzu. Wenn die zweite Einfügung fehlschlägt, werden nur
die von diesem Aufruf versuchten Regeln zurückgerollt; bereits vorhandene exakte Regeln
bleiben erhalten. remove bereinigt ebenfalls Duplikate der exakten Regeln dieses Tools.
Gleichzeitige Aufrufe dieses Tools werden serialisiert. Ein unabhängiger Firewall-
Manager kann die Regeln dennoch gleichzeitig ändern.
Die Upstream-Advisory beschreibt einen Use-after-free von IPv4-Request-/Socket-Optionen, während ein SYN-ACK aufgebaut oder eine Anfrage migriert wird. Der Fix ändert zwei Destruktoren, um das Freigeben über RCU zu verzögern.
Das Filtern eingehender Pakete mit IP-Optionen verhindert, dass die üblichen vom Paket gelieferten Optionen TCP auf Pfaden erreichen, die von diesen Hooks abgedeckt werden. Das ist die Grundlage für diesen Behelfslösung. Es ist eine analysebasierte Mitigation, keine Reproduktion eines vollständigen Exploits und keine Garantie gegen jeden Weg in den verwundbaren Code.
Beachten Sie diese Einschränkungen:
| Situation | Einschränkung / Maßnahme |
|---|---|
| Container, Netzwerk-Namespaces, VPN-Namespaces | Regeln gelten pro Namespace. Host-Regeln decken keinen Verkehr ab, der auf einen anderen Namespace beschränkt ist. Prüfen und wenden Sie sie in jedem relevanten Namespace an. Container teilen sich den Host-Kernel. |
| Linux-Bridges / Layer-2-Forwarding | Diese IPv4-Regeln sind keine vollständige Bridge-Richtlinie. Stellen Sie sicher, dass Ziel-Namespaces abgedeckt sind; verwenden Sie Regeln der Bridge-Familie, wenn dieser Forwarding-Pfad gefiltert werden muss. |
| Tunnel | Bestätigen Sie die Filterung auf dem dekodierten inneren IPv4-Pfad. Ein verschlüsseltes äußeres Paket legt innere IP-Optionen nicht für den äußeren Filter offen. |
| NetLabel / CIPSO mit SELinux oder Smack | CIPSO kann Request-Optionen über einen Kernel-Labeling-Pfad befüllen. Betrachten Sie die Filterung eingehender Header nicht als Abdeckung für diesen Pfad. Allein die Aktivierung von SELinux beweist nicht, dass CIPSO konfiguriert ist. |
| Bestehende Sockets oder ausstehende Anfragen | Das Hinzufügen eines Filters ist keine Bereinigung oder kein Patch bereits erzeugter Kernel-Objekte. |
| Firewall-Neuladen | Ein Reload, Restore, Container-Orchestrator oder Administrator kann Regeln entfernen oder neu anordnen. Prüfen Sie den Status erneut und wenden Sie sie erneut an. |
| Frühere terminierende Regeln in der Raw-Tabelle | Neue Regeln werden an Position 1 eingefügt, aber spätere Regeländerungen können eine terminierende Regel davor platzieren. Prüfen Sie die Reihenfolge. |
| Ein Client, der IP-Optionen erfordert | Seine Verbindungen können aufhören zu funktionieren. Dies umfasst spezialisierte Security-Labeling-Deployments. |
| IPv6 | Diese Regeln filtern kein IPv6 und adressieren keine separat verfolgten IPv6-/CALIPSO-Migrationsprobleme. |
Es gibt keine automatische Behauptung, dass der Kernel gepatcht ist, basierend auf einem Versions- string, einer Erwähnung im Changelog, einer leeren Listener-Ausgabe oder einem Paketzähler von null. Hersteller-Kernel backporten Fixes und haben separate Generic-, Cloud-, HWE- und andere Varianten. Ein installierter neuer Kernel ist nicht unbedingt der laufende Kernel.