
CVE-2026-24207 — NVIDIA Triton SageMaker 인증 우회를 통한 비인증 RCE. 탐지 스크립트, 우회 데모, RCE 체인 PoC 및 IDS 규칙.
인증되지 않은 공격자는 SageMaker 및 Vertex AI HTTP 포트에서 NVIDIA Triton Inference Server의 모델 관리 표면에 도달할 수 있습니다 — 운영자의
--http-restricted-api구성을 우회합니다. SageMaker MME LOAD 프리미티브와 Python 백엔드 모델을 결합하면, 공격자가 Triton이 읽을 수 있는 파일 시스템 경로에 모델 파일을 배치할 수 있을 때 Triton 프로세스 사용자 권한으로 사전 인증 원격 코드 실행이 가능합니다.
범위. PoC 스크립트는 CVE-2026-24207 (SageMaker)을 공식 NVIDIA NGC 컨테이너에서 검증된 무인증 RCE 체인을 포함하여 엔드투엔드로 재현합니다. 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를 참조하세요.
# 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
--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년 5월 보안 게시판에서 공로를 인정받았습니다. 이 저장소는 해당 보고와 관련이 없습니다.
MIT — LICENSE 참조.
| 파일 | 용도 |
|---|
detect.py | 비파괴적 패치 상태 확인 |
bypass_demo.py | 우회 메커니즘의 교육용 나란히 비교 |
exploit.py | 모델 관리 프로브 + RCE 체인 데모 |
example/ | RCE 데모용 무해한 Python 백엔드 모델 |
detection/triton-access.md | 탐지 지침 (버전 지문 + 로그 시그니처) |
detection/suricata.rules | 네트워크 IDS 규칙 |
docs/root-cause.md | 간단한 근본 원인 설명 |
docs/patch-diff.md | 하나의 diff로 보는 수정 사항 |
docs/rce-chain.md | Python 백엔드를 통한 무인증 RCE 체인 |