Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE_2026_31694 — Scanner passivo di vulnerabilità per host Linux per CVE-2026-31694: verifica il kernel in esecuzione, la configurazione FUSE, i metadati dei pacchetti e le evidenze delle patch, quindi genera indicazioni di mitigazione personalizzate. | Kitploit
Strumenti/GitHubGitHub/zenzue/cve_2026_31694
Strumenti DifensiviScanner di VulnerabilitàAnalisi delle VulnerabilitàAudit di Configurazione
GitHubzenzue/cve_2026_31694

CVE_2026_31694

Scanner passivo di vulnerabilità per host Linux per CVE-2026-31694: verifica il kernel in esecuzione, la configurazione FUSE, i metadati dei pacchetti e le evidenze delle patch, quindi genera indicazioni di mitigazione personalizzate.

Vedi Repository
23 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Scanner passivo per CVE-2026-31694

Uno strumento passivo di valutazione degli host Linux per CVE-2026-31694, una scrittura out-of-bounds nella cache readdir di FUSE nel kernel Linux.

Lo scanner valuta il kernel in esecuzione, l'esposizione a FUSE, i metadati dei pacchetti locali, le evidenze del sorgente del kernel, l'ambiente di esecuzione e la famiglia del sistema operativo. Quando l'host potrebbe essere interessato, genera una guida alla mitigazione personalizzata per la distribuzione rilevata.

Autore: Aung Myat Thu [w01f]


Indice

  • Panoramica
  • Riepilogo della vulnerabilità
  • Modello di sicurezza
  • Funzionalità
  • Requisiti
  • Installazione
  • Utilizzo
  • Opzioni della riga di comando
  • Flusso di valutazione
  • Verdetti
  • Codici di uscita
  • Origini di rilevamento
  • Supporto distribuzioni
  • Generazione delle mitigazioni
  • Comportamento in container e WSL
  • Formati di report
  • Automazione e integrazione
  • Indicazioni operative
  • Limitazioni
  • Risoluzione dei problemi
  • Riferimenti

Panoramica

cve_2026_31694_scanner.py è un'utilità locale di valutazione delle vulnerabilità non basata su exploit.

Non conferma la vulnerabilità attivando il percorso di codice FUSE interessato. Combina invece molteplici indicatori passivi:

  • versione del kernel in esecuzione;
  • baseline delle versioni corrette a monte;
  • dimensione corrente delle pagine di memoria;
  • configurazione del kernel CONFIG_FUSE_FS;
  • tipi di filesystem FUSE registrati;
  • presenza di /dev/fuse e accesso per l'utente corrente;
  • disponibilità dell'helper di montaggio FUSE;
  • mount FUSE attivi;
  • ispezione del sorgente del kernel installato;
  • proprietà dei pacchetti del kernel;
  • evidenze dal changelog dei pacchetti locali;
  • metadati memorizzati nella cache degli aggiornamenti dei pacchetti;
  • confronto tra kernel installato e kernel in esecuzione;
  • rilevamento della distribuzione e del gestore di pacchetti;
  • rilevamento di container, macchine virtuali e WSL.

Il risultato è una valutazione dell'esposizione, non una prova basata su exploit.


Riepilogo della vulnerabilità

CVE-2026-31694 riguarda la cache readdir di FUSE del kernel Linux.

La logica vulnerabile calcola la dimensione serializzata di una voce di directory a partire da una lunghezza del nome controllata dal server e copia il record in una singola pagina della page cache. Una voce di directory con una lunghezza del nome di 4095 può produrre una dimensione serializzata di 4120 byte.

Su un sistema con pagine da 4096 byte, quel record supera una pagina di 24 byte.

La correzione a monte rifiuta i record di directory che non possono stare in una singola pagina prima che avvenga la copia nella cache.

Componente interessato```text

fs/fuse/readdir.c fuse_add_dirent_to_cache()

root@kitploit:~
### Dati di baseline dello scanner

Lo scanner contiene le seguenti baseline di correzione dei rami stabili upstream:

| Serie del kernel | Baseline di correzione |
|---|---:|
| 5.10 | 5.10.258 |
| 5.15 | 5.15.209 |
| 6.1 | 6.1.175 |
| 6.6 | 6.6.136 |
| 6.12 | 6.12.84 |
| 6.18 | 6.18.25 |
| 7.0 | 7.0.2 |
| Mainline | 7.1 o successiva |

Queste versioni sono utilizzate come un input della valutazione. Non sono considerate l'unica fonte di verità perché i vendor delle distribuzioni potrebbero effettuare il backport della correzione mantenendo un numero di versione upstream più vecchio.

---

## Modello di sicurezza

Lo scanner è progettato per evitare di invocare l'operazione vulnerabile.

### Lo scanner non

- monta un filesystem FUSE;
- apre o comunica con `/dev/fuse`;
- avvia un server FUSE;
- invia record di directory appositamente costruiti;
- alloca memoria per test di posizionamento delle pagine;
- prepara gli allocatori del kernel;
- modifica `/etc/passwd`;
- modifica la configurazione del kernel;
- carica o scarica moduli del kernel;
- modifica i permessi di `/dev/fuse`;
- installa o rimuove pacchetti;
- riavvia il sistema;
- tenta l'escalation dei privilegi.

### Lo scanner può

- leggere file in `/proc`, `/boot`, `/lib/modules`, `/usr/lib/modules`, `/usr/src` e nelle directory dei metadati dei pacchetti;
- eseguire query sui pacchetti limitate e di sola lettura;
- ispezionare i mount attivi e la registrazione dei filesystem;
- scrivere un report solo quando `--output` viene fornito esplicitamente;
- stampare comandi di mitigazione per la revisione dell'amministratore.

I comandi di mitigazione sono output documentale. Non vengono mai eseguiti automaticamente.

---

## Funzionalità

### Identificazione di host e kernel

- Legge `platform.release()` e analizza la versione del kernel in stile upstream.
- Legge `/etc/os-release` o `/usr/lib/os-release`.
- Rileva l'architettura della CPU e la dimensione delle pagine di memoria.
- Identifica se il kernel analizzato appartiene al sistema operativo corrente.

### Valutazione dell'esposizione FUSE

- Legge `CONFIG_FUSE_FS` dalle fonti di configurazione del kernel disponibili.
- Rileva il supporto FUSE integrato e le configurazioni di modulo caricabile.
- Legge `/proc/filesystems`.
- Controlla i metadati di `/dev/fuse` e l'accesso in lettura/scrittura per l'utente corrente.
- Individua `fusermount3` o `fusermount`.
- Analizza i mount FUSE attivi da `/proc/self/mountinfo`.

### Evidenza della patch

- Confronta la versione in esecuzione con le baseline di correzione upstream.
- Cerca nel sorgente del kernel installato il controllo per i record sovradimensionati.
- Controlla i changelog locali dei pacchetti RPM o Debian per:
  - `CVE-2026-31694`;
  - il titolo della patch upstream.

### Stato dei pacchetti e del riavvio

- Tenta di identificare il pacchetto proprietario del kernel in esecuzione.
- Interroga i metadati locali del gestore pacchetti senza aggiornare i repository.
- Rileva un kernel installato più recente quando l'ambiente host è autorevole.
- Controlla `/var/run/reboot-required` dove applicabile.

### Consapevolezza dell'ambiente

- Rileva container compatibili con Docker.
- Rileva container compatibili con Podman.
- Rileva cgroups relativi ai container.
- Rileva WSL.
- Rileva macchine virtuali usando `systemd-detect-virt` quando disponibile.

### Reportistica

- Output di testo leggibile.
- Output JSON leggibile da macchina.
- Output di report in Markdown.
- Output di sole mitigazioni.
- Output opzionale su file.
- Codici di uscita del processo significativi.

---

## Requisiti

### Richiesti

- Linux per la valutazione del kernel.
- Python 3.9 o successivo.
- Accesso in lettura ai normali metadati di sistema.

Lo scanner utilizza solo la libreria standard di Python.

### Comandi opzionali

Ulteriori evidenze vengono raccolte quando sono presenti i seguenti strumenti:

| Tool | Scopo |
|---|---|
| `dpkg-query` | Rilevamento della proprietà del pacchetto kernel e dei changelog su Debian/Ubuntu |
| `rpm` | Ispezione della proprietà dei pacchetti e dei changelog su Fedora/RHEL/SUSE |
| `pacman` | Metadati dei pacchetti e degli aggiornamenti del kernel per la famiglia Arch |
| `apt` | Query sugli aggiornamenti in cache per la famiglia Debian |
| `dnf` o `dnf5` | Query sugli aggiornamenti in cache per Fedora/RHEL |
| `zypper` | Query sulle patch CVE in cache per SUSE |
| `apk` | Query su pacchetti/aggiornamenti per Alpine |
| `systemd-detect-virt` | Rilevamento di container e macchine virtuali |

Per la scansione normale non sono richiesti privilegi di root.

Alcune evidenze potrebbero non essere disponibili per un account senza privilegi a causa di permessi dei file specifici del sistema.

---

## Installazione

Posiziona lo scanner in una directory di lavoro:```bash
chmod +x cve_2026_31694_scanner.py

Eseguilo direttamente:```bash ./cve_2026_31694_scanner.py

root@kitploit:~
Oppure invocalo con Python:```bash
python3 cve_2026_31694_scanner.py

Nessuna installazione di pacchetti Python è richiesta.


Utilizzo

Valutazione standard```bash

python3 cve_2026_31694_scanner.py

root@kitploit:~
### Output JSON```bash
python3 cve_2026_31694_scanner.py --format json

L'alias di compatibilità di seguito produce lo stesso formato:```bash python3 cve_2026_31694_scanner.py --json

root@kitploit:~
### Report Markdown```bash
python3 cve_2026_31694_scanner.py --format markdown

Salva un report```bash

python3 cve_2026_31694_scanner.py
--format markdown
--output cve-2026-31694-report.md

root@kitploit:~
### Stampa solo le indicazioni di remediation```bash
python3 cve_2026_31694_scanner.py --mitigation-only

Salta le richieste di aggiornamento dei pacchetti```bash

python3 cve_2026_31694_scanner.py --no-package-query

root@kitploit:~
### Restituisci sempre successo dopo la segnalazione```bash
python3 cve_2026_31694_scanner.py --no-exit-status

Questa opzione è utile quando si raccolgono report senza consentire che lo stato di vulnerabilità possa far fallire un job di orchestrazione.


Opzioni della riga di comando


Flusso di valutazione

Lo scanner valuta le evidenze nel seguente ordine.

1. Rilevamento del sistema operativo e dell'ambiente

Lo scanner determina:

  • se il sistema operativo è Linux;
  • ID e famiglia della distribuzione;
  • gestore dei pacchetti;
  • se il processo è in esecuzione su:
    • un host normale;
    • una macchina virtuale;
    • un container;
    • WSL.

Il rilevamento dell'ambiente modifica l'interpretazione dei dati relativi ai pacchetti e ai riavvii.

Ad esempio, un container può vedere il kernel dell'host ma normalmente non può determinare il pacchetto del kernel dell'host dal filesystem del container.

2. Configurazione FUSE

Lo scanner cerca una configurazione del kernel in esecuzione in:```text /proc/config.gz /boot/config-$(uname -r) /lib/modules/$(uname -r)/build/.config /usr/lib/modules/$(uname -r)/build/.config

root@kitploit:~
Valuta:```text
CONFIG_FUSE_FS=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_FS is not set

Interpretazione:

ValoreSignificato
yFUSE è integrato nel kernel. La blacklist dei moduli non può disabilitarlo.
mFUSE è disponibile come modulo caricabile.

3. Esposizione a runtime

Lo scanner verifica:```text /proc/filesystems /dev/fuse PATH for fusermount3 or fusermount /proc/self/mountinfo

root@kitploit:~
L'assenza di `/dev/fuse` o `fusermount3` riduce l'usabilità immediata nell'ambiente corrente, ma non dimostra che il kernel sia stato patchato.

### 4. Geometria della dimensione di pagina

Il record sovradimensionato documentato è di `4120` byte.

Quando la dimensione della pagina host è di almeno `4120` byte, il record documentato non attraversa un confine di pagina. Lo scanner può segnalare che il sistema non risulta esposto secondo la geometria di pagina documentata.

Questa conclusione si applica solo al record documentato e al comportamento valutato dell'implementazione. Non è un'affermazione generale secondo cui tutti i problemi di sicurezza della memoria di FUSE siano impossibili sui sistemi con pagine più grandi.

### 5. Ispezione del sorgente installato

Quando il sorgente installato è disponibile, lo scanner cerca:```text
fs/fuse/readdir.c

It looks for the affected function and a guard equivalent to rejecting reclen > PAGE_SIZE.

Direct source evidence has higher confidence than version comparison.

The inspected source must correspond to the running kernel for the result to be authoritative. Distribution source trees under /usr/src may represent a different installed kernel.

6. Kernel package evidence

The scanner attempts to map the running kernel image to its owning package using the detected distribution's package database.

Possible mechanisms include:```text dpkg-query -S rpm -qf pacman -Qo apk info -W

root@kitploit:~
Quando un pacchetto viene identificato, i metadati del changelog locale possono essere ispezionati per l'ID CVE o il titolo della patch.

La mancata corrispondenza nel changelog non è una prova di vulnerabilità. I vendor non includono sempre i riferimenti CVE individuali nei changelog installati localmente.

### 7. Confronto con la versione upstream

La versione del kernel analizzata viene confrontata con la tabella baseline fissa dello scanner.

Il confronto delle versioni produce un risultato euristico perché:

- i kernel dei vendor possono contenere backport;
- le revisioni di rilascio dei pacchetti kernel sono specifiche della distribuzione;
- i kernel cloud, real-time, induriti e di abilitazione hardware possono avere tempistiche di patch separate;
- una stringa di versione può rappresentare un branch mantenuto dal vendor piuttosto che una release upstream non modificata.

### 8. Metadati degli aggiornamenti dei pacchetti

Dove supportato, lo scanner esegue query di sola lettura sui metadati locali esistenti.

Non aggiorna i repository.

Esempi:```text
apt list --upgradable
pacman -Qu
dnf --cacheonly --quiet check-upgrade
zypper --no-refresh list-patches --all --cve=CVE-2026-31694
apk version -l <

Un risultato che mostra che non è disponibile alcun aggiornamento è aggiornato solo quanto i metadati del repository in cache.

9. Stato di riavvio

Su un host normale o una macchina virtuale, lo scanner confronta il kernel in esecuzione con i kernel installati rilevati e verifica il marcatore di riavvio utilizzato dai sistemi della famiglia Debian.

All'interno di un container o di un guest WSL, questo controllo è indicato come controllato dall'host anziché confrontare i file del guest con il kernel dell'host.

10. Generazione del verdetto

La precedenza delle prove è approssimativamente:

  1. prove dirette di patch dal sorgente o dal pacchetto;
  2. FUSE disabilitato;
  3. geometria di pagina documentata non esposta;
  4. baseline upstream corretta o non interessata;
  5. versione upstream potenzialmente interessata;
  6. prove inconcludenti.

Verdetti

PATCHED

Le prove locali dirette indicano che la correzione esiste.

Esempi:

  • guardia del sorgente corrispondente nel sorgente del kernel pertinente;
  • i metadati del pacchetto kernel locale fanno riferimento alla CVE o alla patch.

La fiducia è generalmente alta, ma l'allineamento tra sorgente e kernel in esecuzione dovrebbe comunque essere verificato.

NOT_EXPOSED

La configurazione rilevata del kernel in esecuzione ha FUSE disabilitato.

Questo è un risultato di esposizione, non una prova che il sorgente del kernel stesso contenga la correzione.

NOT_EXPOSED_BY_DOCUMENTED_PAGE_GEOMETRY

La dimensione della pagina di memoria è sufficiente a contenere il record documentato di 4120 byte senza attraversare il confine di una pagina.

Questo verdetto è limitato alla geometria di vulnerabilità documentata.

UPSTREAM_BASELINE_SAFE

La versione in esecuzione analizzata soddisfa una baseline upstream corretta nota o precede l'implementazione interessata.

La verifica del pacchetto del fornitore rimane preferibile.

POTENTIALLY_VULNERABLE

Il kernel analizzato rientra in un intervallo upstream interessato e non è stata trovata alcuna prova diretta di patch locale.

Questo risultato richiede il controllo dell'avviso di sicurezza del fornitore del sistema operativo prima di dichiarare vulnerabile il kernel installato.

INCONCLUSIVE

Lo scanner non ha potuto ottenere prove sufficienti.

Cause comuni:

  • configurazione del kernel non disponibile;
  • stringa di versione non riconosciuta;
  • sorgente o metadati del pacchetto inaccessibili;
  • distribuzione non supportata;
  • esecuzione all'interno di un container;
  • kernel gestito dall'host;
  • stato del backport del fornitore non disponibile localmente.

NOT_APPLICABLE

Il sistema operativo corrente non è Linux.


Codici di uscita

CodeMeaning
0Prove di patch, baseline upstream sicura o esposizione documentata assente

Esempio:```bash python3 cve_2026_31694_scanner.py status=$?

case "$status" in 0) echo "No actionable exposure detected by the scanner" ;; 1) echo "Potential exposure detected" ;; 2) echo "Assessment inconclusive" ;; 3) echo "Scanner execution failed" ;; esac

root@kitploit:~
Quando viene specificato `--no-exit-status`, lo scanner restituisce `0` dopo aver generato il report.

---

## Fonti di rilevamento

Lo scanner utilizza le seguenti fonti locali, quando disponibili:

| Sorgente | Informazioni |
|---|---|
| `/etc/os-release` | Identità della distribuzione |
| `/usr/lib/os-release` | Identità della distribuzione (fallback) |
| `/proc/version` | Indicatori kernel e WSL |
| `/proc/config.gz` | Configurazione del kernel in esecuzione |
| `/boot/config-*` | Configurazione del kernel |
| `/lib/modules/*/build/.config` | Configurazione di build del kernel |
| `/proc/filesystems` | Filesystem registrati |
| `/proc/self/mountinfo` | Mount FUSE attivi |
| `/proc/1/cgroup` | Indicatori di container |
| `/dev/fuse` | Presenza e permessi del dispositivo |
| `/usr/src/*/fs/fuse/readdir.c` | Prova facoltativa di patch a livello di sorgente |
| `/lib/modules` | Inventario dei kernel installati |
| `/usr/lib/modules` | Inventario dei kernel installati |
| `/boot/vmlinuz-*` | Inventario dei kernel installati |
| `/var/run/reboot-required` | Indicatore di riavvio per la famiglia Debian |
| database dei pacchetti | Proprietà dei pacchetti del kernel |
| changelog dei pacchetti | Prova facoltativa locale di backport |
| cache dei pacchetti | Prova facoltativa di disponibilità di aggiornamenti |

---

## Supporto distribuzioni

### Rilevamento della famiglia di distribuzione

| Famiglia | Distribuzioni riconosciute |
|---|---|
| Ubuntu | Ubuntu, Linux Mint, Pop!_OS, elementary OS, Zorin OS |
| Debian | Debian, Kali Linux, Raspbian, Parrot OS |
| Arch | Arch Linux, Manjaro, Garuda Linux, EndeavourOS, CachyOS |
| Fedora | Fedora Linux |
| RHEL | RHEL, CentOS, Rocky Linux, AlmaLinux, Oracle Linux, Amazon Linux |
| SUSE | openSUSE Tumbleweed, openSUSE Leap, SLES, SLED |
| Alpine | Alpine Linux |
| Gentoo | Gentoo Linux |
| Void | Void Linux |
| NixOS | NixOS |
| Sconosciuta | Guida generica per Linux |

### Supporto per la query di aggiornamento locale

| Famiglia | Query di aggiornamento in sola lettura |
|---|---|
| Debian/Ubuntu | `apt list --upgradable` |
| Arch | `pacman -Qu` |
| Fedora/RHEL | `dnf check-upgrade` in cache |
| SUSE | elenco di patch CVE in cache con `zypper` |
| Alpine | `apk version -l <` |
| Gentoo | Non implementato |
| Void | Non implementato |
| NixOS | Non implementato |
| Sconosciuta | Non implementato |

L'assenza di un aggiornamento visibile localmente non significa che un pacchetto corretto non sia disponibile. I metadati del repository potrebbero essere obsoleti oppure la distribuzione potrebbe non aver ancora pubblicato un pacchetto.

---

## Generazione delle mitigazioni

Le indicazioni di mitigazione vengono selezionate in base a:

- famiglia di distribuzione;
- gestore di pacchetti;
- stato del container o WSL;
- configurazione FUSE;
- disponibilità di `/dev/fuse`;
- mount FUSE attivi;
- stato di riavvio;
- verdetto finale.

Lo scanner stampa i comandi ma non li esegue mai.

### Famiglia Debian e Ubuntu

Sequenza tipica generata:```bash
sudo apt update
sudo apt full-upgrade
sudo reboot

Rivedi la transazione del pacchetto proposta prima di approvarla.

Dopo il riavvio:```bash uname -r python3 cve_2026_31694_scanner.py

root@kitploit:~
### Famiglia Arch e Manjaro

Sequenza tipica generata:```bash
sudo pacman -Syu
sudo reboot

I sistemi della famiglia Arch richiedono un aggiornamento completo del sistema. Non aggiornare i database dei pacchetti con pacman -Sy e poi installare pacchetti selezionati senza completare l'aggiornamento.

Famiglia Fedora e RHEL

Sequenza tipica generata:```bash sudo dnf upgrade --refresh sudo systemctl reboot

root@kitploit:~
Systems using `yum` may receive the corresponding `yum` command.

### Famiglia SUSE

Sequenza tipica generata:```bash
sudo zypper refresh
sudo zypper patch --cve=CVE-2026-31694
sudo zypper patch --category security
sudo systemctl reboot

La patch specifica per la CVE potrebbe non essere disponibile come transazione separata su ogni prodotto SUSE o stato del repository.

Alpine Linux

Sequenza generata tipica:```bash doas apk update doas apk upgrade doas reboot

root@kitploit:~
Il prefisso dei privilegi dipende dal fatto che lo scanner trovi `sudo`, `doas` o una sessione già avviata come root.

### Gentoo Linux

Sequenza tipica generata:```bash
sudo emaint sync -a
sudo emerge --ask --update --deep --newuse @world

L'installazione e l'attivazione del kernel dipendono dal flusso di lavoro del kernel Gentoo configurato sull'host.

Void Linux

Sequenza tipica generata:```bash sudo xbps-install -Suv sudo reboot

root@kitploit:~
### NixOS

Sequenza tipica generata:```bash
sudo nixos-rebuild switch --upgrade
sudo systemctl reboot

Controlli temporanei

Quando la patch non può essere completata immediatamente, lo scanner può suggerire controlli temporanei.

Le raccomandazioni possibili includono:

  • scaricare il modulo FUSE quando non ci sono mount FUSE attivi;
  • inserire nella blacklist un modulo FUSE caricabile;
  • limitare temporaneamente /dev/fuse;
  • rimuovere /dev/fuse dai container non fidati;
  • rimuovere CAP_SYS_ADMIN;
  • evitare container --privileged.

Questi controlli possono interrompere carichi di lavoro legittimi, inclusi:

  • SSHFS;
  • AppImage;
  • mount rclone;
  • portali desktop;
  • strumenti container rootless;
  • filesystem nello spazio utente.

Le restrizioni temporanee non devono sostituire l'installazione di un kernel corretto dal fornitore.


Comportamento di Container e WSL

Container

I container normalmente condividono il kernel dell'host.

Uno scanner eseguito all'interno di un container può rilevare:

  • la versione del kernel dell'host;
  • i metadati dei pacchetti del filesystem del container;
  • nessun pacchetto kernel host corrispondente;
  • nessun /dev/fuse, anche quando l'host ha FUSE abilitato.

Per questo motivo, lo scanner contrassegna le prove dipendenti dall'host come non autorevoli e indirizza la mitigazione all'host del container.

Esegui lo scanner direttamente sull'host per una valutazione autorevole dei pacchetti e del riavvio.

Le linee guida per l'hardening dei container includono la rimozione di:```text --device /dev/fuse --cap-add SYS_ADMIN --privileged

root@kitploit:~
Anche la configurazione Compose equivalente dovrebbe essere revisionata:```yaml
devices:
  - /dev/fuse:/dev/fuse

cap_add:
  - SYS_ADMIN

privileged: true

WSL

Il kernel WSL è gestito da Windows anziché dal pacchetto kernel della distribuzione guest Linux.

Esempio tipico di guida generata:```powershell wsl --update wsl --shutdown

root@kitploit:~
Esegui questi comandi da Windows PowerShell, riavvia la distribuzione e riesegui lo scanner.

L'aggiornamento dei soli pacchetti guest con `apt`, `dnf` o un altro gestore di pacchetti Linux non sostituisce il kernel WSL.

### Macchine virtuali

Una macchina virtuale normalmente possiede il proprio kernel guest. I controlli di aggiornamento e riavvio specifici della distribuzione rimangono applicabili all'interno del guest.

L'host hypervisor dovrebbe essere valutato separatamente.

---

## Formati di report

### Testo

L'output di testo è pensato per l'uso diretto da terminale.```bash
python3 cve_2026_31694_scanner.py --format text

Il rapporto contiene:

  • riepilogo dell'host;
  • controlli delle evidenze;
  • aggiornamenti dei pacchetti quando visibili;
  • verdetto e confidenza;
  • guida alla mitigazione;
  • comandi di verifica;
  • avvertenze;
  • note;
  • codice di uscita.

JSON

L'output JSON contiene il report completo basato su dataclass.```bash python3 cve_2026_31694_scanner.py
--format json
--output report.json

root@kitploit:~
Esempio di selezione dei campi:```bash
python3 cve_2026_31694_scanner.py --format json --no-exit-status |
  python3 -c '
import json
import sys

report = json.load(sys.stdin)
print(report["hostname"])
print(report["verdict"])
print(report["confidence"])
print(report["kernel_release"])
'

Markdown

L'output Markdown è adatto per registri tecnici, ticket e report di valutazione.```bash python3 cve_2026_31694_scanner.py
--format markdown
--output report.md

root@kitploit:~
### Report di sola mitigazione```bash
python3 cve_2026_31694_scanner.py \
  --mitigation-only \
  --format markdown

Con il formato JSON, la modalità solo-mitigazione restituisce l'oggetto di mitigazione anziché il report completo dell'host.


Automazione e Integrazione

Shell gate```bash

#!/usr/bin/env bash

set -u

report="cve-2026-31694-$(hostname)-$(date +%Y%m%d-%H%M%S).json"

python3 cve_2026_31694_scanner.py
--format json
--output "$report"

status=$?

case "$status" in 0) echo "Assessment completed without a potential-vulnerability verdict" ;; 1) echo "Potential CVE-2026-31694 exposure detected: $report" >&2 ;; 2) echo "Assessment inconclusive: $report" >&2 ;; *) echo "Scanner failure: $report" >&2 ;; esac

exit "$status"

root@kitploit:~
### Raccolta dei report senza far fallire un job```bash
python3 cve_2026_31694_scanner.py \
  --format json \
  --output /var/tmp/cve-2026-31694.json \
  --no-exit-status

Esempio di cron```cron

30 3 * * * /usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status

root@kitploit:~
Questo sovrascrive lo stesso file di report. Usa uno script wrapper quando sono necessari report storici.

### Esempio di servizio Systemd```ini
[Unit]
Description=Passive CVE-2026-31694 assessment
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/log

The scanner needs read access to kernel and package metadata. Additional sandbox restrictions may hide evidence and produce an inconclusive report.

Fleet usage

For fleet assessment:

  1. place the script on each Linux host;
  2. execute it locally;
  3. collect JSON output;
  4. group results by:
    • distribution;
    • kernel release;
    • verdict;
    • confidence;
    • environment type;
  5. verify potentially affected hosts against vendor advisories;
  6. patch and reboot;
  7. rescan.

Do not treat a scan from a container image build as a host-kernel assessment.


Operational Guidance

Recommended response to POTENTIALLY_VULNERABLE

  1. Identify the exact running kernel: ```bash uname -r

    root@kitploit:~
  2. Identificare la distribuzione e la versione installate: ```bash cat /etc/os-release

    root@kitploit:~
  3. Verifica lo stato CVE del vendor della distribuzione per il pacchetto kernel esatto e il flavor.

  4. Aggiorna i metadati dei pacchetti.

  5. installa il pacchetto kernel corretto supportato dal vendor.

  6. Riavvia l'host.

  7. Conferma che il kernel in esecuzione è cambiato:

bash uname -r

root@kitploit:~
8. Riesegui lo scanner.

### Risposta consigliata a `INCONCLUSIVE`

Raccogli le prove mancanti:```bash
uname -a
getconf PAGE_SIZE
cat /etc/os-release
grep CONFIG_FUSE_FS /boot/config-"$(uname -r)" 2>/dev/null
cat /proc/filesystems
ls -l /dev/fuse 2>/dev/null
findmnt -t fuse,fuseblk,fusectl

Quindi verifica il pacchetto kernel esatto rispetto all'avviso del fornitore.

Verifica del riavvio

L'installazione di un pacchetto kernel corretto non modifica il kernel attualmente in esecuzione.

Verifica sia il kernel installato che quello in esecuzione, quindi riavvia come necessario.

Esempi:```bash uname -r ls -1 /lib/modules

root@kitploit:~
I sistemi della famiglia Debian possono anche fornire:```bash
test -e /var/run/reboot-required && cat /var/run/reboot-required

Revisione della dipendenza FUSE

Prima di scaricare o bloccare temporaneamente FUSE:```bash findmnt -t fuse,fuseblk,fusectl lsmod | grep '^fuse' ps aux | grep -E '[f]usermount|[s]shfs|[r]clone'

root@kitploit:~
Non rimuovere il modulo mentre sono montati filesystem FUSE attivi.

---

## Limitazioni

### Nessuna conferma di exploit

Lo scanner non innesca intenzionalmente il percorso di codice vulnerabile.

Un verdetto `POTENTIALLY_VULNERABLE` significa che le prove passive disponibili sono coerenti con l'esposizione. Non è una prova che lo sfruttamento avrà successo.

### Backport dei fornitori

I kernel delle distribuzioni spesso includono backport delle correzioni di sicurezza.

Una versione upstream dall'aspetto più vecchio potrebbe essere già stata corretta.

L'avviso del fornitore e la versione esatta del pacchetto sono fonti autorevoli per i kernel gestiti dalla distribuzione.

### Disallineamento dell'albero dei sorgenti

Un albero dei sorgenti trovato in `/usr/src` potrebbe non corrispondere al kernel in esecuzione.

L'evidenza delle patch nei sorgenti dovrebbe essere validata rispetto a:```bash
uname -r

and the source package or build directory used for that exact kernel.

Stale package metadata

The scanner does not refresh repositories.

Package update checks depend on existing local cache state.

Use the generated distribution-specific refresh and upgrade commands for an up-to-date package decision.

Containers

A container sees the host kernel but normally has different package metadata.

Run the scanner on the host.

WSL

Linux guest package state does not determine WSL kernel patch status.

Update WSL from Windows.

Custom kernels

Custom, embedded, appliance, vendor, and self-built kernels may not have package metadata or recognizable version strings.

Inspect the actual source commit or vendor release notes.

Live patching

The scanner does not determine whether a live-patch framework has applied this specific correction to the running kernel.

Use the live-patch vendor's status tools and advisory data.

Secure boot and bootloader state

The scanner does not verify:

  • which kernel the bootloader will select next;
  • whether Secure Boot accepts the installed image;
  • whether a new initramfs was generated correctly;
  • whether the machine successfully rebooted into the expected kernel.

Distributed filesystems and namespaces

The scanner assesses the current process namespace.

Mounts or device access hidden by namespaces may not appear in the report.


Troubleshooting

Kernel configuration could not be determined

Check whether one of these files exists:```bash ls -l /proc/config.gz ls -l /boot/config-"$(uname -r)" ls -l /lib/modules/"$(uname -r)"/build/.config

root@kitploit:~
Alcune distribuzioni non espongono la configurazione corrente tramite `/proc/config.gz`.

### `Running kernel package could not be identified`

Possibili cause:

- in esecuzione all'interno di un container;
- l'immagine del kernel non è presente nel filesystem corrente;
- kernel personalizzato;
- database dei pacchetti non disponibile;
- kernel fornito dalla piattaforma;
- permessi insufficienti.

Controlla:```bash
uname -r
ls -l /boot
ls -l /lib/modules/"$(uname -r)"

La query di aggiornamento pacchetti non rileva aggiornamenti

Aggiorna i metadati dei pacchetti utilizzando la guida alla mitigazione generata, quindi esegui nuovamente lo scanner.

Lo scanner passivo non aggiorna i repository automaticamente.

POTENTIALLY_VULNERABLE dopo l'installazione degli aggiornamenti

Conferma che il nuovo kernel sia in esecuzione:```bash uname -r

root@kitploit:~
Confrontalo con le directory dei kernel installati:```bash
ls -1 /lib/modules

Potrebbe essere ancora necessario un riavvio.

Controlla anche l'avviso del fornitore perché un backport corretto potrebbe non corrispondere alla baseline della versione upstream.

FUSE è integrato nel kernel

Quando il report mostra:```text CONFIG_FUSE_FS=y

root@kitploit:~
`modprobe -r fuse` e la blacklist dei moduli non possono disabilitare FUSE.

Usa un kernel patchato o un kernel compilato senza supporto FUSE.

### L'output dello scanner è incompleto con il sandboxing di systemd

Lo scanner potrebbe aver bisogno di accesso in lettura a:```text
/proc
/boot
/lib/modules
/usr/lib/modules
/usr/src
package database directories
package cache directories

Regola l'hardening del servizio affinché questi percorsi rimangano leggibili.


Struttura dei file

Layout di progetto consigliato:```text cve-2026-31694-scanner/ ├── README.md └── cve_2026_31694_scanner.py

root@kitploit:~
Layout di installazione consigliato:```text
/opt/security/cve-2026-31694/
├── README.md
└── cve_2026_31694_scanner.py

Esempio:```bash sudo install -d -m 0755 /opt/security/cve-2026-31694

sudo install -m 0755
cve_2026_31694_scanner.py
/opt/security/cve-2026-31694/

sudo install -m 0644
README.md
/opt/security/cve-2026-31694/

root@kitploit:~
---

## Riferimenti

- Record CVE: <https://www.cve.org/CVERecord?id=CVE-2026-31694>
- Record NVD: <https://nvd.nist.gov/vuln/detail/CVE-2026-31694>
- Riferimento alla patch stabile Linux: <https://git.kernel.org/stable/c/51a8de6c50bf947c8f534cd73da4c8f0a13e7bed>
- Stato Ubuntu: <https://ubuntu.com/security/CVE-2026-31694>
- Tracker di sicurezza Debian: <https://security-tracker.debian.org/tracker/CVE-2026-31694>
- Database CVE Red Hat: <https://access.redhat.com/security/cve/CVE-2026-31694>
- Database CVE SUSE: <https://www.suse.com/security/cve/CVE-2026-31694.html>

---

## Autore

**Aung Myat Thu [w01f]**
Scarica lo strumento
OpzioneDescrizione
--format textOutput di terminale leggibile dall'uomo. Questo è il valore predefinito.
--format jsonReport strutturato completo in JSON.
--format markdownReport tecnico in Markdown.
--jsonAlias per --format json.
--output PATHScrive il report su un file invece che sull'output standard.
--mitigation-onlyRestituisce solo la sezione di mitigazione generata.
--no-package-querySalta le interrogazioni locali di aggiornamento del gestore dei pacchetti.
--no-exit-statusTermina sempre con stato 0 dopo aver generato l'output.
-h, --helpMostra l'aiuto del comando.
nFUSE è disabilitato nella configurazione rilevata.
unknownNessuna fonte di configurazione leggibile era disponibile.
1
Potenzialmente vulnerabile
2Inconcludente
3Errore dello scanner o della generazione del report