Audite les noyaux Debian/Ubuntu pour CVE-2026-98432 et applique des mesures d'atténuation persistantes via nftables et sysctl, puis guide la mise à niveau et le retour arrière du noyau.
Le script vérifie si le noyau est corrigé pour CVE-2026-98432 (use-after-free dans le traitement TCP IPv4, CVSS 9.8). Si le noyau n'est pas corrigé, il active immédiatement une protection temporaire et aide à installer la mise à jour du noyau.
La protection réduit le risque, mais n'élimine pas la vulnérabilité. La seule solution complète est d'installer un noyau corrigé et de redémarrer. Selon l'évaluation de Red Hat, le filtrage des paquets avec options IP n'exclut pas totalement l'exploitation.
tcp_v4_syn_recv_sock() transmet ireq_opt au socket enfant sans le copier, et inet_sock_destruct() le libère avec un kfree() ordinaire. Un SYN répété, traité à ce moment sur un autre cœur de processeur, accède à une mémoire déjà libérée dans ip_options_build().net.ipv4.tcp_migrate_req=1 ou programme BPF BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.ipv4: free inet_opt and ireq_opt after an RCU grace period (e3f33b0a1d89).| Branche stable | Corrigé dans |
|---|---|
| 5.10 | 5.10.272 |
| 5.15 | 5.15.223 |
| 6.1 | 6.1.190 |
| 6.6 | 6.6.159 |
| 6.12 | 6.12.113 |
| 6.18 | 6.18.56 |
| 7.2 | 7.2.10 |
| mainline | 7.3 |
État dans les distributions au 2 novembre 2026 :
linux 6.1.190-1 (DLA-4841-1) et linux-6.12 6.12.113-1~deb12u1 (DLA-4850-1).linux 6.12.113-1 (DSA-6568-1).prerouting avec priorité raw (−300), c'est-à-dire avant que le noyau ne traite les options. Utilise nftables, ou à défaut iptables avec le module u32.net.mptcp.enabled = 0. Les sockets MPTCP déjà ouverts restent toutefois MPTCP, c'est pourquoi le script les énumère afin que vous redémarriez ces services.net.ipv4.tcp_migrate_req = 0 si la valeur était 1.nftables / netfilter-persistent / firewalld et vérification par minuterie toutes les 5 minutes.Si le noyau en cours d'exécution est déjà corrigé, le script ne modifie rien et indique comment retirer une protection précédemment activée.
nftables (recommandé) ou iptables. La protection permanente nécessite systemd.git clone https://github.com/IgrekLg/cve-2026-98432-mitigation.git
cd cve-2026-98432-mitigation
sudo bash mitigate-cve-2026-98432.sh # аудит, защита, предложение обновить ядро
sudo bash mitigate-cve-2026-98432.sh --status # только посмотреть, ничего не меняя
| Clé | Action |
|---|---|
--status | Afficher uniquement l'état |
--uninstall | Retirer la protection et restaurer les valeurs sysctl d'origine (si le noyau n'est pas corrigé, demandera confirmation) |
-y, --yes | Sans questions : installer la mise à jour du noyau, confirmer --uninstall |
--no-upgrade | Ne pas contacter apt : uniquement audit et protection |
--force | Activer la protection même si le noyau est déjà corrigé |
--keep-mptcp | Ne pas désactiver MPTCP |
--keep-tcp-migrate | Ne pas toucher à net.ipv4.tcp_migrate_req |
S'il n'y a pas de terminal (Ansible, cron, ssh sans -t) et que --yes n'est pas spécifié, la protection est tout de même activée, et l'installation du noyau est ignorée avec une indication.
| Code | Signification |
|---|---|
| 0 | Le noyau en cours d'exécution est corrigé ou non affecté |
| 3 | Le noyau n'est pas corrigé, la protection est active : mise à jour et redémarrage nécessaires |
| 4 | Le noyau n'est pas corrigé, la protection n'est pas active |
| 1 | Erreur |
| 2 | Arguments invalides |
Exemple pour Ansible :
- name: CVE-2026-98432 mitigation
ansible.builtin.script: mitigate-cve-2026-98432.sh --yes
register: cve
failed_when: cve.rc not in [0, 3]
changed_when: false
Les vérifications s'effectuent dans l'ordre :
CVE-2026-98432 ou l'en-tête du commit de correction y est mentionné, le noyau est corrigé.6.1.190-1. La partie amont de la version est comparée au tableau ci-dessus. Debian reçoit les corrections via les mises à jour stable, et le numéro de CVE n'est pas toujours indiqué dans le changelog.5.15.0-NNN) ne reflète pas la branche stable, c'est pourquoi le noyau n'est considéré comme corrigé que d'après le changelog. Sans celui-ci, le statut est « correction non confirmée » et la protection est activée. En complément, pro fix CVE-2026-98432 --dry-run est affiché.uname -r est comparée. Les noyaux candidats (-rc) sont considérés comme inconnus.Le tableau des versions corrigées est intégré au script (FIXED_IN, données au 2026-11-02). Pour les distributions dérivées disposant de leurs propres noyaux (Proxmox, etc.), consultez le bulletin du fournisseur.
| Chemin | Fonction |
|---|---|
/usr/local/sbin/cve-2026-98432-fw | Assistant : apply / ensure / remove / check |
/etc/cve-2026-98432/mitigation.nft | Règle nftables (table ip cve_2026_98432) |
/etc/systemd/system/cve-2026-98432-mitigation.service | Application de la règle au démarrage, avant network-pre.target |
/etc/systemd/system/cve-2026-98432-mitigation-check.{service,timer} | Vérification toutes les 5 minutes, restaure la règle si quelqu'un l'a supprimée (écriture dans syslog) |
/etc/systemd/system/{nftables,netfilter-persistent,firewalld}.service.d/50-cve-2026-98432.conf | Réapplication après le (re)chargement des règles par ces services ; créés uniquement pour ceux qui sont installés |
/etc/sysctl.d/99-zz-cve-2026-98432.conf | sysctl ; le nom est choisi pour que le fichier soit lu après /etc/sysctl.conf |
/var/lib/cve-2026-98432/sysctl.orig | Valeurs sysctl d'origine pour --uninstall |