
Verifica i kernel Debian/Ubuntu per CVE-2026-98432 e applica mitigazioni persistenti tramite nftables e sysctl, quindi guida all'aggiornamento e al rollback del kernel.
Lo script verifica se il kernel è stato corretto per CVE-2026-98432 (use-after-free nella gestione del TCP IPv4, CVSS 9.8). Se il kernel non è corretto, attiva immediatamente una protezione temporanea e aiuta a installare l'aggiornamento del kernel.
La protezione riduce il rischio, ma non elimina la vulnerabilità. La soluzione completa è una sola: installare il kernel corretto e riavviare. Secondo la valutazione di Red Hat, il filtraggio dei pacchetti con opzioni IP non esclude completamente lo sfruttamento.
tcp_v4_syn_recv_sock() passa ireq_opt al socket figlio senza copiarlo, e inet_sock_destruct() lo libera con un normale kfree(). Un SYN ripetuto, che in quel momento viene gestito su un altro core del processore, accede alla memoria già liberata in ip_options_build().net.ipv4.tcp_migrate_req=1 o programma BPF BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.ipv4: free inet_opt and ireq_opt after an RCU grace period (e3f33b0a1d89).| Ramo stable | Corretto in |
|---|---|
| 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 |
Stato nelle distribuzioni al 2 novembre 2026:
linux 6.1.190-1 (DLA-4841-1) e linux-6.12 6.12.113-1~deb12u1 (DLA-4850-1).linux 6.12.113-1 (DSA-6568-1).prerouting con priorità raw (−300), cioè prima che il kernel analizzi le opzioni. Viene utilizzato nftables e, se non è disponibile, iptables con il modulo u32.net.mptcp.enabled = 0. I socket MPTCP già aperti restano tuttavia MPTCP, perciò lo script li elenca affinché possiate riavviare questi servizi.net.ipv4.tcp_migrate_req = 0, se il valore era 1.nftables / netfilter-persistent / firewalld e verifica tramite timer ogni 5 minuti.Se il kernel in esecuzione è già corretto, lo script non modifica nulla e suggerisce come rimuovere la protezione precedentemente attivata.
nftables (consigliato) o iptables. Per la protezione permanente è necessario 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 # только посмотреть, ничего не меняя
| Chiave | Azione |
|---|---|
--status | Mostra solo lo stato |
--uninstall | Rimuove la protezione e ripristina i valori sysctl originali (se il kernel non è corretto, chiederà conferma) |
-y, --yes | Senza domande: installa l'aggiornamento del kernel, conferma --uninstall |
--no-upgrade | Non contattare apt: solo audit e protezione |
--force | Abilita la protezione anche se il kernel è già corretto |
--keep-mptcp | Non disabilitare MPTCP |
--keep-tcp-migrate | Non toccare net.ipv4.tcp_migrate_req |
Se non è disponibile un terminale (Ansible, cron, ssh senza -t) e non è specificato --yes, la protezione viene comunque attivata, mentre l'installazione del kernel viene saltata con un suggerimento.
| Codice | Significato |
|---|---|
| 0 | Il kernel in esecuzione è corretto o non interessato |
| 3 | Kernel non corretto, protezione attiva: sono necessari aggiornamento e riavvio |
| 4 | Kernel non corretto, protezione non attiva |
| 1 | Errore |
| 2 | Argomenti non validi |
Esempio per 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
I controlli vengono eseguiti in ordine:
CVE-2026-98432 o il titolo del commit correttivo, il kernel è corretto.6.1.190-1. La parte upstream della versione viene confrontata con la tabella sopra. Debian riceve le correzioni tramite gli aggiornamenti stable, e nel changelog il numero CVE non è sempre indicato.5.15.0-NNN) non riflette il ramo stable, quindi il kernel è considerato corretto solo in base al changelog. In sua assenza lo stato è «correzione non confermata» e la protezione viene attivata. In aggiunta viene mostrato pro fix CVE-2026-98432 --dry-run.uname -r. I kernel candidati (-rc) sono considerati sconosciuti.La tabella delle versioni corrette è incorporata nello script (FIXED_IN, dati al 2026-11-02). Per le distribuzioni derivate con kernel propri (Proxmox e altre) consultare il bollettino del fornitore.
| Percorso | Scopo |
|---|---|
/usr/local/sbin/cve-2026-98432-fw | Helper: apply / ensure / remove / check |
/etc/cve-2026-98432/mitigation.nft | Regola nftables (tabella ip cve_2026_98432) |
/etc/systemd/system/cve-2026-98432-mitigation.service | Applicazione della regola all'avvio, prima di network-pre.target |
/etc/systemd/system/cve-2026-98432-mitigation-check.{service,timer} | Controllo ogni 5 minuti, ripristina la regola se qualcuno l'ha rimossa (scrittura in syslog) |
/etc/systemd/system/{nftables,netfilter-persistent,firewalld}.service.d/50-cve-2026-98432.conf | Riapplicazione dopo il (ri)caricamento delle regole da parte di questi servizi; creati solo per quelli installati |
/etc/sysctl.d/99-zz-cve-2026-98432.conf | sysctl; il nome è scelto in modo che il file venga letto dopo /etc/sysctl.conf |
/var/lib/cve-2026-98432/sysctl.orig | Valori sysctl originali per --uninstall |
I file della versione precedente dello script (mitigate-CVE-2026-98432.service, 99-CVE-2026-98432.conf e i duplicati della regola iptables) vengono rimossi automaticamente.