CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-73559

CVE-2026-73559: Uncontrolled Resource Consumption in vLLM API completions

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 13, 2026·5 min read·7 visits

Executive Summary (TL;DR)

vLLM is vulnerable to memory and queue exhaustion via unbounded prompt arrays in the completions API, fixed in v0.26.0.

CVE-2026-73559 is an uncontrolled resource consumption vulnerability in the vLLM engine, specifically within the /v1/completions API endpoint, allowing authenticated attackers to cause application-level denial of service via unbounded prompt arrays.

Vulnerability Overview

The CVE-2026-73559 vulnerability represents an uncontrolled resource consumption flaw (CWE-400) within the OpenAI-compatible completions API of the vLLM serving framework.

In deployment scenarios, vLLM acts as a high-performance inference engine, optimizing GPU memory consumption and transaction throughput via advanced scheduling algorithms. The API exposes multiple endpoints, including /v1/completions, which ingest payloads modeled after the OpenAI API specification to support batch-processing capabilities.

Prior to version 0.26.0, the validation layers failed to enforce an upper limit on the number of elements supplied in input arrays. This architectural oversight allows an authenticated client to issue a single HTTP request containing an arbitrary number of nested prompt sequences, bypassing connection-level or thread-level rate limits.

Upon receiving such a request, the engine attempts to process every element concurrently, leading to downstream resource starvation. The system fans out tasks into individual async generators, depleting available memory buffers, and causing host-level or container-level crash states.

Root Cause Analysis

The root cause of the vulnerability resides in the lack of input length checks within the Pydantic schema deserialization path of CompletionRequest. Located in vllm/entrypoints/openai/completion/protocol.py, the schema specifies the prompt parameter as a highly flexible Union supporting multiple configurations, such as lists of token arrays.

When a list is provided, the data passes to vllm/renderers/inputs/preprocess.py where prompt_to_seq() is called. This function performs array expansion, parsing each index of the outer list as an independent input sequence to prepare for execution.

Next, the engine loops through these sequences inside the OnlineRenderer.preprocess_completion() method of vllm/renderers/online_renderer.py. For every sequence processed, vLLM schedules an independent model generation task.

The execution of these parallel tasks occurs inside vllm/entrypoints/openai/completion/serving.py by calling self.engine_client.generate(). Because there was no validation check on the outer array size, an input array containing tens of thousands of elements causes the engine to allocate an identical number of concurrent generator slots, exhausting the server's asynchronous event loops, request queues, and memory buffers.

Code Analysis

The vendor addressed the vulnerability in version 0.26.0 by inserting a strict before-validation check on Pydantic models. This validation leverages a new configuration variable, VLLM_MAX_COMPLETION_PROMPTS, which restricts the maximum number of nested prompts allowed per request to a default of 1024.

Before the patch, the CompletionRequest class handled the prompt field without any array length verification, as shown in the original implementation:

# Original implementation lacking array length validation
prompt: Optional[Union[str, List[str], List[int], List[List[int]]]] = None

The patched version introduces an active Pydantic model validator inside vllm/entrypoints/openai/completion/protocol.py that intercepts the request dictionary before parsing:

# Patched implementation in protocol.py
@model_validator(mode="before")
@classmethod
def validate_prompt_list_length(cls, data):
    max_prompts = envs.VLLM_MAX_COMPLETION_PROMPTS
 
    prompt = data.get("prompt")
    if (
        isinstance(prompt, list)
        and len(prompt) > 0
        and not is_list_of(prompt, int)
        and len(prompt) > max_prompts
    ):
        raise VLLMValidationError(
            f"prompt list length {len(prompt)} exceeds the maximum "
            f"allowed count of {max_prompts}. To increase this "
            "limit, set the VLLM_MAX_COMPLETION_PROMPTS "
            "environment variable.",
            parameter="prompt",
        )
    return data

By implementing not is_list_of(prompt, int), the validator distinguishes between a single prompt composed of an array of token IDs (which must not be restricted by this logic) and a batch of multiple prompts. If the criteria are met and the list exceeds the maximum threshold, the validator immediately raises a VLLMValidationError, preventing downstream resource allocation.

Exploitation Methodology

Exploitation of CVE-2026-73559 requires network access to the target vLLM API server and authenticated client privileges where access control is enabled. The attack is straightforward, as it requires only standard JSON payload structures over HTTP POST.

To trigger the resource consumption condition, the attacker issues a request containing a single prompt parameter holding an array of 50,000 minimal string items. The HTTP payload structure matches the following standard model definition:

{
  "model": "meta-llama/Llama-3-8B-Instruct",
  "prompt": ["x", "x", "x", ... (repeated 50,000 times)],
  "max_tokens": 1
}

When the vLLM engine receives this payload, it bypasses connection-level limits because the server treats it as a single request. The diagram below represents the exact flow of the exploit vector leading to complete host starvation:

The execution of 50,000 individual generator loops rapidly exhausts the event queue and system memory, rendering the system unavailable to legitimate users and causing a hard process termination.

Impact Assessment & Mitigation

The impact of CVE-2026-73559 is rated as Medium (CVSS 6.5) due to its high availability impact, though it does not affect data confidentiality or integrity. Exploitation results in the immediate denial of service of the vLLM inference engine, affecting all workloads running on the same host.

To fully remediate this vulnerability, organizations must upgrade the vLLM package to version 0.26.0 or higher. This introduces the VLLM_MAX_COMPLETION_PROMPTS environment variable which limits the array depth at the schema layer.

In environments where immediate software upgrading is impossible, several defensive mitigations can be deployed:

  1. Ingress API Gateway Validation: Configure a proxy layer like Envoy or NGINX to inspect the /v1/completions request body and reject requests containing prompt arrays with element counts exceeding 128.

  2. Payload Size Restrictions: Set tight limits on HTTP POST body sizes (e.g., 512KB) to hinder the transmission of dense list payloads.

  3. Network Isolation: Ensure the API server is restricted to trusted internal networks, minimizing exposure to untrusted entities.

Fix Analysis (1)

Technical Appendix

CVSS Score
6.5/ 10

Affected Systems

vLLM Engine

Affected Versions Detail

Product
Affected Versions
Fixed Version
vllm
vllm-project
>= 0.19.0, < 0.26.00.26.0
AttributeDetail
CWE IDCWE-400
Attack VectorNetwork
CVSS v3.16.5
ImpactDenial of Service (DoS)
Exploit StatusPoC / Theoretical

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
T1499.004Endpoint Denial of Service: Application Exhaustion
Impact

Vulnerability Timeline

Advisory published and patch merged into master
2026-02-12

References & Sources

  • [1]vLLM Security Advisory
  • [2]vLLM Pull Request #47845

More Reports

•about 4 hours ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 5 hours ago•CVE-2026-73654
8.5

CVE-2026-73654: Prototype Pollution in Trigger.dev leading to Cascading Denial of Service

CVE-2026-73654 is a high-severity prototype pollution vulnerability in Trigger.dev. The flaw occurs during the handling of run-metadata updates through the PUT /api/v1/runs/:runId/metadata endpoint. Because user-supplied keys are parsed directly by the @jsonhero/path library without sanitization, an authenticated attacker with low privileges can pollute the global Object.prototype. This causes database queries via Prisma ORM to fail validation and induces unhandled exceptions in the Prometheus metrics client, resulting in a process-wide denial of service.

Alon Barad
Alon Barad
7 views•6 min read
•about 9 hours ago•CVE-2026-54526
9.9

CVE-2026-54526: Strict Template Referencing Bypass and Privilege Escalation in Argo Workflows

A critical security bypass vulnerability in Argo Workflows allows authenticated attackers with workflow submission privileges to bypass 'Strict' or 'Secure' template referencing restrictions. By injecting unvalidated fields into the nested ArtifactGC configuration, attackers can execute arbitrary pod patches, leading to host namespace escape and cluster-wide privilege escalation.

Alon Barad
Alon Barad
11 views•6 min read
•about 10 hours ago•CVE-2026-54249
6.8

CVE-2026-54249: Server-Side Request Forgery via Confused Deputy in Pydantic AI UI Adapters

A Server-Side Request Forgery (SSRF) / Confused Deputy vulnerability has been identified in Pydantic AI UI Adapters (such as VercelAIAdapter). Under certain conditions, a malicious client can supply manipulated message history with provider metadata that forces the server to resolve files within privileged cloud environments (AWS S3, Google Cloud Storage) or model providers. This occurs because the adapters deserialize client-provided metadata structures directly into UploadedFile instances without validation, which are subsequently fetched using high-privilege server credentials.

Alon Barad
Alon Barad
5 views•7 min read
•about 11 hours ago•GHSA-RM43-82J9-R4MJ
8.2

GHSA-RM43-82J9-R4MJ: Path Traversal (Arbitrary File Read) in atomic-agents-stack Dashboard

A path traversal vulnerability in the optional dashboard server of atomic-agents-stack before version 1.1.0 allows unauthenticated remote attackers to read arbitrary files from the host filesystem.

Amit Schendel
Amit Schendel
4 views•6 min read
•1 day ago•CVE-2026-9318
5.4

CVE-2026-9318: Stored Cross-Site Scripting via HTML Export in Jazzband tablib

CVE-2026-9318 is a stored cross-site scripting (XSS) vulnerability affecting Jazzband tablib versions prior to 3.10.0. The flaw is located in the HTML export functionality of multi-sheet Databook objects. Due to raw f-string interpolation, unsanitized sheet titles containing malicious script tags are rendered directly as HTML, allowing arbitrary client-side code execution in a victim's browser.

Amit Schendel
Amit Schendel
8 views•8 min read