Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/zenzue/cve_2026_31694
DefensivwerkzeugeSchwachstellenscannerSchwachstellenanalyseKonfigurationsprüfung
GitHubzenzue/cve_2026_31694

CVE_2026_31694

Passiver Linux-Host-Schwachstellenscanner für CVE-2026-31694: prüft den laufenden Kernel, die FUSE-Konfiguration, Paket-Metadaten und Patch-Nachweise und erstellt anschließend maßgeschneiderte Empfehlungen zur Schadensbegrenzung.

Repository anzeigen
3vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-31694 Passiver Scanner

Ein passives Linux-Host-Bewertungstool für CVE-2026-31694, einen FUSE-readdir-Cache-Out-of-Bounds-Write im Linux-Kernel.

Der Scanner bewertet den laufenden Kernel, die FUSE-Exposition, lokale Paketmetadaten, Kernel-Quellbelege, die Ausführungsumgebung und die Betriebssystemfamilie. Wenn der Host möglicherweise betroffen ist, erstellt er einen auf die erkannte Distribution zugeschnittenen Minderungsleitfaden.

Autor: Aung Myat Thu [w01f]


Inhaltsverzeichnis

  • Überblick
  • Schwachstellenübersicht
  • Sicherheitsmodell
  • Funktionen
  • Anforderungen
  • Installation
  • Verwendung
  • Kommandozeilenoptionen
  • Bewertungsablauf
  • Bewertungen
  • Exit-Codes
  • Erkennungsquellen
  • Distributionsunterstützung
  • Erzeugung von Minderungsmaßnahmen
  • Container- und WSL-Verhalten
  • Berichtsformate
  • Automatisierung und Integration
  • Betriebliche Hinweise
  • Einschränkungen
  • Fehlerbehebung
  • Referenzen

Überblick

cve_2026_31694_scanner.py ist ein lokales, nicht-exploitativer Schwachstellenbewertungsdienstprogramm.

Es bestätigt die Schwachstelle nicht durch Auslösen des betroffenen FUSE-Codepfads. Stattdessen kombiniert es mehrere passive Indikatoren:

  • laufende Kernel-Version;
  • stromaufwärtige Basislinien für korrigierte Versionen;
  • aktuelle Speicherseitengröße;
  • Kernelkonfiguration CONFIG_FUSE_FS;
  • registrierte FUSE-Dateisystemtypen;
  • Vorhandensein von /dev/fuse und Zugriff des aktuellen Benutzers;
  • Verfügbarkeit des FUSE-Mount-Helfers;
  • aktive FUSE-Mounts;
  • Inspektion der installierten Kernelquellen;
  • Besitz von Kernelpaketen;
  • Nachweise aus lokalen Paket-Changelogs;
  • zwischengespeicherte Paketaktualisierungsmetadaten;
  • Vergleich zwischen installiertem und laufendem Kernel;
  • Erkennung von Distribution und Paketmanager;
  • Container-, VM- und WSL-Erkennung.

Das Ergebnis ist eine Expositionsbewertung, kein auf Exploits basierender Nachweis.


Schwachstellenübersicht

CVE-2026-31694 betrifft den FUSE-readdir-Cache des Linux-Kernels.

Die anfällige Logik berechnet die serialisierte Größe eines Verzeichniseintrags aus einer servergesteuerten Namenslänge und kopiert den Datensatz in eine einzelne Page-Cache-Seite. Ein Verzeichniseintrag mit einer Namenslänge von 4095 kann eine serialisierte Größe von 4120 Bytes erzeugen.

Auf einem System mit 4096-Byte-Seiten überschreitet dieser Datensatz eine Seite um 24 Bytes.

Die Korrektur stromaufwärts lehnt Verzeichnisdatensätze ab, die nicht in eine einzelne Seite passen, bevor der Cache-Kopievorgang erfolgt.

Betroffene Komponente```text

fs/fuse/readdir.c fuse_add_dirent_to_cache()

root@kitploit:~
### Scanner-Basisdaten

Der Scanner enthält die folgenden festgelegten stabilen Upstream-Basislinien:

| Kernel-Serie | Feste Basislinie |
|---|---:|
| 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 oder neuer |

Diese Versionen werden als eine Bewertungsgrundlage verwendet. Sie werden nicht als einzige Quelle der Wahrheit behandelt, da Distributionsanbieter die Korrektur zurückportieren können, während sie eine ältere Upstream-Versionsnummer beibehalten.

---

## Sicherheitsmodell

Der Scanner wurde entwickelt, um den angreifbaren Vorgang nicht auszulösen.

### Was der Scanner nicht tut

- mountet kein FUSE-Dateisystem;
- öffnet `/dev/fuse` nicht und kommuniziert nicht damit;
- startet keinen FUSE-Server;
- übermittelt keine präparierten Verzeichnisdatensätze;
- reserviert keinen Speicher für Page-Placement-Tests;
- präpariert keine Kernel-Allokatoren;
- ändert `/etc/passwd` nicht;
- ändert die Kernelkonfiguration nicht;
- lädt oder entlädt keine Kernelmodule;
- ändert die Berechtigungen von `/dev/fuse` nicht;
- installiert oder entfernt keine Pakete;
- startet das System nicht neu;
- unternimmt keinen Privilegienerweiterungsversuch.

### Was der Scanner tun darf

- Dateien unter `/proc`, `/boot`, `/lib/modules`, `/usr/lib/modules`, `/usr/src` und Paketmetadaten-Verzeichnissen lesen;
- begrenzte, schreibgeschützte Paketabfragen ausführen;
- aktive Mounts und Dateisystemregistrierung untersuchen;
- einen Bericht nur dann schreiben, wenn `--output` explizit angegeben wird;
- Mitigationsbefehle zur Prüfung durch den Administrator ausgeben.

Mitigationsbefehle sind Dokumentationsausgabe. Sie werden niemals automatisch ausgeführt.

---

## Funktionen

### Host- und Kernel-Identifikation

- Liest `platform.release()` und parst die Kernel-Version im Upstream-Stil.
- Liest `/etc/os-release` oder `/usr/lib/os-release`.
- Erkennt CPU-Architektur und Speicherseitengröße.
- Ermittelt, ob der gescannte Kernel zum aktuellen Betriebssystem gehört.

### Bewertung der FUSE-Exposition

- Liest `CONFIG_FUSE_FS` aus verfügbaren Kernel-Konfigurationsquellen.
- Erkennt integrierte FUSE-Unterstützung und Konfigurationen für ladbare Module.
- Liest `/proc/filesystems`.
- Überprüft die Metadaten von `/dev/fuse` und den Lese-/Schreibzugriff des aktuellen Benutzers.
- Lokalisiert `fusermount3` oder `fusermount`.
- Analysiert aktive FUSE-Mounts aus `/proc/self/mountinfo`.

### Patch-Nachweise

- Vergleicht die laufende Version mit den festgelegten Upstream-Basislinien.
- Durchsucht den installierten Kernelquelltext nach dem Schutz für übergroße Datensätze.
- Überprüft lokale RPM- oder Debian-Paket-Changelogs auf:
  - `CVE-2026-31694`;
  - den Titel des Upstream-Patches.

### Paket- und Neustartstatus

- Versucht, das Paket zu ermitteln, das den laufenden Kernel besitzt.
- Fragt lokale Paketmanager-Metadaten ab, ohne Repositorien zu aktualisieren.
- Erkennt einen neueren installierten Kernel, wenn die Host-Umgebung maßgeblich ist.
- Prüft `/var/run/reboot-required`, sofern zutreffend.

### Umgebungserkennung

- Erkennt Docker-kompatible Container.
- Erkennt Podman-kompatible Container.
- Erkennt containerbezogene Cgroups.
- Erkennt WSL.
- Erkennt virtuelle Maschinen mithilfe von `systemd-detect-virt`, sofern verfügbar.

### Berichterstattung

- Für Menschen lesbare Textausgabe.
- Maschinenlesbare JSON-Ausgabe.
- Markdown-Berichtsausgabe.
- Ausgabe nur mit Mitigationsmaßnahmen.
- Optionale Dateiausgabe.
- Aussagekräftige Prozess-Exitcodes.

---

## Anforderungen

### Erforderlich

- Linux für die Kernel-Bewertung.
- Python 3.9 oder neuer.
- Lesezugriff auf normale Systemmetadaten.

Der Scanner verwendet nur die Python-Standardbibliothek.

### Optionale Befehle

Zusätzliche Nachweise werden gesammelt, wenn die folgenden Werkzeuge vorhanden sind:

| Tool | Zweck |
|---|---|
| `dpkg-query` | Ermittlung des Kernel-Paketbesitzes und Changelog-Erkennung für Debian/Ubuntu |
| `rpm` | Paketbesitz- und Changelog-Prüfung für Fedora/RHEL/SUSE |
| `pacman` | Kernelpaket- und Update-Metadaten für Arch-basierte Systeme |
| `apt` | Abfrage gecachter Updates für Debian-basierte Systeme |
| `dnf` oder `dnf5` | Abfrage gecachter Updates für Fedora/RHEL |
| `zypper` | Abfrage gecachter CVE-Patches für SUSE |
| `apk` | Paket-/Update-Abfrage für Alpine |
| `systemd-detect-virt` | Erkennung von Containern und virtuellen Maschinen |

Für den normalen Scan sind keine Root-Rechte erforderlich.

Einige Nachweise können für ein unprivilegiertes Konto aufgrund systemspezifischer Dateiberechtigungen nicht verfügbar sein.

---

## Installation

Platzieren Sie den Scanner in einem Arbeitsverzeichnis:```bash
chmod +x cve_2026_31694_scanner.py

Führen Sie es direkt aus:```bash ./cve_2026_31694_scanner.py

root@kitploit:~
Oder rufe es mit Python auf:```bash
python3 cve_2026_31694_scanner.py

Es ist keine Installation von Python-Paketen erforderlich.


Verwendung

Standardbewertung```bash

python3 cve_2026_31694_scanner.py

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

Der untenstehende Kompatibilitäts-Alias erzeugt dasselbe Format:```bash python3 cve_2026_31694_scanner.py --json

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

Einen Bericht speichern```bash

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

root@kitploit:~
### Nur Behebungsanleitungen ausgeben```bash
python3 cve_2026_31694_scanner.py --mitigation-only

Paketaktualisierungsabfragen überspringen```bash

python3 cve_2026_31694_scanner.py --no-package-query

root@kitploit:~
### Nach der Meldung immer Erfolg zurückgeben```bash
python3 cve_2026_31694_scanner.py --no-exit-status

Diese Option ist nützlich, wenn Berichte gesammelt werden sollen, ohne dass der Schwachstellenstatus einen Orchestrierungsjob fehlschlagen lässt.


Befehlszeilenoptionen


Bewertungs-Workflow

Der Scanner wertet Beweise in der folgenden Reihenfolge aus.

1. Betriebssystem- und Umgebungserkennung

Der Scanner ermittelt:

  • ob das Betriebssystem Linux ist;
  • Distributions-ID und -Familie;
  • Paketmanager;
  • ob der Prozess ausgeführt wird auf:
    • einem normalen Host;
    • einer virtuellen Maschine;
    • einem Container;
    • WSL.

Die Umgebungserkennung ändert die Interpretation von Paket- und Neustartdaten.

Beispielsweise kann ein Container den Host-Kernel sehen, aber normalerweise nicht das Host-Kernel-Paket aus dem Container-Dateisystem ermitteln.

2. FUSE-Konfiguration

Der Scanner sucht nach einer Konfiguration des laufenden Kernels in:```text /proc/config.gz /boot/config-$(uname -r) /lib/modules/$(uname -r)/build/.config /usr/lib/modules/$(uname -r)/build/.config

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

Interpretation:

WertBedeutung
yFUSE ist fest in den Kernel integriert. Eine Modul-Blacklist kann es nicht deaktivieren.
mFUSE ist als ladbares Modul verfügbar.

3. Laufzeit-Exposition

Der Scanner prüft:```text /proc/filesystems /dev/fuse PATH for fusermount3 or fusermount /proc/self/mountinfo

root@kitploit:~
Das Fehlen von `/dev/fuse` oder `fusermount3` verringert die unmittelbare Nutzbarkeit aus der aktuellen Umgebung, beweist jedoch nicht, dass der Kernel gepatcht ist.

### 4. Seitengrößen-Geometrie

Der dokumentierte übergroße Datensatz ist `4120` Bytes.

Wenn die Host-Seitengröße mindestens `4120` Bytes beträgt, überschreitet der dokumentierte Datensatz keine Seitengrenze. Der Scanner kann melden, dass das System durch die dokumentierte Seitengeometrie nicht exponiert ist.

Diese Schlussfolgerung gilt nur für den dokumentierten Datensatz und das bewertete Implementierungsverhalten. Sie ist keine allgemeine Aussage, dass alle FUSE-Speichersicherheitsprobleme auf Systemen mit größeren Seiten unmöglich sind.

### 5. Inspektion des installierten Quellcodes

Wenn installierter Quellcode verfügbar ist, sucht der Scanner:```text
fs/fuse/readdir.c

Es sucht nach der betroffenen Funktion und einer Schutzbedingung, die einem Ablehnen von reclen > PAGE_SIZE entspricht.

Direkte Quellcode-Evidenz hat eine höhere Zuverlässigkeit als ein Versionsvergleich.

Die untersuchte Quelle muss mit dem laufenden Kernel übereinstimmen, damit das Ergebnis aussagekräftig ist. Quellbäume der Distribution unter /usr/src können einen anderen installierten Kernel darstellen.

6. Kernel-Paketnachweis

Der Scanner versucht, das laufende Kernel-Image mithilfe der erkannten Paketdatenbank der Distribution dem zugehörigen Paket zuzuordnen.

Mögliche Mechanismen umfassen:```text dpkg-query -S rpm -qf pacman -Qo apk info -W

root@kitploit:~
Wenn ein Paket identifiziert wird, können lokale Changelog-Metadaten auf die CVE-ID oder den Patch-Titel hin untersucht werden.

Eine fehlende Übereinstimmung im Changelog ist kein Beweis für eine Schwachstelle. Hersteller nehmen nicht immer einzelne CVE-Referenzen in lokal installierte Changelogs auf.

### 7. Upstream-Versionsvergleich

Die geparste Kernel-Version wird mit der festen Baseline-Tabelle des Scanners verglichen.

Der Versionsvergleich liefert ein heuristisches Ergebnis, weil:

- Hersteller-Kernel können Backports enthalten;
- Release-Revisionen von Kernel-Paketen sind distributionsspezifisch;
- Cloud-, Echtzeit-, gehärtete und Hardware-Enablement-Kernel können separate Patch-Zeitpläne haben;
- eine Versionszeichenfolge kann einen herstellergepflegten Zweig darstellen und keine unveränderte Upstream-Version.

### 8. Paketupdate-Metadaten

Wo unterstützt, führt der Scanner schreibgeschützte Abfragen gegen vorhandene lokale Metadaten aus.

Er aktualisiert keine Repositories.

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

Ein Ergebnis, das kein verfügbares Update anzeigt, ist nur so aktuell wie die zwischengespeicherten Repository-Metadaten.

9. Neustartstatus

Auf einem normalen Host oder einer virtuellen Maschine vergleicht der Scanner den laufenden Kernel mit den erkannten installierten Kernen und prüft die von Debian-basierten Systemen verwendete Neustartmarkierung.

In einem Container oder einer WSL-Gastumgebung wird diese Prüfung als hostgesteuert markiert, anstatt Gastdateien mit dem Host-Kernel zu vergleichen.

10. Urteilsfindung

Die Belegpriorität ist ungefähr:

  1. direkte Quell- oder Paket-Patch-Belege;
  2. FUSE deaktiviert;
  3. dokumentierte Seitengeometrie nicht exponiert;
  4. behobene oder nicht betroffene Upstream-Basislinie;
  5. potenziell betroffene Upstream-Version;
  6. nicht eindeutige Belege.

Urteile

PATCHED

Direkte lokale Belege zeigen, dass die Korrektur vorhanden ist.

Beispiele:

  • übereinstimmende Source-Guard im relevanten Kernel-Quellcode;
  • lokale Kernel-Paketmetadaten verweisen auf die CVE oder den Patch.

Die Konfidenz ist normalerweise hoch, aber die Übereinstimmung zwischen Quelle und laufendem Kernel sollte dennoch überprüft werden.

NOT_EXPOSED

Die erkannte Konfiguration des laufenden Kernels hat FUSE deaktiviert.

Dies ist ein Expositionsergebnis, kein Beleg dafür, dass der Kernel-Quellcode selbst die Korrektur enthält.

NOT_EXPOSED_BY_DOCUMENTED_PAGE_GEOMETRY

Die Speicherseitengröße ist groß genug, um den dokumentierten 4120-Byte-Datensatz zu enthalten, ohne eine Seitengrenze zu überschreiten.

Dieses Urteil ist auf die dokumentierte Schwachstellen-Geometrie beschränkt.

UPSTREAM_BASELINE_SAFE

Die geparste laufende Version erfüllt eine bekannte behobene Upstream-Basislinie oder geht der betroffenen Implementierung voraus.

Die Überprüfung der Herstellerpakete bleibt vorzuziehen.

POTENTIALLY_VULNERABLE

Der geparste Kernel liegt innerhalb eines betroffenen Upstream-Bereichs, und es wurden keine direkten lokalen Patch-Belege gefunden.

Dieses Ergebnis erfordert die Prüfung des Sicherheitshinweises des Betriebssystemherstellers, bevor der installierte Kernel als verwundbar eingestuft wird.

INCONCLUSIVE

Der Scanner konnte nicht genügend Belege beschaffen.

Häufige Ursachen:

  • nicht verfügbare Kernel-Konfiguration;
  • nicht erkannte Versionszeichenfolge;
  • nicht zugängliche Quell- oder Paketmetadaten;
  • nicht unterstützte Distribution;
  • Ausführung in einem Container;
  • hostverwalteter Kernel;
  • Hersteller-Backport-Status lokal nicht verfügbar.

NOT_APPLICABLE

Das aktuelle Betriebssystem ist nicht Linux.


Exit-Codes

CodeBedeutung
0Patch-Belege, sichere Upstream-Basislinie oder keine dokumentierte Exposition

Beispiel:```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:~
Wenn `--no-exit-status` angegeben ist, gibt der Scanner nach der Erstellung des Berichts `0` zurück.

---

## Erkennungsquellen

Der Scanner verwendet die folgenden lokalen Quellen, sofern verfügbar:

| Quelle | Information |
|---|---|
| `/etc/os-release` | Distributionsidentität |
| `/usr/lib/os-release` | Fallback für Distributionsidentität |
| `/proc/version` | Kernel- und WSL-Indikatoren |
| `/proc/config.gz` | Konfiguration des laufenden Kernels |
| `/boot/config-*` | Kernelkonfiguration |
| `/lib/modules/*/build/.config` | Kernel-Build-Konfiguration |
| `/proc/filesystems` | Registrierte Dateisysteme |
| `/proc/self/mountinfo` | Aktive FUSE-Mounts |
| `/proc/1/cgroup` | Container-Indikatoren |
| `/dev/fuse` | Geräteverfügbarkeit und -berechtigungen |
| `/usr/src/*/fs/fuse/readdir.c` | Optionale Hinweise auf Patches auf Quelltextebene |
| `/lib/modules` | Inventar installierter Kernel |
| `/usr/lib/modules` | Inventar installierter Kernel |
| `/boot/vmlinuz-*` | Inventar installierter Kernel |
| `/var/run/reboot-required` | Neustart-Indikator der Debian-Familie |
| Paketdatenbank | Eigentümerschaft von Kernelpaketen |
| Paket-Changelogs | Optionale lokale Backport-Hinweise |
| Paket-Cache | Optionale Hinweise auf Update-Verfügbarkeit |

---

## Distributionsunterstützung

### Erkennung der Distributionsfamilie

| Familie | Erkannte Distributionen |
|---|---|
| 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 |
| Unbekannt | Allgemeine Linux-Hinweise |

### Unterstützung für lokale Update-Abfragen

| Familie | Schreibgeschützte Update-Abfrage |
|---|---|
| Debian/Ubuntu | `apt list --upgradable` |
| Arch | `pacman -Qu` |
| Fedora/RHEL | zwischengespeichertes `dnf check-upgrade` |
| SUSE | zwischengespeicherte CVE-Patchliste mit `zypper` |
| Alpine | `apk version -l <` |
| Gentoo | Nicht implementiert |
| Void | Nicht implementiert |
| NixOS | Nicht implementiert |
| Unbekannt | Nicht implementiert |

Das Fehlen eines lokal sichtbaren Updates bedeutet nicht, dass ein korrigiertes Paket nicht verfügbar ist. Die Repository-Metadaten können veraltet sein oder die Distribution hat möglicherweise noch kein Paket veröffentlicht.

---

## Generierung von Gegenmaßnahmen

Die Empfehlungen für Gegenmaßnahmen werden ausgewählt anhand von:

- Distributionsfamilie;
- Paketmanager;
- Container- oder WSL-Status;
- FUSE-Konfiguration;
- Verfügbarkeit von `/dev/fuse`;
- aktive FUSE-Mounts;
- Neustartstatus;
- endgültigem Urteil.

Der Scanner gibt Befehle aus, führt sie jedoch niemals aus.

### Debian- und Ubuntu-Familie

Typische generierte Abfolge:```bash
sudo apt update
sudo apt full-upgrade
sudo reboot

Überprüfen Sie die vorgeschlagene Pakettransaktion, bevor Sie sie genehmigen.

Nach dem Neustart:```bash uname -r python3 cve_2026_31694_scanner.py

root@kitploit:~
### Arch and Manjaro Familie

Typische generierte Sequenz:```bash
sudo pacman -Syu
sudo reboot

Arch-basierte Systeme erfordern ein vollständiges System-Upgrade. Aktualisiere die Paketdatenbanken nicht mit pacman -Sy und installiere dann ausgewählte Pakete, ohne das Upgrade abzuschließen.

Fedora- und RHEL-Familie

Typische generierte Sequenz:```bash sudo dnf upgrade --refresh sudo systemctl reboot

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

### SUSE-Familie

Typische generierte Sequenz:```bash
sudo zypper refresh
sudo zypper patch --cve=CVE-2026-31694
sudo zypper patch --category security
sudo systemctl reboot

Der CVE-spezifische Patch ist möglicherweise nicht als separate Transaktion für jedes SUSE-Produkt oder jeden Repository-Zustand verfügbar.

Alpine Linux

Typische generierte Sequenz:```bash doas apk update doas apk upgrade doas reboot

root@kitploit:~
Das Berechtigungs-Präfix hängt davon ab, ob der Scanner `sudo`, `doas` oder eine bereits laufende Root-Sitzung findet.

### Gentoo Linux

Typische generierte Sequenz:```bash
sudo emaint sync -a
sudo emerge --ask --update --deep --newuse @world

Kernel-Installation und -Aktivierung hängen vom konfigurierten Gentoo-Kernel-Workflow des Hosts ab.

Void Linux

Typische generierte Sequenz:```bash sudo xbps-install -Suv sudo reboot

root@kitploit:~
### NixOS

Typische generierte Sequenz:```bash
sudo nixos-rebuild switch --upgrade
sudo systemctl reboot

Temporäre Kontrollen

Wenn ein Patch nicht sofort durchgeführt werden kann, schlägt der Scanner möglicherweise temporäre Kontrollen vor.

Mögliche Empfehlungen sind:

  • das FUSE-Modul entladen, wenn keine FUSE-Mounts aktiv sind;
  • ein ladbares FUSE-Modul auf die Blacklist setzen;
  • den Zugriff auf /dev/fuse vorübergehend einschränken;
  • /dev/fuse aus nicht vertrauenswürdigen Containern entfernen;
  • CAP_SYS_ADMIN entfernen;
  • --privileged-Container vermeiden.

Diese Kontrollen können legitime Arbeitslasten beeinträchtigen, darunter:

  • SSHFS;
  • AppImage;
  • rclone-Mounts;
  • Desktop-Portale;
  • Rootless-Container-Tools;
  • Userspace-Dateisysteme.

Temporäre Einschränkungen dürfen die Installation eines vom Hersteller gepatchten Kernels nicht ersetzen.


Container- und WSL-Verhalten

Container

Container teilen normalerweise den Host-Kernel.

Ein innerhalb eines Containers ausgeführter Scanner kann Folgendes erkennen:

  • die Kernel-Version des Hosts;
  • Paketmetadaten des Container-Dateisystems;
  • kein passendes Host-Kernel-Paket;
  • kein /dev/fuse, selbst wenn FUSE auf dem Host aktiviert ist.

Aus diesem Grund kennzeichnet der Scanner hostabhängige Befunde als nicht autoritativ und verweist die Behebung an den Container-Host.

Führen Sie den Scanner direkt auf dem Host aus, um eine autoritative Paket- und Neustartbewertung zu erhalten.

Die Anleitung zur Container-Härtung umfasst das Entfernen von:```text --device /dev/fuse --cap-add SYS_ADMIN --privileged

root@kitploit:~
Die entsprechende Compose-Konfiguration sollte ebenfalls überprüft werden:```yaml
devices:
  - /dev/fuse:/dev/fuse

cap_add:
  - SYS_ADMIN

privileged: true

WSL

Der WSL-Kernel wird von Windows verwaltet und nicht vom Kernelpaket der Linux-Gastdistribution.

Typische generierte Anleitung:```powershell wsl --update wsl --shutdown

root@kitploit:~
Führen Sie diese Befehle in Windows PowerShell aus, starten Sie die Distribution neu und führen Sie den Scanner erneut aus.

Das ausschließliche Aktualisieren von Gast-Paketen mit `apt`, `dnf` oder einem anderen Linux-Paketmanager ersetzt nicht den WSL-Kernel.

### Virtuelle Maschinen

Eine virtuelle Maschine besitzt normalerweise ihren eigenen Gast-Kernel. Verteiler- bzw. distributionsspezifische Paket- und Neustart-Prüfungen bleiben innerhalb des Gastes anwendbar.

Der Hypervisor-Host sollte separat bewertet werden.

---

## Berichtsformate

### Text

Die Textausgabe ist für die direkte Verwendung im Terminal gedacht.```bash
python3 cve_2026_31694_scanner.py --format text

Der Bericht enthält:

  • Host-Zusammenfassung;
  • Evidenzprüfungen;
  • Paketupdates, sofern sichtbar;
  • Ergebnis und Konfidenz;
  • Behebungsanleitung;
  • Verifizierungsbefehle;
  • Warnhinweise;
  • Hinweise;
  • Exit-Code.

JSON

Die JSON-Ausgabe enthält den vollständigen dataclass-basierten Bericht.```bash python3 cve_2026_31694_scanner.py
--format json
--output report.json

root@kitploit:~
Beispielfeldauswahl:```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

Die Markdown-Ausgabe eignet sich für technische Aufzeichnungen, Tickets und Bewertungsberichte.```bash python3 cve_2026_31694_scanner.py
--format markdown
--output report.md

root@kitploit:~
### Nur-Gegenmaßnahmen-Bericht```bash
python3 cve_2026_31694_scanner.py \
  --mitigation-only \
  --format markdown

Bei JSON-Format gibt der Mitigation-Only-Modus das Mitigationsobjekt anstelle des vollständigen Host-Berichts zurück.


Automatisierung und Integration

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:~
### Berichtserfassung, ohne dass ein Job fehlschlägt```bash
python3 cve_2026_31694_scanner.py \
  --format json \
  --output /var/tmp/cve-2026-31694.json \
  --no-exit-status

Cron-Beispiel```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:~
Dies überschreibt dieselbe Berichtsdatei. Verwenden Sie ein Wrapper-Skript, wenn historische Berichte benötigt werden.

### Beispiel für einen Systemd-Dienst```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

Der Scanner benötigt Lesezugriff auf Kernel- und Paketmetadaten. Zusätzliche Sandbox-Einschränkungen können Beweise verbergen und einen nicht eindeutigen Bericht erzeugen.

Flottenverwendung

Für die Flottenbewertung:

  1. das Skript auf jedem Linux-Host ablegen;
  2. es lokal ausführen;
  3. die JSON-Ausgabe sammeln;
  4. die Ergebnisse gruppieren nach:
    • Distribution;
    • Kernel-Release;
    • Befund;
    • Konfidenz;
    • Umgebungstyp;
  5. potenziell betroffene Hosts anhand der Herstellerhinweise überprüfen;
  6. Patches einspielen und neu starten;
  7. erneut scannen.

Behandeln Sie einen Scan aus einem Container-Image-Build nicht als Bewertung des Host-Kernels.


Betriebsleitfaden

Empfohlene Reaktion auf POTENTIALLY_VULNERABLE

  1. Ermitteln Sie den genauen laufenden Kernel: ```bash uname -r

    root@kitploit:~
  2. Ermitteln Sie die installierte Distribution und Version: ```bash cat /etc/os-release

    root@kitploit:~
  3. Überprüfen Sie den CVE-Status des Distributionsanbieters für das exakte Kernelpaket und den Flavor.

  4. Aktualisieren Sie die Paketmetadaten.

  5. Installieren Sie das vom Distributionsanbieter unterstützte, korrigierte Kernelpaket.

  6. Starten Sie den Host neu.

  7. Bestätigen Sie, dass sich der laufende Kernel geändert hat: ```bash uname -r

    root@kitploit:~
  8. Führen Sie den Scanner erneut aus.

Empfohlene Antwort auf INCONCLUSIVE

Sammeln Sie fehlende Beweise:```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

root@kitploit:~
Überprüfen Sie dann das exakte Kernel-Paket anhand des Sicherheitshinweises des Herstellers.

### Neustart-Überprüfung

Die Installation eines korrigierten Kernel-Pakets ändert nicht den aktuell ausgeführten Kernel.

Überprüfen Sie sowohl den installierten als auch den laufenden Kernel und starten Sie dann bei Bedarf neu.

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

Debian-basierte Systeme bieten möglicherweise auch:```bash test -e /var/run/reboot-required && cat /var/run/reboot-required

root@kitploit:~
### FUSE-Abhängigkeitsprüfung

Bevor Sie FUSE vorübergehend entladen oder blockieren:```bash
findmnt -t fuse,fuseblk,fusectl
lsmod | grep '^fuse'
ps aux | grep -E '[f]usermount|[s]shfs|[r]clone'

Entladen Sie das Modul nicht, solange aktive FUSE-Dateisysteme gemountet sind.


Einschränkungen

Keine Exploit-Bestätigung

Der Scanner löst den verwundbaren Codepfad absichtlich nicht aus.

Ein POTENTIALLY_VULNERABLE-Befund bedeutet, dass die verfügbaren passiven Hinweise mit einer Exposition vereinbar sind. Er ist kein Beweis dafür, dass die Ausnutzung erfolgreich sein wird.

Backports des Anbieters

Distributionskernel portieren häufig Sicherheitskorrekturen zurück.

Eine älter aussehende Upstream-Version kann bereits gepatcht sein.

Für distributionsverwaltete Kernel sind der Sicherheitshinweis des Anbieters und die genaue Paketversion maßgeblich.

Abweichung des Quellbaums

Ein unter /usr/src gefundener Quellbaum muss nicht mit dem laufenden Kernel übereinstimmen.

Die Patch-Hinweise im Quellcode sollten validiert werden gegen:```bash uname -r

root@kitploit:~
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

Einige Distributionen stellen die laufende Konfiguration nicht über /proc/config.gz bereit.

Laufendes Kernel-Paket konnte nicht identifiziert werden

Mögliche Ursachen:

  • Ausführung in einem Container;
  • Kernel-Image ist im aktuellen Dateisystem nicht vorhanden;
  • benutzerdefinierter Kernel;
  • Paketdatenbank nicht verfügbar;
  • Kernel von der Plattform bereitgestellt;
  • unzureichende Berechtigungen.

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

root@kitploit:~
### Paketupdate-Abfrage meldet kein Update

Aktualisieren Sie die Paketmetadaten mithilfe des generierten Mitigationsleitfadens und führen Sie den Scanner erneut aus.

Der passive Scanner aktualisiert Repositorys nicht automatisch.

### `POTENTIALLY_VULNERABLE` nach der Installation von Updates

Bestätigen Sie, dass der neue Kernel läuft:```bash
uname -r

Vergleichen Sie es mit den installierten Kernel-Verzeichnissen:```bash ls -1 /lib/modules

root@kitploit:~
Ein Neustart kann weiterhin erforderlich sein.

Überprüfen Sie außerdem das Hersteller-Bulletin, da ein bereitgestellter Backport möglicherweise nicht mit der Upstream-Versionsbasis übereinstimmt.

### FUSE ist in den Kernel integriert

Wenn der Bericht Folgendes anzeigt:```text
CONFIG_FUSE_FS=y

modprobe -r fuse und das Blacklisting von Modulen können FUSE nicht deaktivieren.

Verwende einen gepatchten Kernel oder einen Kernel, der ohne FUSE-Unterstützung gebaut wurde.

Scanner-Ausgabe ist unter systemd-Sandboxing unvollständig

Der Scanner benötigt möglicherweise Lesezugriff auf:```text /proc /boot /lib/modules /usr/lib/modules /usr/src package database directories package cache directories

root@kitploit:~
Passen Sie die Service-Härtung an, damit diese Pfade lesbar bleiben.

---

## Dateilayout

Empfohlenes Projektlayout:```text
cve-2026-31694-scanner/
├── README.md
└── cve_2026_31694_scanner.py

Empfohlenes installiertes Layout:```text /opt/security/cve-2026-31694/ ├── README.md └── cve_2026_31694_scanner.py

root@kitploit:~
Beispiel:```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/

Referenzen

  • CVE-Eintrag: https://www.cve.org/CVERecord?id=CVE-2026-31694
  • NVD-Eintrag: https://nvd.nist.gov/vuln/detail/CVE-2026-31694
  • Linux-stable Patch-Referenz: https://git.kernel.org/stable/c/51a8de6c50bf947c8f534cd73da4c8f0a13e7bed
  • Ubuntu-Status: https://ubuntu.com/security/CVE-2026-31694
  • Debian-Sicherheits-Tracker: https://security-tracker.debian.org/tracker/CVE-2026-31694
  • Red-Hat-CVE-Datenbank: https://access.redhat.com/security/cve/CVE-2026-31694
  • SUSE-CVE-Datenbank: https://www.suse.com/security/cve/CVE-2026-31694.html

Autor

Aung Myat Thu [w01f]

Tool herunterladen
OptionBeschreibung
--format textFür Menschen lesbare Terminalausgabe. Dies ist die Standardeinstellung.
--format jsonVollständiger strukturierter Bericht als JSON.
--format markdownTechnischer Markdown-Bericht.
--jsonAlias für --format json.
--output PATHSchreibt den Bericht in eine Datei statt in die Standardausgabe.
--mitigation-onlyGibt nur den erzeugten Mitigationsabschnitt zurück.
--no-package-queryÜberspringt lokale Paketmanager-Update-Abfragen.
--no-exit-statusBeendet nach der Erzeugung der Ausgabe immer mit Status 0.
-h, --helpZeigt die Hilfe zum Befehl an.
nFUSE ist in der erkannten Konfiguration deaktiviert.
unbekanntEs war keine lesbare Konfigurationsquelle verfügbar.
1
Potenziell verwundbar
2Nicht eindeutig
3Scanner- oder Berichtserstellungsfehler