
CVE-2026-24207 — NVIDIA Triton SageMaker auth bypass to unauth RCE. Detection script, bypass demo, RCE-chain PoC, and IDS rules.
Неаутентифицированные злоумышленники могут получить доступ к поверхности управления моделями NVIDIA Triton Inference Server на HTTP-портах SageMaker и Vertex AI — обходя конфигурацию
--http-restricted-apiоператора. В сочетании с примитивом SageMaker MME LOAD и моделью на Python-бэкенде это позволяет выполнить удаленный код до аутентификации (pre-auth RCE) от имени пользователя процесса Triton, если злоумышленник может разместить файлы модели на пути файловой системы, доступном для чтения Triton.
Область. Скрипты PoC воспроизводят CVE-2026-24207 (SageMaker) от начала до конца, включая цепочку неавторизованного RCE, проверенную на официальных контейнерах NVIDIA NGC. CVE-2026-24206 (Vertex AI) — структурно идентичный близнец — подтвержден анализом исходного кода и патча PR #8680 (
docs/root-cause.md,docs/patch-diff.md), но не воспроизведен в лаборатории.
| Компонент | Уязвимые версии | Исправленные |
|---|---|---|
| NVIDIA Triton Inference Server | ≤ 26.02 (v2.66.0) | 26.03 (v2.67.0) |
python3 detect.py <host:sagemaker_port>
Отправляет один GET-запрос только для чтения. Выводит PATCHED, VULNERABLE или UNKNOWN.
Не вносит никаких изменений.
python3 bypass_demo.py <host:sagemaker_port>
Отправляет три запроса — health (всегда успешен), /models С настроенным заголовком аутентификации
(авторизованный базовый уровень) и /models БЕЗ заголовка (обход). Коды ответов рядом показывают
разницу в поведении. Без изменения состояния. См.
docs/root-cause.md.
# Зондирование поверхности управления моделями (перечисление + попытка LOAD + попытка UNLOAD)
python3 exploit.py <host:sagemaker_port>
# Полная цепочка RCE — укажите Triton путь на его файловой системе, который вы контролируете
python3 exploit.py <host:sagemaker_port> --mode rce \
--url /opt/ml/models/<каталог-атакующего> \
--name chaindemo
Поток --mode rce загружает модель на Python-бэкенде из указанного пользователем пути.
Если каталог содержит корректный config.pbtxt + model.py (см. example/ для
безобидной демонстрации), model.py выполняется от имени пользователя процесса Triton — до аутентификации.
См. docs/rce-chain.md для механизма цепочки и предварительных требований.
Python 3.8+ и requests:
pip install requests
Независимый анализ после выхода патча и PoC от 4252nez — статья на OffSecKit. Оригинальные уязвимости сообщены Hyeonjun Ahn (@deayzl) и указаны в благодарностях в бюллетене безопасности NVIDIA за май 2026 года; этот репозиторий не имеет отношения к тому отчету.
MIT — см. LICENSE.
| Файл | Назначение |
|---|
detect.py | Неразрушающая проверка статуса исправления |
bypass_demo.py | Образовательная демонстрация механизма обхода |
exploit.py | Зондирование управления моделями + демонстрация RCE |
example/ | Безобидная модель на Python-бэкенде для демо RCE |
detection/triton-access.md | Рекомендации по обнаружению (версионный отпечаток + сигнатуры журналов) |
detection/suricata.rules | Правило сетевой IDS |
docs/root-cause.md | Краткое объяснение первопричины |
docs/patch-diff.md | Исправление в одном diff-файле |
docs/rce-chain.md | Цепочка неавторизованного RCE через Python-бэкенд |