
CVE-2026-24207 — Bypass de autenticación en NVIDIA Triton SageMaker que permite RCE no autenticado. Script de detección, demo del bypass, PoC de la cadena de RCE y reglas IDS.
Los atacantes no autenticados pueden alcanzar la superficie de gestión de modelos del NVIDIA Triton Inference Server en los puertos HTTP de SageMaker y Vertex AI, omitiendo la configuración
--http-restricted-apidel operador. Combinado con la primitiva LOAD de SageMaker MME y un modelo de backend Python, esto permite ejecución remota de código previa a la autenticación como el usuario del proceso Triton cuando el atacante puede colocar archivos de modelo en una ruta del sistema de archivos legible por Triton.
Alcance. Los scripts de PoC reproducen CVE-2026-24207 (SageMaker) de extremo a extremo, incluida la cadena RCE no autenticada, verificada contra los contenedores oficiales NVIDIA NGC de NVIDIA. CVE-2026-24206 (Vertex AI) es la falla gemela estructuralmente idéntica, confirmada mediante la revisión del código fuente y del parche del PR #8680 (
docs/root-cause.md,docs/patch-diff.md), no reproducida en laboratorio.
| Componente | Vulnerable | Corregida |
|---|---|---|
| NVIDIA Triton Inference Server | ≤ 26.02 (v2.66.0) | 26.03 (v2.67.0) |
python3 detect.py <host:sagemaker_port>
Envía una única petición GET de solo lectura. Muestra PATCHED, VULNERABLE o UNKNOWN.
No realiza cambios.
python3 bypass_demo.py <host:sagemaker_port>
Envía tres sondas: health (siempre tiene éxito), /models CON la
cabecera de autenticación configurada (línea base autorizada) y /models SIN
la cabecera (la omisión). Los códigos de respuesta lado a lado muestran la
diferencia de comportamiento. No hay cambio de estado. Ver
docs/root-cause.md.
# Probe the model-management surface (enumerate + LOAD attempt + UNLOAD attempt)
python3 exploit.py <host:sagemaker_port>
# Full RCE chain — point Triton at a path you control on its filesystem
python3 exploit.py <host:sagemaker_port> --mode rce \
--url /opt/ml/models/<your-attacker-dir> \
--name chaindemo
El flujo --mode rce carga un modelo de backend Python desde una
ruta proporcionada por el usuario. Si el directorio contiene un config.pbtxt válido
model.py (ver example/ para una demostración benigna), el
model.py se ejecuta como el usuario del proceso Triton — previo a la autenticación.Ver docs/rce-chain.md para la mecánica de la cadena
y los requisitos previos.
Python 3.8+ y requests:
pip install requests
Análisis independiente posterior al parche y PoC por 4252nez — artículo en OffSecKit. Las vulnerabilidades originales fueron reportadas por Hyeonjun Ahn (@deayzl) y acreditadas en el boletín de seguridad de NVIDIA de mayo de 2026; este repositorio no tiene afiliación con ese informe.
MIT — ver LICENSE.
| Archivo | Propósito |
|---|
detect.py | Comprobación no destructiva del estado del parche |
bypass_demo.py | Comparativa educativa de la mecánica de la omisión |
exploit.py | Sonda de gestión de modelos + demostración de la cadena RCE |
example/ | Modelo benigno de backend Python para la demo de RCE |
detection/triton-access.md | Guía de detección (huella de versión + firmas de registro) |
detection/suricata.rules | Regla IDS de red |
docs/root-cause.md | Explicación breve de la causa raíz |
docs/patch-diff.md | La corrección, en un solo diff |
docs/rce-chain.md | La cadena RCE no autenticada vía backend Python |