Skip to main content

vLLM CVE-2026-69147

| EUVDEUVD-2026-80935 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-09-16 GitHub_M GHSA-8pw2-6jv3-mj5j
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
    Obtain API access to video-capable vLLM endpoint
  2. Delivery
    Craft request with media_io_kwargs.video.video_backend=pynvvideocodec
  3. Exploit
    Force unbudgeted GPU decoder allocation
  4. Execution
    Repeat to exhaust shared GPU memory
  5. Impact
    Worker crash / denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a specific, non-default multimodal stack: (1) a vLLM deployment before 0.28.0 that is video-capable and serving a model accepting video input via Chat Completions or Responses; (2) the PyNvVideoCodec library actually installed on the GPU host; and (3) startup configuration having selected a software video decoder (the bug is that the request-level 'pynvvideocodec' backend overrides this without being memory-budgeted). The attacker must be able to submit video requests, matching PR:L - some level of API access is needed, but vLLM ships without built-in authentication, so this is a low bar in many deployments. Limiting factors: text-only or non-video vLLM deployments, hosts without PyNvVideoCodec installed, and any version 0.28.0 or later are not exploitable; impact is confined to availability (GPU memory exhaustion / worker crash), with no data exposure or code execution.

Impact

This is a genuine but bounded availability-only issue, not a high-priority critical flaw. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, 6.5 Medium) is internally consistent with the description: a network-reachable, low-complexity, authenticated request that impacts only availability (CWE-400 resource exhaustion) with no confidentiality or integrity impact. No EPSS score was provided in the input, there is no CISA KEV listing, and no public exploit code is referenced - the linked GitHub artifacts are the security advisory, the fix PR (#47259), and two remediation commits, not weaponized POCs. PR:L is well-justified because the attacker must be able to submit inference requests to the deployment; vLLM ships with no built-in authentication, so 'low privilege' realistically means any client with API access, which in many self-hosted deployments is a broad set. The practical risk is further gated by a specific non-default stack (see exploitation conditions), so this is a targeted operational-availability concern for a subset of multimodal GPU deployments rather than a widespread emergency. No signals conflict; the main gap is the absent EPSS value, which prevents a probabilistic exploitation estimate.

Exploit ScenarioDerived

An attacker with API access to a video-capable vLLM GPU endpoint (running before 0.28.0 with PyNvVideoCodec installed) submits Chat Completions or Responses requests that set media_io_kwargs.video.video_backend to 'pynvvideocodec', forcing the GPU decoder even though startup config selected a software decoder. Because _reserve_mm_ipc_gpu_memory only budgets from static config, the request-selected backend allocates an unbudgeted CUDA context, decoder surfaces, and decoded-frame buffers that eat into the KV-cache budget, and repeated requests exhaust shared GPU memory. This results in request failures, worker crashes, and denial of service; no public exploit code is identified at time of analysis, though the trivial request-body manipulation makes it easy to reproduce.

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

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

Alert me

AnalysisAIv1 – Sep 16, 2026

GPU memory exhaustion in vLLM versions prior to 0.28.0 lets an attacker with low-privileged API access (PR:L in the CVSS vector) force the server to load the PyNvVideoCodec hardware video decoder on demand by setting media_io_kwargs.video.video_backend to 'pynvvideocodec' in a Chat Completions or Responses request, even when the operator configured a software decoder at startup. Because the engine budgets decoder VRAM only from static configuration, the request-selected backend allocates a CUDA context, decoder surfaces, and decoded-frame buffers that were never deducted from the KV-cache budget, so repeated video requests can exhaust shared GPU memory and cause request failures, worker crashes, and denial of service. The issue is availability-only (C:N/I:N/A:H) and exploitable only on video-capable GPU deployments running a video-accepting model with PyNvVideoCodec actually installed; vLLM 0.28.0 and later are not affected. No public exploit code was identified at time of analysis and the flaw is not confirmed actively exploited (CISA KEV), though the upstream fix commits and PR are publicly visible.

RemediationAI

Vendor-released patch: upgrade vLLM to 0.28.0 or later, which contains the merge_kwargs policy change that strips request-level 'video_backend'/'backend' values requiring the GPU unless they match the startup configuration - apply it via the vendor advisory at https://github.com/vllm-project/vllm/security/advisories/GHSA-8pw2-6jv3-mj5j or by picking up pull request https://github.com/vllm-project/vllm/pull/47259 (commits 283893c72292ede38d277e3cd2b9b64c3e4f1dda and ba22152096b2484faa3579624a253d54804d876d). If immediate upgrade is not possible, the most effective compensating control is to remove the attack surface entirely by uninstalling or excluding PyNvVideoCodec from the GPU host, so that the pynvvideocodec backend cannot be instantiated; the trade-off is loss of hardware-accelerated video decoding, which may reduce video-ingest throughput. Where the codec must remain installed, restrict who can submit video-bearing requests to the Chat Completions and Responses endpoints (vLLM ships without built-in authentication, so an authenticating reverse proxy or network-level allowlisting in front of the API is required) and cap per-client request concurrency to limit how many decoding contexts can be created in parallel - both add operational overhead and can degrade legitimate multimodal workloads. Operators should also monitor GPU memory headroom and worker restarts for signs of budget overrun, and be aware that because the engine only budgets VRAM from static configuration, enforcing a consistent static decoder choice does not by itself prevent the per-request backend override on unpatched builds.

Affected VersionsENISA

vllm < 0.28.0

Affected Packages

pypi vllm fix: 0.28.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

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

Technical ContextAI · show details

The root cause is CWE-400, Uncontrolled Resource Consumption, in vLLM's multimodal media pipeline. vLLM resolves video decoding backends through VIDEO_LOADER_REGISTRY, an ExtensionManager-backed registry of loaders (software backends such as opencv, pyav, and torchcodec, plus the GPU-backed PyNvVideoCodec registered under PYNVVIDEOCODEC_VIDEO_BACKEND). VideoMediaIO.merge_kwargs previously merged request-supplied runtime kwargs such as 'video_backend' and the codec-level 'backend' key over the engine's static defaults without any policy check, and MediaConnector.fetch_video forwarded the resulting choice to VideoMediaIO. The engine's _reserve_mm_ipc_gpu_memory budgeting logic sizes decoder memory reservations exclusively from the startup configuration, so when a request flipped the backend to the PyNvVideoCodec hardware decoder, the newly created CUDA context, decoder surfaces, and decoded-frame allocations consumed GPU memory outside the accounted KV-cache budget. The upstream fix adds a requires_gpu flag to VIDEO_LOADER_REGISTRY.register (PyNvVideoCodec registered with requires_gpu=True) and a backend_requires_gpu() lookup, then makes merge_kwargs strip any request-level 'video_backend' or 'backend' value that requires the GPU unless the identical value was already present in the static (startup) configuration, emitting a warning_once when it does so. The accompanying tests exercise exactly this strip/preserve behavior, confirming that software backends pass through unchanged while unconfigured GPU backends are removed from the merged kwargs.

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 request with no built-in auth maps to PR:L and AC:L; impact is pure GPU-memory exhaustion (A:H) with no confidentiality or integrity effect, and no scope change.

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
SUSE MEDIUM
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

2
Patch available
Sep 16, 2026 - 19:19 EUVD
CVE Published
Sep 16, 2026 - 17:49 cve.org
MEDIUM 6.5

DescriptionCVE.org

vLLM is an inference and serving engine for large language models. Prior to 0.28.0, request bodies for Chat Completions and Responses can set media_io_kwargs.video.video_backend to pynvvideocodec, and MediaConnector.fetch_video forwards that choice to VideoMediaIO even when startup configuration selected a software decoder. The engine's _reserve_mm_ipc_gpu_memory logic budgets decoder memory only from static configuration, so the request-selected VIDEO_LOADER_REGISTRY backend can create a CUDA context, decoder surfaces, and decoded-frame allocations that were not removed from the engine's KV-cache budget. An attacker able to submit video requests to a video-capable GPU deployment with PyNvVideoCodec installed can exhaust shared GPU memory, causing request failures, worker crashes, or denial of service. The first release containing the fix is version 0.28.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 2 pypi packages depend on vllm (2 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.28.0.

Threat Intelligence Overview

EPSS Score
0.5%
Top 61% exploitable
Prevalence
High
vLLM is a widely deployed LLM inference engine, but the vulnerable path is GPU-video/PyNvVideoCodec-scoped
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

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 Yes
EPSS 0.5%
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
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-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

CVE-2026-55646 MEDIUM POC
6.5 Jul 06

Memory exhaustion in vLLM 0.22.0-0.23.0 allows authenticated API callers to crash or destabilize the inference server by

Vendor StatusVendor

SUSE

Severity: Moderate

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