
Elimina i pacchetti TCP IPv4 in ingresso il cui header IP contiene opzioni.
Elimina i pacchetti TCP IPv4 in ingresso il cui header IP contiene opzioni.
Un piccolo rimedio temporaneo e reversibile con iptables per CVE-2026-98432.
Elimina i pacchetti TCP IPv4 contenenti opzioni IP nel namespace di rete corrente. Include un output di stato chiaro, comandi apply/remove ripetibili, un inventario in sola lettura, un servizio systemd opzionale e un controllo delle connessioni separato.
Versione: 1.0.0 · Data di revisione: 30 ottobre 2026 · Requisiti: Linux + Bash + iptables
Questo è un filtraggio comunitario, non una correzione del kernel né una soluzione temporanea completa certificata dal fornitore. La presenza di una regola non dimostra la resistenza agli exploit. Installare un kernel corretto dal fornitore e avviarlo, oppure utilizzare una livepatch supportata che copra esplicitamente questa CVE.
Estrarre lo ZIP, aprire un terminale in questa directory, quindi:
# 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
Mantieni aperta la tua sessione SSH e verifica che una seconda connessione SSH e i tuoi normali servizi funzionino ancora. I client che richiedono le opzioni IP IPv4 possono essere interessati.
Annulla:
sudo bash paranoid-cve98432.sh remove
Vengono rimosse solo le regole esatte con tag di questo strumento. Le altre regole del firewall e tutte le impostazioni sysctl vengono preservate. Le regole installate manualmente in precedenza, inclusa la regola senza tag della nostra conversazione, non vengono rimosse né adottate.
| Dipendenza | Scopo |
|---|---|
| Bash | Runtime dello script |
iptables con la tabella IPv4 raw, i match u32 e comment | Filtraggio dei pacchetti |
Root e CAP_NET_ADMIN | Applicazione, stato e rimozione |
flock, stat, mkdir | Serializzazione delle modifiche tramite una directory privata sotto /run |
iproute2 (ss) | Inventario opzionale dei listener |
| Python 3.8+ | Helper opzionale di verifica |
| Python 3.9+ | Suite di test offline |
| systemd | Solo persistenza opzionale all'avvio |
Pacchetti tipici su Ubuntu/Debian:
sudo apt install iptables util-linux iproute2 python3
Sui sistemi della famiglia RHEL il pacchetto che fornisce il comando iptables varia in base alla
release. Verificare con dnf provides '*/iptables'. Questo strumento non installa pacchetti
né modifica il backend iptables selezionato.
Alcune installazioni di iptables-nft non supportano u32 nella loro configurazione attuale.
Se l'inserimento fallisce, lo strumento segnala un errore e annulla le proprie nuove regole.
Non cambiare ciecamente i backend del firewall su un server in esecuzione; utilizzare un equivalente
nativo nftables integrato con il firewall esistente.
Esattamente queste regole, con un commento utilizzato per identificarle:
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
Il primo byte di un header IPv4 contiene la versione e l'Internet Header
Length (IHL). Cinque parole da 32 bit corrispondono a un header normale di 20
byte. Un IHL da 6 a 15 indica la presenza di opzioni IP. u32 legge
direttamente quel campo.
PREROUTING filtra il traffico TCP IPv4 in arrivo prima della consegna ai
listener.OUTPUT filtra anche il traffico generato localmente, compresi i tentativi
di raggiungere listener locali. Può anche scartare le risposte in uscita che
trasportano opzioni IP.Queste sono opzioni IP IPv4, un campo dell'header diverso dalle opzioni TCP. Il normale traffico SSH, HTTPS e altro traffico privo di opzioni IP è escluso dalla corrispondenza.
Applicare due volte non aggiunge altre copie. Se la seconda inserzione fallisce,
viene eseguito il rollback solo delle regole tentate da quella invocazione; le
regole esatte preesistenti vengono mantenute. remove elimina anche i duplicati
delle regole esatte di questo strumento. Le invocazioni concorrenti di questo
strumento vengono serializzate. Un gestore di firewall non correlato può
comunque modificare le regole nello stesso momento.
L'advisory upstream descrive un use-after-free delle opzioni IPv4 di request/socket mentre viene costruito un SYN-ACK o viene migrata una request. La correzione modifica due distruttori per rinviare la liberazione tramite RCU.
Filtrare i pacchetti in ingresso con opzioni IP impedisce che le consuete opzioni fornite dai pacchetti raggiungano TCP sui percorsi coperti da questi hook. Questa è la base di questa soluzione tampone. Si tratta di una mitigazione basata sull'analisi, non della riproduzione di un exploit completo né di una garanzia contro ogni percorso verso il codice vulnerabile.
Verifica questi limiti:
| Situazione | Limite / azione |
|---|---|
| Container, network namespace, namespace VPN | Le regole sono per namespace. Le regole dell'host non coprono il traffico confinato in un altro namespace. Ispeziona e applica all'interno di ogni namespace rilevante. I container condividono il kernel dell'host. |
| Bridge Linux / forwarding di livello 2 | Queste regole IPv4 non costituiscono una policy completa per i bridge. Assicurati che i namespace di destinazione siano coperti; usa regole della famiglia bridge se quel percorso di forwarding necessita di filtraggio. |
| Tunnel | Verifica il filtraggio sul percorso IPv4 interno decodificato. Un pacchetto esterno cifrato non espone le opzioni IP interne al filtro esterno. |
| NetLabel / CIPSO con SELinux o Smack | CIPSO può popolare le opzioni della request tramite un percorso di labeling del kernel. Non considerare il filtraggio degli header in ingresso come copertura per quel percorso. Il solo fatto che SELinux sia abilitato non dimostra che CIPSO sia configurato. |
| Socket esistenti o request in sospeso | Aggiungere un filtro non equivale a una pulizia o a una patch degli oggetti del kernel già creati. |
| Ricariche del firewall | Una ricarica, un ripristino, un orchestratore di container o un amministratore possono rimuovere o riordinare le regole. Ricontrolla lo stato e riapplica. |
| Regole terminanti preesistenti nella tabella raw | Le nuove regole vengono inserite in posizione 1, ma successive modifiche alle regole possono collocare una regola terminante prima di esse. Ispeziona l'ordine. |
| Un client che richiede opzioni IP | Le sue connessioni possono smettere di funzionare. Ciò include deployment specializzati di security labeling. |
| IPv6 | Queste regole non filtrano IPv6 né affrontano i problemi di migrazione IPv6/CALIPSO tracciati separatamente. |
Non viene automaticamente dichiarato che il kernel è correttamente aggiornato in base a una stringa di versione, a una menzione nel changelog, a un output vuoto dei listener o a un contatore di pacchetti pari a zero. I kernel dei vendor applicano backport delle correzioni e dispongono di varianti separate generic, cloud, HWE e altre. Un nuovo kernel installato non è necessariamente il kernel in esecuzione.