Supprime les paquets TCP IPv4 entrants dont l'en-tête IP contient des options.
Supprime les paquets TCP IPv4 entrants dont l'en-tête IP contient des options.
Un correctif temporaire iptables léger et réversible pour CVE-2026-98432.
Supprime les paquets TCP IPv4 contenant des options IP dans l'espace de noms réseau actuel. Inclut une sortie d'état claire, des commandes d'application/suppression répétables, un inventaire en lecture seule, un service systemd optionnel et une vérification de connexion séparée.
Version : 1.0.0 · Date de révision : 30 octobre 2026 · Nécessite : Linux + Bash + iptables
Il s'agit d'un filtrage communautaire, et non d'un correctif noyau ni d'un contournement complet certifié par un fournisseur. La présence d'une règle ne prouve pas la résistance à l'exploit. Installez un noyau corrigé par le fournisseur et démarrez dessus, ou utilisez un livepatch pris en charge qui couvre explicitement cette CVE.
Extrayez le ZIP, ouvrez un terminal dans ce répertoire, puis :
# 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
Gardez votre session SSH ouverte et confirmez qu'une seconde connexion SSH et vos services habituels fonctionnent toujours. Les clients qui nécessitent des options d'adresse IP IPv4 peuvent être affectés.
Annulation :
sudo bash paranoid-cve98432.sh remove
Seules les règles exactement étiquetées de cet outil sont supprimées. Les autres règles de pare-feu et tous les paramètres sysctl sont préservés. Les règles que vous avez installées manuellement auparavant, y compris la règle non étiquetée issue de notre conversation, ne sont ni supprimées ni adoptées.
| Dépendance | Objectif |
|---|---|
| Bash | Exécution du script |
iptables avec la table IPv4 raw, les correspondances u32 et comment | Filtrage des paquets |
Root et CAP_NET_ADMIN | Application, statut et suppression |
flock, stat, mkdir | Sérialiser les modifications à l'aide d'un répertoire privé sous /run |
iproute2 (ss) | Inventaire facultatif des écouteurs |
| Python 3.8+ | Assistant de vérification facultatif |
| Python 3.9+ | Suite de tests hors ligne |
| systemd | Persistance au démarrage facultative uniquement |
Paquets typiques sur Ubuntu/Debian :
sudo apt install iptables util-linux iproute2 python3
Sur les systèmes de la famille RHEL, le paquet fournissant la commande iptables varie selon
la version. Vérifiez avec dnf provides '*/iptables'. Cet outil n'installe pas de paquets
et ne modifie pas le backend iptables sélectionné.
Certaines installations iptables-nft ne prennent pas en charge u32 dans leur configuration actuelle.
Si l'insertion échoue, l'outil signale une erreur et annule ses nouvelles règles.
Ne changez pas aveuglément de backend de pare-feu sur un serveur en production ; utilisez plutôt un équivalent
nftables natif intégré à votre pare-feu existant.
Ces règles exactes, avec un commentaire servant à les identifier :
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
Le premier octet d'un en-tête IPv4 contient la version et la longueur de l'en-tête Internet (IHL). Cinq mots de 32 bits correspondent à un en-tête normal de 20 octets. Une IHL de 6 à 15 signifie qu'il y a des options IP. u32 lit ce champ directement.
PREROUTING filtre le trafic TCP IPv4 entrant avant sa livraison aux écouteurs.OUTPUT filtre également le trafic généré localement, y compris les tentatives d'atteindre des écouteurs locaux. Il peut aussi supprimer les réponses sortantes portant des options IP.Il s'agit d'options IP IPv4, un champ d'en-tête différent des options TCP. Le trafic SSH, HTTPS et autre trafic normal sans options IP est hors du périmètre de correspondance.
Une double application n'ajoute pas de copies supplémentaires. Si la seconde insertion échoue, seules les règles tentées par cette invocation sont annulées ; les règles exactes préexistantes sont conservées. remove nettoie également les doublons des règles exactes de cet outil. Les invocations concurrentes de cet outil sont sérialisées. Un gestionnaire de pare-feu non lié peut toutefois modifier les règles en même temps.
L'avis amont décrit un use-after-free des options de requête/socket IPv4 pendant la construction d'un SYN-ACK ou la migration d'une requête. Le correctif modifie deux destructeurs pour différer la libération via RCU.
Le filtrage des paquets entrants portant des options IP empêche les options fournies par les paquets d'atteindre TCP sur les chemins couverts par ces hooks. C'est la base de cette mesure provisoire. Il s'agit d'une atténuation fondée sur l'analyse, et non de la reproduction d'un exploit complet ni d'une garantie contre toutes les voies d'accès au code vulnérable.
Vérifiez ces limites :
| Situation | Limite / action |
|---|---|
| Conteneurs, espaces de noms réseau, espaces de noms VPN | Les règles sont propres à chaque espace de noms. Les règles de l'hôte ne couvrent pas le trafic confiné à un autre espace de noms. Inspectez et appliquez à l'intérieur de chaque espace de noms concerné. Les conteneurs partagent le noyau de l'hôte. |
| Ponts Linux / commutation de couche 2 | Ces règles IPv4 ne constituent pas une politique de pont complète. Assurez-vous que les espaces de noms de destination sont couverts ; utilisez des règles de la famille bridge si ce chemin de commutation nécessite un filtrage. |
| Tunnels | Confirmez le filtrage sur le chemin IPv4 interne décodé. Un paquet externe chiffré n'expose pas les options IP internes au filtre externe. |
| NetLabel / CIPSO avec SELinux ou Smack | CIPSO peut renseigner les options de requête via un chemin d'étiquetage du noyau. Ne considérez pas le filtrage des en-têtes entrants comme une couverture de ce chemin. Le simple fait que SELinux soit activé ne prouve pas que CIPSO est configuré. |
| Sockets existants ou requêtes en attente | L'ajout d'un filtre ne constitue ni un nettoyage ni un correctif des objets du noyau déjà créés. |
| Rechargements du pare-feu | Un rechargement, une restauration, un orchestrateur de conteneurs ou un administrateur peut supprimer/réordonner les règles. Revérifiez l'état et réappliquez. |
| Règles de terminaison antérieures dans la table raw | Les nouvelles règles sont placées en position 1, mais des modifications ultérieures peuvent placer une règle de terminaison avant elles. Inspectez l'ordre. |
| Un client qui exige des options IP | Ses connexions peuvent cesser de fonctionner. Cela inclut les déploiements spécialisés d'étiquetage de sécurité. |
| IPv6 | Ces règles ne filtrent pas IPv6 et ne traitent pas les problèmes de migration IPv6/CALIPSO suivis séparément. |