vLLM Denial of Service Vulnerability via M-RoPE Prompt Embeds (CVE-2026-55514)
A denial of service vulnerability, CVE-2026-55514, exists in vLLM versions from 0.12.0 up to, but not including, 0.24.0, allowing an authorized remote user to send a specially crafted `/v1/completions` request that leverages pure prompt embeds with an M-RoPE-enabled model to trigger an assertion failure, causing the vLLM server application to fatally crash.
CVE search metadata
CVE search record: CVE-2026-55514. Severity: medium. CVSS: 6.5. EPSS: 0.37%. KEV: no. Product: vLLM (>= 0.12.0, < 0.24.0). Brief: vLLM Denial of Service Vulnerability via M-RoPE Prompt Embeds (CVE-2026-55514). Brief link: https://feed.craftedsignal.io/briefs/2026-07-vllm-dos/
A critical denial of service vulnerability, identified as CVE-2026-55514, affects vLLM versions 0.12.0 through 0.23.x. The flaw arises when a vLLM server is configured with --enable-prompt-embeds and is running a model that utilizes M-RoPE (Multi-head Rotational Position Embedding). An authorized remote user can exploit this vulnerability by sending an HTTP POST request to the /v1/completions endpoint with a JSON payload where the prompt field is explicitly set to null and the prompt_embeds field contains any non-null data. This specific combination bypasses expected conditions within the _init_mrope_positions method in GPUModelRunner.py, causing an assertion req_state.prompt_token_ids is not None to fail. The assertion failure results in a fatal crash of the EngineCore, leading to the complete shutdown of the vLLM server application. This attack is described as "extremely easy" to perform and can be triggered by nearly verbatim examples from the official prompt_embeds documentation, accounting for model and connection details.
Attack Chain
- An attacker identifies a vulnerable vLLM server instance (versions 0.12.0 to 0.23.x) configured with
--enable-prompt-embedsand running an M-RoPE-supported model. - The attacker obtains authorization to make requests to the
/v1/completionsendpoint on the target vLLM server. - The attacker crafts a malicious HTTP POST request targeting the
/v1/completionsendpoint. - Within the request's JSON body, the attacker sets the
promptfield tonulland provides non-null data for theprompt_embedsfield. - The vLLM server receives and begins processing the specially crafted
/v1/completionsrequest. - During processing, the
_init_mrope_positionsmethod inGPUModelRunner.pyis invoked. - The method attempts to execute an assertion
assert req_state.prompt_token_ids is not None. - Due to the attacker's payload setting
prompt=null,req_state.prompt_token_idsisNone, causing the assertion to fail and the EngineCore to fatally crash, resulting in a denial of service for the entire application.
Impact
This vulnerability leads to a complete denial of service for affected vLLM server applications. Any configuration where --enable-prompt-embeds is active and an M-RoPE-supported model is in use is vulnerable. An authorized remote attacker can trivially trigger this assertion failure, causing the EngineCore to crash and shutting down the entire server. This results in unavailability of the large language model service, disrupting any applications or users relying on it. The ease of exploitation means that systems are at high risk if left unpatched. There are no reported specific victim counts, but any organization using the affected vLLM versions could be targeted.
Recommendation
- Upgrade vLLM to version 0.24.0 or later immediately to patch CVE-2026-55514.
- Monitor vLLM server logs for unexpected assertion failures or fatal EngineCore crashes, particularly those indicating
AssertionError: M-RoPE requires prompt_token_ids to be available.. - If immediate patching is not possible, consider implementing network-level filtering or WAF rules to detect and block HTTP POST requests to
/v1/completionsthat contain a JSON body withprompt: nulland a non-nullprompt_embedsfield.