CVE-2026-94627: vLLM: Mooncake KV cache leak enables GPU DoS
HIGHvLLM's Mooncake connector, used in prefill/decode disaggregated deployments, fails to release GPU KV cache blocks when several child requests share one transfer ID. An unauthenticated remote attacker can send completion requests with multiple prompts and make orphaned blocks pile up until GPU memory is exhausted and legitimate requests stop executing. Only a process restart clears the leaked memory. Exploitation likelihood is low to moderate: EPSS is 0.00627 (top 52%), the CVE is not in CISA KEV, no public exploit or Nuclei template exists, and CISA SSVC says TRACK. The impact is availability only, with no confidentiality or integrity loss, but it hits expensive GPU capacity. Upgrade to a vLLM release that includes the fix from PR #49796 (versions after 0.29.0). Until then, put authentication and rate limiting in front of the inference API and alert on GPU memory growing steadily without a matching rise in load.
What is the risk?
Risk is medium-high for exposed deployments and low for others. CVSS 7.5 reflects network reachability, low complexity, no privileges and no user interaction, with the impact limited to availability. Exploitation likelihood is low to moderate (EPSS 0.00627, no public exploit, not in KEV, SSVC TRACK). Exposure is limited to disaggregated prefill/decode setups that use the Mooncake KV transfer connector, which is a narrower population than all vLLM users. Where the endpoint is internet-facing or unauthenticated, the risk rises sharply because the attack needs only ordinary API calls.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| vLLM | pip | — | No patch |
Do you use vLLM? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade vLLM to a release containing the fix from PR #49796 and confirm the Mooncake connector change is included. 2) If you can't patch, switch to a non-Mooncake KV connector or turn off disaggregated prefill/decode where feasible. 3) Make sure the OpenAI-compatible endpoint is not exposed to untrusted networks; require authentication (API keys, gateway) and apply per-client rate limits. 4) Cap or reject completion requests with multiple prompts (batched prompt arrays) at the gateway if the workload doesn't need them. 5) Monitor GPU memory and KV cache usage per worker for monotonic growth, alert on thresholds, and set up health checks with automated rolling restarts as a stopgap. 6) Review gateway logs for clients repeatedly sending multi-prompt completion requests.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-94627?
vLLM's Mooncake connector, used in prefill/decode disaggregated deployments, fails to release GPU KV cache blocks when several child requests share one transfer ID. An unauthenticated remote attacker can send completion requests with multiple prompts and make orphaned blocks pile up until GPU memory is exhausted and legitimate requests stop executing. Only a process restart clears the leaked memory. Exploitation likelihood is low to moderate: EPSS is 0.00627 (top 52%), the CVE is not in CISA KEV, no public exploit or Nuclei template exists, and CISA SSVC says TRACK. The impact is availability only, with no confidentiality or integrity loss, but it hits expensive GPU capacity. Upgrade to a vLLM release that includes the fix from PR #49796 (versions after 0.29.0). Until then, put authentication and rate limiting in front of the inference API and alert on GPU memory growing steadily without a matching rise in load.
Is CVE-2026-94627 actively exploited?
No confirmed active exploitation of CVE-2026-94627 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-94627?
1) Upgrade vLLM to a release containing the fix from PR #49796 and confirm the Mooncake connector change is included. 2) If you can't patch, switch to a non-Mooncake KV connector or turn off disaggregated prefill/decode where feasible. 3) Make sure the OpenAI-compatible endpoint is not exposed to untrusted networks; require authentication (API keys, gateway) and apply per-client rate limits. 4) Cap or reject completion requests with multiple prompts (batched prompt arrays) at the gateway if the workload doesn't need them. 5) Monitor GPU memory and KV cache usage per worker for monotonic growth, alert on thresholds, and set up health checks with automated rolling restarts as a stopgap. 6) Review gateway logs for clients repeatedly sending multi-prompt completion requests.
What systems are affected by CVE-2026-94627?
This vulnerability affects the following AI/ML architecture patterns: model serving, LLM inference clusters, prefill/decode disaggregated serving, GPU-backed inference APIs.
What is the CVSS score for CVE-2026-94627?
CVE-2026-94627 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.63%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0029Denial of AI ServiceAML.T0034.001Resource-Intensive QueriesAML.T0040AI Model Inference API AccessAML.T0049Exploit Public-Facing ApplicationCompliance Controls Affected
What are the technical details?
Original Advisory
vLLM Mooncake connector through 0.29.0 fails to properly manage GPU KV cache block ownership when concurrent child requests share a single transfer ID in prefill/decode disaggregated deployments. Attackers can trigger GPU memory exhaustion by submitting completion requests with multiple prompts, causing orphaned KV cache blocks to accumulate until process restart and eventually preventing legitimate requests from executing.
Exploitation Scenario
An attacker finds a vLLM completions endpoint that is reachable without strong authentication, backed by a Mooncake-based prefill/decode disaggregated cluster. They repeatedly submit /v1/completions requests with an array of several prompts, so concurrent child requests share a transfer ID and leave orphaned KV cache blocks on the GPU. Each request leaks a little memory, and over time the GPU cache fills up. Legitimate users start seeing errors or timeouts, and the service stays degraded until operators restart the vLLM processes, after which the attacker can repeat the attack.
Weaknesses (CWE)
CWE-401Missing Release of Memory after Effective LifetimePrimaryCWE-401Missing Release of Memory after Effective LifetimeCWE-401 — Missing Release of Memory after Effective Lifetime: The product does not sufficiently track and release allocated memory after it has been used, making the memory unavailable for reallocation and reuse.
- [Implementation] Choose a language or tool that provides automatic memory management, or makes manual memory management less error-prone. For example, glibc in Linux provides protection against free of invalid pointers. When using Xcode to target OS X or iOS, enable automatic reference counting (ARC) [REF-391]. To help correctly and consistently manage memory when programming in C++, consider using a smart pointer class such as std::auto_ptr (defined by ISO/IEC ISO/IEC 14882:2003), std::shared_ptr and std::unique_ptr (specified by an upcoming revision of the C++ standard, informally referred to as C++ 1x), or equivalent solutions such as Boost.
- [Architecture and Design] Use an abstraction library to abstract away risky APIs. Not a complete solution.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
Timeline
Related Vulnerabilities
CVE-2026-6173210.0Decepticon: ChatML token injection yields sandbox RCE
Same package: vllmCVE-2024-110419.8vllm: RCE via unsafe pickle deserialization in MessageQueue
Same package: vllmCVE-2026-259609.8vllm: SSRF allows internal network access
Same package: vllmCVE-2025-472779.8vLLM: RCE via exposed TCPStore in distributed inference
Same package: vllmCVE-2024-90539.8vllm: RCE via unsafe pickle deserialization in RPC server
Same package: vllm