무슨 일이 있었나
vllm/v1/outputs.py의 LogprobsTensors.empty_cpu()는 torch.empty()로 백킹 int32 텐서를 할당하여 초기화되지 않은 상태로 둡니다. 모델 러너가 KVConnectorBase_V1 하위 클래스에 의해 외부 계산된 것으로 보고된 프리픽스를 가진 요청에 대한 logprobs를 채울 때, 위치 [0..num_computed_tokens-1]은 기록되지 않으며, 다운스트림 tokenizer.decode()는 쓰레기 int32 값을 마주쳐 OverflowError를 발생시키고, 이는 EngineCore 밖으로 전파되어 엔진을 종료시킵니다.
왜 중요한가
커넥터 캐시된 프리픽스에 대해 prompt_logprobs(또는 logprobs + echo=true)가 포함된 단일 API 요청은 EngineCore를 크래시시키고 해당 엔진의 모든 진행 중 요청(동시 사용자 트래픽 포함)을 끊어버릴 수 있으며, 반복 가능한 킬 루프로 작동합니다. 실제 노출은 lm-eval-harness 다중 선택 워크로드(MMLU/ARC/HellaSwag/BBH/PIQA)와 vLLM + LMCache 조합에서 가장 높습니다 (CVSS 7.7).
공격 경로
커넥터 캐시된 프리픽스에 대해 prompt_logprobs가 설정된 요청을 전송하여 공유 엔진을 크래시시키고 동시 사용자 트래픽을 끊습니다.
영향받는 시스템
vLLM >= 0.8.5, < 0.31.0 (KV 커넥터가 있는 V1 엔진).
완화 방안
vLLM 0.31.0으로 업그레이드하세요; 수정은 LogprobsTensors.empty_cpu()에서 torch.empty()를 0으로 초기화된 토큰 ID 및 -inf logprobs로 교체합니다.