
CVE-2026-24207 — bypass de autenticação no NVIDIA Triton SageMaker levando a RCE não autenticado. Script de detecção, demonstração do bypass, PoC da cadeia de RCE e regras de IDS.
Atacantes não autenticados podem alcançar a superfície de gerenciamento de modelos do NVIDIA Triton Inference Server nas portas HTTP SageMaker e Vertex AI — contornando a configuração
--http-restricted-apido operador. Combinado com a primitiva LOAD do SageMaker MME e um modelo com backend Python, isso permite execução remota de código sem autenticação como o usuário do processo Triton quando o atacante pode colocar arquivos de modelo em um caminho do sistema de arquivos legível pelo Triton.
Escopo. Os scripts PoC reproduzem CVE-2026-24207 (SageMaker) de ponta a ponta, incluindo a cadeia de RCE não autenticado, verificados nos contêineres NVIDIA NGC oficiais. CVE-2026-24206 (Vertex AI) é o bug irmão estruturalmente idêntico — confirmado por revisão de código/patch do PR #8680 (
docs/root-cause.md,docs/patch-diff.md), não reproduzido em laboratório.
| Componente | Vulnerável | Corrigido |
|---|---|---|
| NVIDIA Triton Inference Server | ≤ 26.02 (v2.66.0) | 26.03 (v2.67.0) |
python3 detect.py <host:sagemaker_port>
Envia um GET somente leitura. Exibe PATCHED, VULNERABLE ou UNKNOWN.
Não faz alterações.
python3 bypass_demo.py <host:sagemaker_port>
Envia três sondas — health (sempre bem-sucedido), /models COM o
cabeçalho de autenticação configurado (linha de base autorizada) e /models SEM
o cabeçalho (o bypass). Códigos de resposta lado a lado mostram a
diferença de comportamento. Nenhuma mudança de estado. Veja
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
O fluxo --mode rce carrega um modelo com backend Python de um
caminho fornecido pelo usuário. Se o diretório contém um config.pbtxt
model.py válidos (veja example/ para uma demonstração benigna), o
model.py executa como o usuário do processo Triton — sem autenticação.Veja docs/rce-chain.md para a mecânica da cadeia
e pré-requisitos.
Python 3.8+ e requests:
pip install requests
Análise pós-correção independente e PoC por 4252nez — artigo no OffSecKit. Vulnerabilidades originais relatadas por Hyeonjun Ahn (@deayzl) e creditadas no boletim de segurança de maio de 2026 da NVIDIA; este repositório não tem afiliação com esse relatório.
MIT — veja LICENSE.
| Arquivo | Finalidade |
|---|
detect.py | Verificação não destrutiva do status da correção |
bypass_demo.py | Comparação educacional lado a lado da mecânica do bypass |
exploit.py | Sonda de gerenciamento de modelos + demonstração da cadeia RCE |
example/ | Modelo benigno com backend Python para a demo RCE |
detection/triton-access.md | Orientação de detecção (impressão digital de versão + assinaturas de log) |
detection/suricata.rules | Regra de IDS de rede |
docs/root-cause.md | Explicação curta da causa raiz |
docs/patch-diff.md | A correção, em um diff |
docs/rce-chain.md | A cadeia de RCE não autenticado via backend Python |