Executive brief
vLLM is an open-source framework for serving large language models via an OpenAI-compatible API. The completions endpoint allows authenticated users to submit a list of prompts in a single request without any outer bound on the list size. An attacker can exploit this to craft a single API call containing thousands of prompts, forcing the server to allocate and process an extreme number of backend requests, which can exhaust CPU and memory resources and degrade service availability for other users sharing the same vLLM instance.
Technical details
The vulnerability exists in the `/v1/completions` request handling (vllm/entrypoints/openai/completion/). The `CompletionRequest.prompt` parameter accepts `list[str]`, `list[list[int]]`, or scalar prompt types. The `prompt_to_seq()` function in vllm/renderers/inputs/preprocess.py correctly wraps scalar prompts as single-element lists but passes through list-shaped prompts unchanged. The `OnlineRenderer.preprocess_completion()` method then extends a prompts list with all elements, and the serving path creates one async generator and one response slot per rendered prompt via `self.engine_client.generate()`. No outer prompt-count limit is enforced before rendering or generator creation. An authenticated API client can exploit this by sending a completion request with a `prompt` field containing tens of thousands of short strings or token-id lists, while keeping per-prompt parameters (max_tokens, n) minimal. This causes linear scaling of CPU, memory, async task scheduling, engine request slots, and response buffering. Patches are available in version 0.26.0.
Affected products
- vLLM Project vLLM >=0.19.0, <0.26.0
Timeline
- 2026-07-27: disclosed
- 2026-08-13: patched: patched in version 0.26.0
- 2026-08-13: advisory