
Script per verificare se i sistemi sono vulnerabili a cve-2026-23111
CVE-2026-23111 è una vulnerabilità del kernel Linux in nf_tables che può essere sfruttata per l'escalation locale dei privilegi da parte di un utente non privilegiato su sistemi in cui gli user namespace e nftables sono disponibili.[1][2] I bollettini pubblici dei vendor e governativi la descrivono come un problema locale che interessa le distribuzioni Linux e sottolineano l'applicazione delle patch come soluzione primaria.[3][4]
Questo repository contiene uno script di validazione difensiva progettato per aiutare a valutare se un host espone le condizioni tecniche associate a questa CVE senza fornire un exploit per l'escalation dei privilegi. Verifica le condizioni rilevanti del kernel e del runtime, carica opzionalmente il modulo nf_tables per test funzionali completi, tenta un percorso di validazione controllato non privilegiato usando unshare e nft, raccoglie tracce diagnostiche locali e classifica l'host in verdetti operativi come "probabilmente sicuro", "bloccato da policy locale" o "percorso esposto disponibile".[1][5]
Secondo l'NVD, CVE-2026-23111 è una vulnerabilità nf_tables del kernel Linux risolta come correzione di un bug logico in netfilter ed è sfruttabile per l'escalation locale dei privilegi da parte di un utente non privilegiato tramite user namespace e nftables sulle configurazioni interessate.[1] L'avviso di sicurezza di Ubuntu descrive lo stesso percorso di sfruttamento ad alto livello e traccia gli stati dei pacchetti interessati e corretti per release.[2]
Red Hat dichiara che un utente locale con privilegi bassi potrebbe sfruttare il problema per causare denial of service o potenzialmente ottenere l'escalation dei privilegi, e documenta un percorso di mitigazione basato sull'impedire il caricamento del modulo nf_tables quando ciò è operativamente accettabile.[3] Anche le linee guida a livello nazionale del Canadian Centre for Cyber Security indirizzano le organizzazioni colpite agli aggiornamenti dei vendor e menzionano la rigenerazione dell'initramfs quando vengono utilizzate mitigazioni di blocco dei moduli.[4]
Lo script è pensato per la valutazione difensiva dell'esposizione, non per lo sfruttamento. È progettato per:
CONFIG_USER_NS e CONFIG_NF_TABLES risultano presenti.[1]kernel.unprivileged_userns_clone e user.max_user_namespaces per stimare se gli user namespace non privilegiati sono disponibili.install nf_tables /bin/false) o una blacklist debole per il modulo nf_tables./proc/kallsyms per il simbolo vulnerabile (nft_map_catchall_activate) rispetto al simbolo post-patch (nft_catchall_set_activate) prima di qualsiasi interazione con il modulo.nf_tables tramite modprobe quando viene specificato --allow-load-module (vedi sotto) e scaricarlo automaticamente all'uscita.unshare -U -n --map-root-user + nft quando il modulo è caricato, e registrare stdout, stderr e i log recenti del kernel.unshare --user crei effettivamente un namespace e che CAP_NET_ADMIN sia funzionante al suo interno, per confermare se le restrizioni AppArmor o SELinux sono realmente efficaci.Lo script salva i log in una sottodirectory della directory dello script e li rimuove per impostazione predefinita a meno che non venga usato --keep-logs.
Per impostazione predefinita lo script non carica mai nf_tables. Se il modulo non è già caricato all'avvio dello script, tutti i test funzionali nft vengono saltati e il verdetto deriva esclusivamente dalla versione del kernel, dall'impronta kallsyms, dalla configurazione di modprobe, dal changelog RPM e dalle evidenze di policy sysctl/LSM.
Questa impostazione predefinita conservativa evita di espandere involontariamente la superficie d'attacco sugli host di produzione. Per abilitare test funzionali completi su un sistema controllato o strumentato, usa --allow-load-module come root (vedi sotto).
# Default — no module loading, policy-evidence-only verdict
./check_cve_2026_23111.sh
./check_cve_2026_23111.sh --color
./check_cve_2026_23111.sh --keep-logs
./check_cve_2026_23111.sh --color --keep-logs
# Full functional test — loads (and unloads) nf_tables, requires root
sudo ./check_cve_2026_23111.sh --allow-load-module
sudo ./check_cve_2026_23111.sh --allow-load-module --color --keep-logs
| Opzione | Descrizione |
|---|---|
--allow-load-module | Autorizza lo script a caricare nf_tables tramite modprobe se il modulo non è già caricato. Abilita l'esercitatore completo del percorso catchall nft e il test di efficacia di CAP_NET_ADMIN. Il modulo viene scaricato automaticamente all'uscita. Richiede root. Rifiutato se è già in atto un deny modprobe rigido. Utilizzare solo su sistemi non di produzione o strumentati. |
--color | Abilita l'output stdout colorato quando il terminale lo supporta. |
--keep-logs | Mantiene i log e le tracce nella directory dello script invece di eliminarli all'uscita. |
--help | Stampa le informazioni di utilizzo ed esce. |
--allow-load-moduleUsa --allow-load-module quando hai bisogno del verdetto con la massima affidabilità su una VM di test isolata, non di produzione o dedicata. Scenari tipici:
Non usare --allow-load-module su host di produzione in cui nf_tables è bloccato intenzionalmente o dove il suo caricamento violerebbe una policy di hardening.
--allow-load-modulePrima di tentare di caricare il modulo, lo script applica i seguenti controlli ed esce con un errore se uno di essi fallisce:
install nf_tables /bin/false) non deve essere presente in /etc/modprobe.d/.modprobe deve essere disponibile sul sistema.root (uid 0).Se il modulo viene caricato con successo dallo script, modprobe -r nf_tables viene chiamato all'uscita tramite il trap cleanup(), indipendentemente da come termina lo script (successo, errore o CTRL+C).
Lo script usa verdetti operativi piuttosto che esiti di sfruttamento: