
Verifica se un sistema Linux è interessato da CVE-2026-99999 (PwnEscape) e stampa o applica la correzione del kernel specifica per la distribuzione
English | 한국어
Un singolo script shell che verifica se un sistema Linux è interessato da CVE-2026-99999 ("PwnEscape"). Spiega il verdetto, quindi stampa i passaggi di patch per quella distribuzione oppure applica la patch e riavvia il sistema per te.
I dati del fornitore incorporati nello script sono aggiornati al 2026-10-20. Gli avvisi cambiano rapidamente, quindi verifica sempre con il security tracker della tua distribuzione.
| Componente | Stack IPv4 del kernel Linux (skb_checksum_help → ip_do_fragment) |
| Causa | checksum_start / csum_offset forniti tramite l'header virtio-net o i packet socket non vengono validati rispetto all'header IPv4. Il completamento del checksum può quindi sovrascrivere la lunghezza dell'header già validata (CWE-20). |
| Impatto | VM guest → host: divulgazione della memoria dell'host, crash dell'host, esecuzione di codice come root sull'host |
| Gravità | CVSS 3.1 9.3 Critica (kernel CNA) · 8.8 Importante (Red Hat) |
| Interessati | Tutti i kernel dalla versione 2.6.27 |
| Correzione | Commit upstream 6785011f8b16 "ipv4: validate checksum_start before completing checksum" |
| Workaround | Nessuno pubblicato. L'unica correzione è avviare un kernel corretto. |
Il rischio principale riguarda gli host di virtualizzazione che eseguono guest non attendibili (KVM/QEMU, Firecracker, Proxmox, host cloud e VPS). Applicare la patch al kernel di un guest non protegge l'host.
| File | Descrizione |
|---|---|
scanner-cve-2026-99999.sh | Lo scanner, output in inglese |
scanner-cve-2026-99999_kr.sh | Lo stesso scanner, output in coreano |
Entrambi i file contengono la stessa logica; differiscono solo i messaggi e i commenti.
| File | SHA-256 | MD5 |
|---|---|---|
scanner-cve-2026-99999.sh | 65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 | 8ab38c22ed737986775f6f64f5a800aa |
scanner-cve-2026-99999_kr.sh | 05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 | 6223f8db3c1a8dec361fe301a7193ff4 |
Verifica il file prima di eseguirlo:
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
echo "8ab38c22ed737986775f6f64f5a800aa scanner-cve-2026-99999.sh" | md5sum -c
Questi valori si riferiscono ai file nella release v1.0.0. I file nei commit successivi potrebbero differire.
Dalla release (consigliato):
curl -LO https://github.com/sqzer-x/cve-2026-99999-scanner/releases/download/v1.0.0/scanner-cve-2026-99999.sh
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
sudo bash scanner-cve-2026-99999.sh
O dal repository:
git clone https://github.com/sqzer-x/cve-2026-99999-scanner.git
cd cve-2026-99999-scanner
sudo bash scanner-cve-2026-99999.sh
Eseguilo sull'host, non all'interno di un container. Il controllo funziona come utente normale; root (tramite sudo) è necessario solo per l'opzione 1 del menu.
Rileva la distribuzione (/etc/os-release) e il kernel in esecuzione (/proc).
Valuta il kernel:
Verifica la presenza di una livepatch applicata (kpatch, Canonical Livepatch, SUSE kernel-livepatch, Ksplice), di un kernel corretto installato ma non ancora avviato, e se il kernel del prossimo avvio è corretto.
Segnala indicatori di esposizione: /dev/kvm, vhost_net, dispositivi TUN/TAP, processi VM (QEMU, Firecracker, kvm di Proxmox, ...), impostazioni dei namespace utente.
Se il sistema non è sicuro, offre un menu:
1. Patch now (install the fixed kernel and reboot)
2. Patch manually later (show the commands)
3. Exit
Quando non viene eseguito da un terminale (cron, pipe, output reindirizzato a un file), non viene mostrato alcun menu e si comporta come l'opzione 2.
| Opzione | Descrizione |
|---|---|
-l, --list | Stampa solo la tabella di stato per distribuzione |
--no-color | Disabilita l'output colorato (NO_COLOR è anch'esso rispettato) |
--os-release FILE | Usa questo file os-release invece di /etc/os-release |
--uname-r STRING | Valuta questa versione del kernel invece di quella in esecuzione (salta i controlli locali) |
--uname-v STRING | Stringa di build del kernel (uname -v), necessaria per i kernel Debian con --uname-r |
-h, --help | Mostra l'aiuto |
| Codice | Significato |
|---|---|
| 0 | Sicuro (corretto, non interessato o livepatchato) |
| 1 | Vulnerabile — è disponibile un kernel corretto |
| 2 | Kernel corretto installato — riavvio necessario |
| 3 | Vulnerabile — nessuna correzione dal fornitore ancora, o fine vita |
| 4 | Indeterminato (kernel sconosciuto, in esecuzione all'interno di un container, ...) |
I codici di uscita lo rendono utilizzabile da sistemi di gestione della configurazione o di monitoraggio:
bash scanner-cve-2026-99999.sh --no-color > report.txt; echo "exit code: $?"
Il verdetto può essere calcolato per valori raccolti altrove, ad esempio da un container o da un inventario:
# On the target: uname -r ; uname -v ; cat /etc/os-release > os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 5.14.0-570.12.1.el9_6.x86_64 --os-release os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 6.1.0-38-amd64 \
--uname-v '#1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-08-02)' --os-release os-release.txt
bash scanner-cve-2026-99999.sh --list stampa la stessa tabella.