Skip to main content

vLLM CVE-2026-115916

| EUVDEUVD-2026-110036 MEDIUM
Improper Validation of Array Index (CWE-129)
2026-10-26 GitHub_M GHSA-q97c-p368-75c4
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach vLLM inference endpoint accepting token ids
  2. Delivery
    Craft pre-tokenized prompt with id equal to vocab size
  3. Exploit
    Bypass off-by-one input-id validation
  4. Execution
    Unmasked out-of-range F.embedding lookup (tp=1)
  5. Impact
    CUDA device-side assert crashes engine (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
Exploitation Conditions

Exploitation requires ALL of: (1) the attacker can submit pre-tokenized input to the server via /v1/completions with prompt given as token ids, a /tokenize-fed flow, or the kv_transfer_params["prompt_token_ids"] reuse path; (2) the model is served at tensor-parallel size 1 - at tp>1 VocabParallelEmbedding masks indices via get_masked_input_and_mask, so the id is clamped (possibly wrong output) rather than crashing; and (3) the model's vocabulary is an exact multiple of the 64-row embedding padding size with tokenizer.vocab_size one past the largest real id, which gives zero padding headroom - Llama-2-family models (vocab 32000) are the clear case, whereas Qwen2.5 is NOT affected because it has padded headroom. The specific malicious value is a single token id equal to the vocabulary size. CVSS PR:L indicates a caller with at least low-privilege API access is required; these deployment prerequisites, not raw network reach, are the real limiting factors.

Impact

Signals are moderate and internally consistent. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H scores 6.5 (MEDIUM): network-reachable, low attack complexity, low privilege (PR:L indicates an authenticated/API-level caller), availability-only impact with no confidentiality or integrity loss - matching a pure denial-of-service that crashes the engine but exposes no data. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with a DoS rather than RCE. This is NOT in CISA KEV (no confirmed active exploitation), and no EPSS score was supplied, so exploitation probability cannot be quantified from the input - state this gap explicitly. No public exploit is referenced (only the advisory, fix PR, fix commit, and release are linked), though GHSA-q97c-p368-75c4 documents the trigger in full detail, lowering the bar for an attacker to reproduce it. Net: a legitimate MEDIUM-severity availability issue, meaningful for anyone exposing a vLLM endpoint that accepts pre-tokenized input, but gated by specific deployment conditions (tensor-parallel size 1 AND a model whose vocabulary is an exact multiple of 64 such as the Llama-2 family) - not a broad, unauthenticated, high-urgency emergency.

Exploit ScenarioDerived

A client able to reach a vLLM inference API that accepts pre-tokenized input (e.g. /v1/completions with prompt supplied as token ids, /tokenize-fed flows, or the kv_transfer_params["prompt_token_ids"] reuse path) sends a single request containing a token id equal to the vocabulary size (e.g. 32000 on a Llama-2 model at tensor-parallel size 1). The id slips past vLLM's off-by-one input validation and reaches F.embedding out of range, raising a CUDA device-side assert that poisons the CUDA context and takes the serving engine down. No public PoC is referenced, but the GHSA advisory describes the exact trigger.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 26, 2026

Out-of-vocabulary token IDs slip past vLLM's prompt validation and can crash the inference engine, turning a single malformed request into a denial of service. Releases prior to 0.32.0 derive max_token_id from the tokenizer's vocabulary count rather than the largest valid index, so a pre-tokenized prompt carrying the ID equal to the vocabulary size is accepted and reaches the embedding lookup one row out of range, raising a CUDA device-side assert that poisons the context and terminates the engine. The crash is confined to models whose vocabulary is an exact multiple of the 64-row embedding padding size (Llama-2-family, vocab 32000) served at tensor-parallel size 1; the assessed CVSS 3.1 score is 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H), reflecting that low-privilege API access is needed and that availability is the only impacted property, and no public exploit was identified at time of analysis.

RemediationAI

Upgrade to vLLM 0.32.0, the release that corrects the bound in get_cached_tokenizer so max_token_id becomes max(max(vocab.values()), tokenizer.vocab_size - 1); the fix landed in pull request https://github.com/vllm-project/vllm/pull/59491 (commit 37cecc8141e2dcba9dd534897a164d4baaf27229) and shipped in https://github.com/vllm-project/vllm/releases/tag/v0.32.0, with the advisory at https://github.com/vllm-project/vllm/security/advisories/GHSA-q97c-p368-75c4. If an upgrade cannot be scheduled immediately, the trigger conditions themselves define the controls: restrict or disable untrusted submission of pre-tokenized prompts through /v1/completions with prompt given as token IDs, /tokenize-fed flows, and the kv_transfer_params["prompt_token_ids"] reuse path, or add front-end validation that rejects any token ID greater than the tokenizer's largest real ID - the trade-off is loss of client-side tokenization and prompt-reuse functionality for callers that rely on those paths. Serving the affected models at tensor-parallel size greater than 1 avoids the device-side assert because the embedding lookup masks indices, but the advisory indicates that case yields possibly incorrect output rather than a guarantee of safety, so it should not be treated as equivalent to patching. No patch workaround is documented beyond updating to 0.32.0.

Affected VersionsENISA

vllm < 0.32.0

Affected Packages

euvd vllm fix: 0.32.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The defect is an improper-validation-of-array-index (CWE-129) with an off-by-one (CWE-193) root cause inside vLLM's cached Hugging Face tokenizer wrapper. vllm/tokenizers/hf.py sets max_token_id = max(max(vocab.values()), tokenizer.vocab_size); because tokenizer.vocab_size is a count, this can exceed the largest real ID by one - for Llama-2 tokenizers max(vocab.values()) is 31999 while vocab_size is 32000. vllm/v1/engine/input_processor.py then validates IDs against max(tokenizer.max_token_id, model_config.get_vocab_size() - 1), which resolves to 32000 and admits an index that the embedding matrix, padded with pad_vocab_size(32000, 64) to exactly 32000 rows (valid indices 0..31999), cannot represent. At tensor-parallel size 1, VocabParallelEmbedding.forward performs no index masking before F.embedding, so the out-of-range index triggers a CUDA device-side assert; at tensor-parallel size >1 get_masked_input_and_mask clamps the value instead, which the advisory characterizes as likely incorrect output rather than a crash. Models with padding headroom (Qwen2.5 is named as not affected) absorb the extra index harmlessly. CPE data maps the affected package broadly as cpe:2.3:a:vllm-project:vllm:*:*:*:*:*:*:*:*, with the fixed branch being 0.32.0.

Know when Vllm gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Network-reachable API caller sends one crafted token id (AC:L); PR:L because an inference endpoint accepting pre-tokenized input is required; engine crash gives A:H with no C/I impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Red Hat 6.5 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Oct 26, 2026 - 18:18 EUVD

DescriptionCVE.org

vLLM is an inference and serving engine for large language models. Prior to 0.32.0, vllm/tokenizers/hf.py computes max_token_id with an off-by-one upper bound, allowing a pre-tokenized prompt ID equal to the vocabulary size to pass validation. For a tensor-parallel size of one and an exact multiple-of-64 vocabulary, VocabParallelEmbedding.forward does not mask that value before F.embedding uses it, causing a CUDA device-side assertion and terminating the engine. This issue is fixed in version 0.32.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Medium
popular LLM inference engine, concentrated in AI/ML serving deployments
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Vllm

View all
CVE-2025-32444 CRITICAL POC
10.0 Apr 30

vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Rated critical severity (CVSS 10.0

CVE-2024-11041 CRITICAL POC
9.8 Mar 20

vllm-project vllm version v0.6.2 contains a vulnerability in the MessageQueue.dequeue() API function. Rated critical sev

CVE-2026-22778 CRITICAL POC
9.8 Feb 02

Information exposure in vLLM inference engine versions 0.8.3 to before 0.14.1. Invalid image requests to the multimodal

CVE-2025-59425 HIGH POC
7.5 Oct 07

Timing-based API key recovery in vLLM before 0.11.0rc2 can let remote attackers bypass bearer-token authentication on de

CVE-2025-30202 HIGH POC
7.5 Apr 30

vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Rated high severity (CVSS 7.5), th

CVE-2026-54234 HIGH POC
7.5 Jul 06

Denial of service in the vLLM LLM inference server (all versions prior to 0.24.0) allows a remote client to crash the sh

CVE-2026-24779 HIGH POC
7.1 Jan 27

vLLM before version 0.14.1 contains a server-side request forgery vulnerability in the MediaConnector class where incons

CVE-2026-57173 MEDIUM POC
6.5 Sep 16

Out-of-memory worker crashes in vLLM can be induced by a single small compressed audio payload submitted to the /v1/chat

CVE-2025-46560 MEDIUM POC
6.5 Apr 30

vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Rated medium severity (CVSS 6.5),

CVE-2026-69147 MEDIUM POC
6.5 Sep 16

GPU memory exhaustion in vLLM versions prior to 0.28.0 lets an attacker with low-privileged API access (PR:L in the CVSS

CVE-2026-105753 MEDIUM POC
6.5 Oct 05

Multimodal inference requests to vLLM deployments running versions prior to 0.28.0 can trigger a process-level assertion

CVE-2026-73559 MEDIUM POC
6.5 Aug 13

Uncontrolled resource consumption in vLLM's OpenAI-compatible completions endpoint allows any authenticated API client t

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy