Atténuation nftables provisoire pour CVE-2026-98432, retour arrière automatique et guide de l'administrateur en russe. Ce n'est pas un correctif du noyau.
Protection temporaire des serveurs Linux : filtre TCP IPv4 restreint, vérification de l'état, sauvegarde et restauration. L'audit distingue la correction du noyau du fonctionnement du filtre.
Audit: работающее ядро → пакет → основание → UNKNOWN при нехватке данных
Protection: inet + bridge → строгая проверка → откат через 180 секунд
Validation: обычный TCP / IP options / UDP в отдельном namespace
Monitoring: проверка по таймеру → журнал ошибок, без изменения firewall
Ce n'est pas un correctif du noyau et ce n'est pas une garantie d'élimination de toutes les variantes d'exploitation. Le script installe un filtre réseau étroit pour le chemin connu des options TCP/IP IPv4 de la CVE-2026-98432. Le correctif définitif est un noyau avec le correctif confirmé pour cette CVE précise et son chargement.
La pertinence des recommandations a été vérifiée le 1er novembre 2026. Avant application, vérifiez le statut récent auprès du fournisseur de votre distribution.
La démonstration d'Anthropic utilisait un listener MPTCP. La Go Security Team prévient : l'erreur elle-même se trouve dans le code TCP IPv4 commun du noyau, donc l'absence de sockets MPTCP ne prouve pas la sécurité. GODEBUG=multipathtcp=0 est une restriction supplémentaire du chemin d'attaque connu, et non un remplacement du correctif du noyau.
Ce script ne modifie pas MPTCP, n'installe pas de mises à jour, ne redémarre pas les applications et ne redémarre pas le serveur. Le filtre fonctionne aussi pour les listeners déjà ouverts.
Deux tables nftables distinctes :
inet cve_2026_98432_guard : paquets TCP IPv4 dont la longueur de l'en-tête IP dépasse 20 octets ;bridge cve_2026_98432_guard : paquets similaires sur les bridges.Le reste du trafic passe vers les règles existantes. Il n'y a pas de flush ruleset complet, les règles de Docker/Kubernetes/SSH et d'autres services ne sont pas remplacées.
Il s'agit d'un filtrage des options IPv4, et non des options TCP. Les timestamps TCP ordinaires, le window scaling, SACK et les connexions SSH/HTTPS standard ne sont pas bloqués par cette condition. Le trafic TCP légitime avec des options IPv4 sera également rejeté : vérifiez les exigences de votre réseau.
Nécessite Linux, root, nft, Python 3.8+, Bash et systemd ainsi que la prise en charge de nftables inet/bridge dans le noyau.
Le script n'active pas le service de pare-feu de la distribution et n'installe pas de dépendances.
La vérification --check détecte l'absence des capacités nécessaires avant l'application.
Exemple d'installation de l'outil manquant, si cela correspond à la politique du serveur :
# Debian / Ubuntu:
sudo apt-get install nftables python3
# RHEL / Rocky / AlmaLinux:
sudo dnf install nftables python3
OpenWrt, RouterOS, BSD, Windows, les anciens NAS, les conteneurs sans root/CAP_NET_ADMIN et les systèmes sans systemd ne sont pas pris en charge par cet installateur. Pour ceux-ci, il faut des instructions distinctes du fabricant. Le script ne doit pas être considéré comme un scanner de vulnérabilités universel. Pour le profil manuel Alpine/WSL, voir les instructions séparées.
bash mitigate.sh --audit
sudo bash mitigate.sh --audit --json
L'audit ne fait que lire les métadonnées et les paramètres. Il ne scanne pas le réseau, ne lance pas d'exploit, ne télécharge pas de mises à jour et ne modifie pas le firewall. Sans root, une partie des résultats sera UNKNOWN. Le rapport peut contenir des noms d'interfaces et des PID ; anonymisez-le avant publication.
| Champ JSON | Signification |
|---|---|
patch.state | PATCHED, VULNERABLE ou UNKNOWN pour le noyau en cours d'exécution |
enforcement.enforcement | ACTIVE_VERIFIED uniquement en cas de correspondance exacte des deux tables |
persistence.state | CONFIGURED — unit activé ; un redémarrage réel n'est pas vérifié par cela |
coverage.state | PARTIAL_OR_UNKNOWN : namespaces/CNI/NetLabel nécessitent une analyse séparée |
rollback_timer, monitor_timer | État du retour arrière automatique et de la surveillance optionnelle |
schema_version: 1. Le code de sortie 0 de --audit signifie que la collecte du rapport est terminée, non l'absence de vulnérabilité. Vérifiez les champs indépendants et reason.
L'évaluation du patch met en correspondance le noyau en cours d'exécution avec le paquet exact. Les vendor-baselines intégrés ont été vérifiés le 01.11.2026 uniquement pour Debian 12/13 : linux 6.1/6.12 et bookworm linux-6.12. Ils sont basés sur le
Debian tracker.
Pour les autres branches, Ubuntu, WSL et les distributions non vérifiées, le résultat reste
UNKNOWN, et n'est pas déduit du numéro uname ni d'une seule
mention de la CVE dans le changelog. Pour les vendor trackers connus, le rapport contient un lien.
Il s'agit d'une confiance dans les métadonnées du paquet, pas d'une attestation du binaire ;
les custom kernels et livepatch sont vérifiés séparément.
L'audit est limité à 32 netns visibles : il affiche le nombre d'écouteurs MPTCP, mais ne
prouve pas la couverture des namespaces. CIPSO reste UNKNOWN en l'absence de données
suffisantes ; l'absence de netlabelctl ne prouve pas l'absence de labeling.
Téléchargez d'abord et lisez le code. N'utilisez pas curl | sudo bash.
git clone https://github.com/ZombiePm/cve-2026-98432-mitigation.git
cd cve-2026-98432-mitigation
less mitigate.sh
sudo bash mitigate.sh --check
sudo bash mitigate.sh --apply
Lors de la détection d'une politique NetLabel/CIPSO ou MLS, l'application s'arrête avant les modifications d'installation. Après analyse de compatibilité, confirmation explicite du risque :
sudo bash mitigate.sh --apply --accept-ipv4-options-risk
Ce flag accepte le risque de perturber le trafic légitime avec des options IP, plutôt que
d'étendre la protection. Si aucun signe de labeling n'est trouvé, la compatibilité est tout de même
indiquée comme UNKNOWN.
Après --apply, un retour arrière automatique après 180 secondes s'applique.
Conservez le terminal actuel. Ouvrez une nouvelle connexion SSH vers le serveur et vérifiez
les services critiques depuis l'extérieur : VPN, sites, API, messagerie, échanges de cluster.
Si tout fonctionne, depuis la nouvelle connexion :
cd cve-2026-98432-mitigation
sudo bash mitigate.sh --status
sudo bash mitigate.sh --confirm
--confirm annule le minuteur de restauration. Sans cela, la protection sera supprimée automatiquement.
Après confirmation, systemd chargera le filtre au prochain démarrage du serveur.
Ne redémarrez pas le serveur avant confirmation ou restauration manuelle.
Appliquez nœud par nœud. Pour Kubernetes et les clusters, assurez-vous d'abord de la conservation de la connectivité, puis passez au nœud suivant.
sudo bash mitigate.sh --status
sudo nft list table inet cve_2026_98432_guard
sudo nft list table bridge cve_2026_98432_guard
systemctl status cve-2026-98432-guard.service
journalctl -u cve-2026-98432-guard.service --no-pager
Le compteur packets 0 signifie l'absence de paquets correspondants, et non l'absence de protection.
Vérification séparée des programmes utilisant MPTCP :
sudo ss -Mlnp