무슨 일이 있었나
vLLM의 nemotron_vl.py 및 nano_nemotron_vl.py는 각각 모듈 로드 시 Image.MAX_IMAGE_PIXELS = None을 설정하여 Pillow의 프로세스 전역 압축 해제 폭탄 방어를 영구적으로 비활성화합니다. Nemotron-VL 프로세서 중 하나를 가져온 인스턴스의 /v1/chat/completions에 접근할 수 있는 인증되지 않은 호출자는 상당한 메모리로 압축 해제되는 병리학적 이미지를 제출하여 워커를 OOM-종료시킬 수 있습니다.
왜 중요한가
설정이 프로세스 전역이므로 해당 프로세스의 모든 이미지 로드에 대해 방어가 비활성화되며, 공격은 인증되지 않은 단일 요청으로 가능합니다. 원격 호출자가 공유 vLLM 서빙 인스턴스에서 메모리를 소진시키고 동시 사용자에게 서비스 거부를 일으킬 수 있습니다 (CWE-400, CVSS 7.5).
공격 경로
압축 해제 폭탄 이미지를 /v1/chat/completions로 전송하여 메모리를 소진시키고 워커를 OOM-종료시킵니다.
영향받는 시스템
Nemotron-VL 모델을 배포하는 vLLM >= 0.10.2, < 0.25.0.
완화 방안
vLLM 0.25.0으로 업그레이드하세요 (PR #47010은 모듈 수준 할당을 제거하고 구성 가능한 VLLM_MAX_IMAGE_PIXELS 디코딩 픽셀 수 제한을 추가합니다).