🇰🇷 한글 설명
vLLM 0.29.0 미만 버전에서 OpenAI 호환 API를 통해 사용자 제어 가능한 stop_token_ids를 처리할 때, 해당 ID가 모델의 어휘 범위 내에 있는지 검증하지 않는 취약점이 존재합니다. 공격자가 범위를 벗어난 ID를 포함한 요청을 보내면 CUDA 인덱싱 오류가 발생하여 엔진 코어가 치명적인 상태에 빠지며, 이로 인해 서비스 재시작 전까지 모든 요청이 실패하는 서비스 거부(DoS) 상태가 됩니다.
💡 쉬운 설명
잘못된 숫자를 입력하여 인공지능 엔진을 강제로 멈추게 만드는 공격입니다. 한 번의 잘못된 요청만으로도 전체 AI 서비스가 먹통이 되어 다시 켜기 전까지 사용할 수 없게 됩니다.
🇺🇸 원문 (English)
vLLM before 0.29.0 accepts user-controlled stop_token_ids on the OpenAI-compatible POST /v1/completions and POST /v1/chat/completions endpoints but validates only that the values are integers, not that each token id is within the model vocabulary/logits range. When min_tokens > 0, the stop token ids are used as logits indices to suppress stop tokens, so an out-of-range id reaches a CUDA indexing operation (index_put_) and triggers a device-side assertion. An authenticated API user can send a single malformed completion request that returns 500 Internal Server Error and puts EngineCore into a fatal state, causing subsequent requests to fail until the service is restarted (denial of service).
📍 영향받는 시스템
vLLM versions before 0.29.0
⚔️ 공격 벡터
인증된 API 사용자가 OpenAI 호환 엔드포인트(/v1/completions 또는 /v1/chat/completions)로 범위를 벗어난 stop_token_ids를 포함한 POST 요청 전송
🛡️ 대응 방법
vLLM 버전을 0.29.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.29.0보다 낮으면 취약한 상태입니다.
pip show vllm | grep Version