
CVE-2026-24207 — bypass dell'autenticazione in NVIDIA Triton SageMaker fino a RCE non autenticata. Script di rilevamento, demo del bypass, PoC della catena RCE e regole IDS.
Gli attaccanti non autenticati possono raggiungere la superficie di gestione dei modelli di NVIDIA Triton Inference Server sulle porte HTTP SageMaker e Vertex AI, aggirando la configurazione
--http-restricted-apidell'operatore. Combinata con la primitiva LOAD di SageMaker MME e un modello Python-backend, ciò consente l'esecuzione remota di codice pre-autenticazione come utente del processo Triton quando l'attaccante può posizionare file di modello su un percorso del filesystem leggibile da Triton.
Scopo. Gli script PoC riproducono CVE-2026-24207 (SageMaker) end-to-end, inclusa la catena RCE non autenticata, verificata contro i container ufficiali NVIDIA NGC. CVE-2026-24206 (Vertex AI) è il bug gemello strutturalmente identico — confermato dalla revisione di sorgenti/patch della PR #8680 (
docs/root-cause.md,docs/patch-diff.md), non riprodotto in laboratorio.
| Componente | Vulnerabile | Corretta |
|---|---|---|
| NVIDIA Triton Inference Server | ≤ 26.02 (v2.66.0) | 26.03 (v2.67.0) |
python3 detect.py <host:sagemaker_port>
Invia una GET di sola lettura. Stampa PATCHED, VULNERABLE o UNKNOWN.
Non apporta alcuna modifica.
python3 bypass_demo.py <host:sagemaker_port>
Invia tre probe: health (riesce sempre), /models CON l'header di
autenticazione configurato (baseline autorizzata) e /models SENZA
l'header (il bypass). I codici di risposta affiancati mostrano la
differenza di comportamento. Nessuna modifica di stato. Vedi
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
Il flusso --mode rce carica un modello Python-backend da un percorso
fornito dall'utente. Se la directory contiene un config.pbtxt valido
model.py (vedi example/ per una demo innocua),
model.py viene eseguito come utente del processo Triton — pre-autenticazione.Vedi docs/rce-chain.md per i meccanismi della catena
e i prerequisiti.
Python 3.8+ e requests:
pip install requests
Analisi indipendente post-patch e PoC di 4252nez — articolo su OffSecKit. Vulnerabilità originali segnalate da Hyeonjun Ahn (@deayzl) e accreditate nel bollettino di sicurezza NVIDIA di maggio 2026; questo repository non ha alcuna affiliazione con quella segnalazione.
MIT — vedi LICENSE.
| File | Scopo |
|---|
detect.py | Controllo non distruttivo dello stato della patch |
bypass_demo.py | Confronto didattico affiancato del meccanismo di bypass |
exploit.py | Sonda di gestione dei modelli + dimostrazione della catena RCE |
example/ | Modello Python-backend innocuo per la demo RCE |
detection/triton-access.md | Linee guida di rilevamento (fingerprint di versione + firme di log) |
detection/suricata.rules | Regola IDS di rete |
docs/root-cause.md | Breve spiegazione della causa principale |
docs/patch-diff.md | La correzione, in un unico diff |
docs/rce-chain.md | La catena RCE non autenticata tramite Python backend |