„`html
Zusammenfassung
CVE-2026-9323 ist eine High-Severity-Schwachstelle (CVSS 8.1) im Urwid Web Display Backend, die durch unsichere Generierung von Session-Identifiern verursacht wird. Die urwid_id wird mittels nicht-kryptographisch sicherer Zufallszahlengenerierung erstellt, was zu mehreren kritischen Sicherheitsproblemen führt.
Betroffene Systeme
Diese Schwachstelle betrifft Systeme, auf denen die Urwid-Bibliothek mit aktiviertem Web Display Backend (urwid/display/web.py) verwendet wird. Dies umfasst verschiedene Anwendungen, die auf Urwid für Terminal-UI über Web-Interface angewiesen sind.
Technische Details
Root Cause: Die Session-ID-Generierung nutzt zwei aufeinanderfolgende random.randrange(10**9)-Aufrufe, die Pythons Mersenne Twister PRNG verwenden. Diese ist nicht kryptographisch sicher und wurde durch # noqa: S311 Suppression statt korrekter Behebung ignoriert.
Exploitation Path A (Lokal): Die FIFO-Datei wird in /tmp mit dem Namensschema /tmp/urwid[SESSION_ID].in erstellt. Da /tmp world-listable ist, können lokale Benutzer aktive Session-IDs direkt enumerieren.
Exploitation Path B (Remote): Mit nur ~334 beobachteten Session-IDs (z.B. über X-Urwid-ID HTTP-Header) kann ein Angreifer den internen PRNG-State rekonstruieren und alle vergangenen sowie zukünftigen Session-IDs vorhersagen.
Impact: Mit gültiger Session-ID ermöglicht dies: Terminal-Inhalte auslesen, Keystroke-Injection durchführen (RCE mit Benutzer-Privilegien), oder Sessions beenden/zum Absturz bringen.
Empfohlene Massnahmen
- Sofortige Überprüfung aller Urwid-Installationen mit aktiviertem Web Backend
- Session-IDs durch cryptographisch sichere Generierung (z.B.
secrets.token_urlsafe()) ersetzen - FIFO-Dateien in /tmp durch restricted Permissions erstellen oder alternative Speicherorte nutzen
- Netzwerkzugriff auf Web Display Backend limitieren
- Auf Security-Updates warten (aktuell kein Patch verfügbar)
Bewertung
CVSS Score: 8.1 (High) | Angriffsvektor: Network | Komplexität: Niedrig | Privilegien erforderlich: Keine | Benutzerinteraktion: Keine
„`