CVE-2026-24207 — NVIDIA Triton SageMaker Auth-Bypass zu unauth RCE. Erkennungsskript, Bypass-Demo, RCE-Chain-PoC und IDS-Regeln.
Nicht authentifizierte Angreifer können die Modellverwaltungsoberfläche des NVIDIA Triton Inference Server auf den SageMaker- und Vertex-AI-HTTP-Ports erreichen — unter Umgehung der
--http-restricted-api-Konfiguration des Betreibers. In Kombination mit dem SageMaker MME LOAD-Primitiv und einem Python-Backend-Modell ermöglicht dies eine Remote-Codeausführung vor der Authentifizierung als Benutzer des Triton-Prozesses, wenn der Angreifer Modelldateien auf einem für Triton lesbaren Dateisystempfad platzieren kann.
Umfang. Die PoC-Skripte reproduzieren CVE-2026-24207 (SageMaker) vollständig, einschließlich der nicht authentifizierten RCE-Kette, verifiziert gegen die offiziellen NVIDIA NGC-Container. CVE-2026-24206 (Vertex AI) ist der strukturell identische Schwesterfehler — bestätigt durch Quellcode-/ Patch-Überprüfung von PR #8680 (, ), nicht im Labor reproduziert.
docs/root-cause.md| Komponente | Anfällig | Behoben |
|---|---|---|
| NVIDIA Triton Inference Server | ≤ 26.02 (v2.66.0) | 26.03 (v2.67.0) |
python3 detect.py <host:sagemaker_port>
Sendet ein schreibgeschütztes GET. Gibt PATCHED, VULNERABLE oder UNKNOWN aus.
Nimmt keine Änderungen vor.
python3 bypass_demo.py <host:sagemaker_port>
Sendet drei Sonden — Health (immer erfolgreich), /models MIT dem
konfigurierten Authentifizierungsheader (autorisierte Basislinie) und /models
OHNE den Header (die Umgehung). Die nebeneinander angezeigten Antwortcodes
zeigen den Verhaltensunterschied. Keine Zustandsänderung. Siehe
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
Der --mode rce-Ablauf lädt ein Python-Backend-Modell von einem
benutzerdefinierten Pfad. Wenn das Verzeichnis eine gültige config.pbtxt +
model.py enthält (siehe example/ für eine harmlose Demo),
wird model.py als Benutzer des Triton-Prozesses ausgeführt — vor der
Authentifizierung.
Siehe docs/rce-chain.md für die Mechanik der Kette
und Voraussetzungen.
| Datei | Zweck |
|---|---|
detect.py | Nicht-destruktive Patch-Status-Prüfung |
bypass_demo.py | Lehrreiche Gegenüberstellung der Umgehungsmechanik |
exploit.py | Modellverwaltungssonde + RCE-Ketten-Demonstration |
example/ | Harmloses Python-Backend-Modell für die RCE-Demo |
detection/triton-access.md | Erkennungsleitfaden (Versions-Fingerabdruck + Log-Signaturen) |
detection/suricata.rules | Netzwerk-IDS-Regel |
docs/root-cause.md | Kurze Ursachenerklärung |
docs/patch-diff.md | Der Fix, in einem Diff |
docs/rce-chain.md | Die nicht authentifizierte RCE-Kette über Python-Backend |
Python 3.8+ und requests:
pip install requests
Unabhängige Post-Patch-Analyse und PoC von 4252nez — Artikel auf OffSecKit. Ursprüngliche Schwachstellen gemeldet von Hyeonjun Ahn (@deayzl) und im NVIDIA-Sicherheitsbulletin vom Mai 2026 gewürdigt; dieses Repository steht in keiner Verbindung zu diesem Bericht.
MIT — siehe LICENSE.