CVE-2026-24207 — Contournement d'authentification NVIDIA Triton SageMaker menant à une exécution de code à distance non authentifiée. Script de détection, démonstration du contournement, preuve de concept de la chaîne RCE et règles IDS.
Les attaquants non authentifiés peuvent atteindre la surface de gestion des modèles du NVIDIA Triton Inference Server sur les ports HTTP SageMaker et Vertex AI — contournant la configuration
--http-restricted-apide l'opérateur. Combiné avec la primitive SageMaker MME LOAD et un modèle backend Python, cela permet l'exécution de code à distance pré-authentification en tant qu'utilisateur du processus Triton lorsque l'attaquant peut placer des fichiers de modèle sur un chemin de système de fichiers lisible par Triton.
Périmètre. Les scripts PoC reproduisent CVE-2026-24207 (SageMaker) de bout en bout, y compris la chaîne RCE non authentifiée, vérifiés contre les conteneurs officiels NVIDIA NGC. CVE-2026-24206 (Vertex AI) est le bogue jumeau structurellement identique — confirmé par revue du code source et du correctif de la PR #8680 (, ), non reproduit en laboratoire.
docs/root-cause.md| Composant | Vulnérable | Corrigé |
|---|---|---|
| NVIDIA Triton Inference Server | ≤ 26.02 (v2.66.0) | 26.03 (v2.67.0) |
python3 detect.py <host:sagemaker_port>
Envoie une requête GET en lecture seule. Affiche PATCHED, VULNERABLE ou UNKNOWN.
Ne fait aucune modification.
python3 bypass_demo.py <host:sagemaker_port>
Envoie trois sondes — santé (réussit toujours), /models AVEC l'en-tête d'authentification configuré (référence autorisée), et /models SANS l'en-tête (le contournement). Les codes de réponse côte à côte montrent la différence de comportement. Aucun changement d'état. Voir
docs/root-cause.md.
# Sonde la surface de gestion des modèles (énumération + tentative LOAD + tentative UNLOAD)
python3 exploit.py <host:sagemaker_port>
# Chaîne RCE complète — pointer Triton vers un chemin que vous contrôlez sur son système de fichiers
python3 exploit.py <host:sagemaker_port> --mode rce \
--url /opt/ml/models/<votre-repertoire-attaquant> \
--name chaindemo
Le flux --mode rce charge un modèle backend Python depuis un chemin fourni par l'utilisateur. Si le répertoire contient un config.pbtxt + model.py valides (voir example/ pour une démonstration bénigne), le model.py s'exécute en tant qu'utilisateur du processus Triton — pré-authentification.
Voir docs/rce-chain.md pour les mécanismes de la chaîne et les prérequis.
| Fichier | Objectif |
|---|---|
detect.py | Vérification non destructive de l'état du correctif |
bypass_demo.py | Comparaison éducative du mécanisme de contournement |
exploit.py | Sonde de gestion des modèles + démonstration de la chaîne RCE |
example/ | Modèle backend Python bénin pour la démo RCE |
detection/triton-access.md | Guide de détection (empreinte de version + signatures de logs) |
detection/suricata.rules | Règle IDS réseau |
docs/root-cause.md | Explication concise de la cause racine |
docs/patch-diff.md | Le correctif, en un diff |
docs/rce-chain.md | La chaîne RCE non authentifiée via backend Python |
Python 3.8+ et requests :
pip install requests
Analyse indépendante post-correctif et PoC par 4252nez — article sur OffSecKit. Vulnérabilités originales signalées par Hyeonjun Ahn (@deayzl) et créditées dans le bulletin de sécurité de mai 2026 de NVIDIA ; ce dépôt n'a aucune affiliation avec ce rapport.
MIT — voir LICENSE.