
Docker 기반 개념 증명으로, NVIDIA Triton 추론 서버의 CVE-2025-23320을 시연하며, 공유 메모리 키 누출을 악용하여 등록 해제/등록 경쟁 조건을 통해 경계를 벗어난 쓰기를 트리거합니다.
CVE-2025-23320 시연
이 저장소는 CVE-2025-23320을 재현하며, CWE-209(민감 정보가 포함된 오류 메시지 생성, CVSS 점수: 7.5)를 시연합니다. 이 취약점은 모든 NVIDIA Triton 추론 서버 25.06 및 이전 버전에 존재합니다.
이 docker 설정은 NVIDIA Triton 추론 서버와 공격 클라이언트를 포함하는 네트워크를 실행합니다. 또한 이 환경은 클라이언트가 Linux에서 실행되도록 보장하므로, CVE는 모든 운영 체제에서 재현 가능합니다.
빌드/실행 방법
docker compose --build-no-cache
처음 실행하는 경우, GitHub에서 NVIDIA Triton 서버 버전 25.06 이미지를 가져오므로 시간이 다소 걸릴 수 있습니다.
그런 다음:
docker compose up
POC
공격 클라이언트 스크립트가 자동으로 실행되며, 다음과 같은 형식의 오류 메시지를 출력합니다: Failed to increase the shared memory pool size for key 'triton_python_backend_shm_region_8a463f1a-fcd6-4c1b-b4b5-df63f9c512ad' to 54525952 bytes.
이 키를 획득한 후, 공격자는 다양한 작업을 수행할 수 있습니다. 우리의 코드 구현에서 공격자는 Triton의 unregister API를 활용했습니다. Triton은 이 API를 호출하는 주체를 검증하지 않으므로, 해당 함수가 실행됩니다. 공격자가 이후 register 함수를 사용하여 경쟁 조건(race condition)을 성공적으로 유발하면, 이는 out-of-bounds(OOB) 쓰기로 이어집니다.