vLLM through 0.29.0 has an unauthenticated denial-of-service flaw in its P2P KV offloading path: an attacker who can reach the service supplies arbitrary remote host and port values in kv_transfer_params, creating unreachable peer sessions that pile up ZeroMQ sockets until the context quota is exhausted. The resulting uncaught ZMQError crashes EngineCore and halts all inference for every tenant on that instance. Risk is real but narrow. The flaw is network-reachable, needs no privileges and has low complexity (CVSS 7.5), yet it only affects deployments that explicitly enable OffloadingConnector with TieringOffloadingSpec and a peer-to-peer secondary tier. Exploitation signals are weak: EPSS is 0.63% (around the 52nd percentile), it is not in CISA KEV, there is no public exploit or Nuclei template, and CISA SSVC says TRACK. Identify any vLLM deployments using P2P KV offloading, apply the fix referenced in vllm PR #51504 or upgrade past 0.29.0 once released, and make sure the inference API is not exposed to untrusted callers or that kv_transfer_params cannot be set by them.
What is the risk?
Medium-High for exposed deployments using P2P KV offloading, low for default configurations. Exploitability is high in principle (network, low complexity, no privileges, no user interaction), but the vulnerable path requires a non-default, relatively new feature combination. Impact is availability only (A:H, no confidentiality or integrity effect). Likelihood of exploitation is currently low: EPSS 0.00627, not in KEV, no public PoC, SSVC TRACK. Exposure rises sharply if the inference endpoint is internet-facing or if untrusted tenants or applications can pass kv_transfer_params.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| vLLM | pip | < 0.32.0 | 0.32.0 |
Do you use vLLM? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Inventory vLLM instances (versions up to and including 0.29.0) and check whether OffloadingConnector, TieringOffloadingSpec and a P2P secondary tier are enabled; if not, you are not exposed. 2) Upgrade to a release containing the fix from vllm-project/vllm PR #51504 once available, or apply that patch. 3) Until patched, disable P2P KV offloading or the P2P secondary tier. 4) Do not let untrusted clients set kv_transfer_params: strip or reject the field at an API gateway or reverse proxy, and restrict inference endpoints to authenticated, trusted networks. 5) Detection: alert on EngineCore crashes, uncaught zmq.error.ZMQError in vLLM logs, rising ZeroMQ socket or file-descriptor counts, and unusual outbound connection attempts to unexpected hosts and ports from inference nodes. 6) Configure process supervision with restart backoff and health checks to limit outage duration, and apply egress filtering so inference nodes can only reach approved peers.
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-94624?
vLLM through 0.29.0 has an unauthenticated denial-of-service flaw in its P2P KV offloading path: an attacker who can reach the service supplies arbitrary remote host and port values in kv_transfer_params, creating unreachable peer sessions that pile up ZeroMQ sockets until the context quota is exhausted. The resulting uncaught ZMQError crashes EngineCore and halts all inference for every tenant on that instance. Risk is real but narrow. The flaw is network-reachable, needs no privileges and has low complexity (CVSS 7.5), yet it only affects deployments that explicitly enable OffloadingConnector with TieringOffloadingSpec and a peer-to-peer secondary tier. Exploitation signals are weak: EPSS is 0.63% (around the 52nd percentile), it is not in CISA KEV, there is no public exploit or Nuclei template, and CISA SSVC says TRACK. Identify any vLLM deployments using P2P KV offloading, apply the fix referenced in vllm PR #51504 or upgrade past 0.29.0 once released, and make sure the inference API is not exposed to untrusted callers or that kv_transfer_params cannot be set by them.
Is CVE-2026-94624 actively exploited?
No confirmed active exploitation of CVE-2026-94624 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-94624?
1) Inventory vLLM instances (versions up to and including 0.29.0) and check whether OffloadingConnector, TieringOffloadingSpec and a P2P secondary tier are enabled; if not, you are not exposed. 2) Upgrade to a release containing the fix from vllm-project/vllm PR #51504 once available, or apply that patch. 3) Until patched, disable P2P KV offloading or the P2P secondary tier. 4) Do not let untrusted clients set kv_transfer_params: strip or reject the field at an API gateway or reverse proxy, and restrict inference endpoints to authenticated, trusted networks. 5) Detection: alert on EngineCore crashes, uncaught zmq.error.ZMQError in vLLM logs, rising ZeroMQ socket or file-descriptor counts, and unusual outbound connection attempts to unexpected hosts and ports from inference nodes. 6) Configure process supervision with restart backoff and health checks to limit outage duration, and apply egress filtering so inference nodes can only reach approved peers.
What systems are affected by CVE-2026-94624?
This vulnerability affects the following AI/ML architecture patterns: model serving, LLM inference, disaggregated KV-cache serving, multi-tenant inference gateways.
What is the CVSS score for CVE-2026-94624?
CVE-2026-94624 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.43%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0029Denial of AI ServiceAML.T0040AI Model Inference API AccessAML.T0049Exploit Public-Facing ApplicationCompliance Controls Affected
What are the technical details?
Original Advisory
vLLM through 0.29.0 contains a denial of service vulnerability in P2P KV offloading when OffloadingConnector is configured with TieringOffloadingSpec and a peer-to-peer secondary tier. Attackers can supply arbitrary remote host and port values in kv_transfer_params to create unreachable peer sessions that retain ZeroMQ sockets until the context quota is exhausted, causing an uncaught ZMQError that crashes EngineCore and stops all inference.
Exploitation Scenario
An attacker finds an internet-facing or internally reachable vLLM OpenAI-compatible endpoint running a P2P KV offloading configuration. They send a stream of completion requests whose kv_transfer_params point to arbitrary unreachable remote host and port values. Each request creates a peer session that retains a ZeroMQ socket and is never cleaned up. After enough requests the ZeroMQ context quota is exhausted, an uncaught ZMQError is raised, EngineCore crashes and all inference stops. The attacker repeats the requests after each restart to keep the service down, disrupting customer-facing AI features or internal agents.
Weaknesses (CWE)
CWE-770Allocation of Resources Without Limits or ThrottlingPrimaryCWE-770Allocation of Resources Without Limits or ThrottlingPrimaryCWE-770Allocation of Resources Without Limits or ThrottlingCWE-770 — Allocation of Resources Without Limits or Throttling: The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated.
- [Requirements] Clearly specify the minimum and maximum expectations for capabilities, and dictate which behaviors are acceptable when resource allocation reaches limits.
- [Architecture and Design] Limit the amount of resources that are accessible to unprivileged users. Set per-user limits for resources. Allow the system administrator to define these limits. Be careful to avoid CWE-410.
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
- github.com/vllm-project/vllm
- github.com/vllm-project/vllm/blob/v0.29.0/vllm/v1/kv_offload/tiering/p2p/control/zmq.py
- github.com/vllm-project/vllm/blob/v0.29.0/vllm/v1/kv_offload/tiering/p2p/manager.py
- github.com/vllm-project/vllm/pull/51504
- vulncheck.com/advisories/vllm-through-0.29.0-denial-of-service-via-unbounded-p2p-kv-offloading-sessions
- github.com/advisories/GHSA-frvg-qw88-hww9
- github.com/pypa/advisory-database/tree/main/vulns/vllm/PYSEC-2026-4006.yaml
- github.com/vllm-project/vllm/commit/93d2cab35e8ae66bbaa1dea1c077986d5a79eb80
- github.com/vllm-project/vllm/releases/tag/v0.32.0
- github.com/vllm-project/vllm/security/advisories/GHSA-frvg-qw88-hww9
- nvd.nist.gov/vuln/detail/CVE-2026-94624
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