CVE-2026-116176: vLLM: SSRF via X-Request-Id leaks NCCL KV-cache data
HIGHCVE-2026-116176 is a server-side request forgery in vLLM 0.9.2 through 0.23.x where an unauthenticated API caller can embed a decode address in the X-Request-Id header and make a P2pNcclConnector prefill worker open a ZMQ connection to an attacker-controlled host. That can leak the NCCL unique_id and KV-cache tensors, which hold fragments of other users' prompts and model context, or hang the worker. It is rated high (CVSS 8.2) and needs no privileges or user interaction, but it only affects disaggregated prefill/decode deployments using P2pNcclConnector. There is no EPSS score, no public exploit, no Nuclei template and no KEV listing at publication, so the risk is real but not yet observed in the wild. Upgrade to vLLM 0.24.0 or later, and until then keep prefill workers off the internet, strip or validate X-Request-Id at the gateway, and restrict worker egress to known decode nodes.
What is the risk?
High. The attack is network-reachable, low complexity and needs no authentication (AV:N/AC:L/PR:N/UI:N). Confidentiality impact is high because KV-cache tensors can contain content from other tenants' requests, and availability impact is low because a worker can be blocked. The exposure window is limited to deployments that enable the P2pNcclConnector for disaggregated prefill/decode and expose the API to untrusted callers. Exploitation data is absent (EPSS N/A, no public PoC, not in KEV), so likelihood is moderate and may rise once the advisory details circulate.
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 0.24.0 or later (affected: 0.9.2 up to but excluding 0.24.0). 2) Inventory deployments that use kv_connector P2pNcclConnector or disaggregated prefill. 3) Until patched, have the reverse proxy or API gateway drop or regex-validate X-Request-Id (for example, allow only UUID or alphanumeric values) so it cannot carry host:port data. 4) Place prefill and decode workers on an isolated network segment and apply egress allow-lists so workers can connect only to approved decode nodes and ZMQ ports. 5) Require authentication on the vLLM API endpoint and do not expose it directly to the internet. 6) Detect: alert on X-Request-Id values containing IP addresses, hostnames or colons, and on outbound ZMQ/TCP connections from prefill workers to unknown destinations. 7) Treat NCCL unique_ids as secrets and restart affected workers after patching to rotate them.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-116176?
CVE-2026-116176 is a server-side request forgery in vLLM 0.9.2 through 0.23.x where an unauthenticated API caller can embed a decode address in the X-Request-Id header and make a P2pNcclConnector prefill worker open a ZMQ connection to an attacker-controlled host. That can leak the NCCL unique_id and KV-cache tensors, which hold fragments of other users' prompts and model context, or hang the worker. It is rated high (CVSS 8.2) and needs no privileges or user interaction, but it only affects disaggregated prefill/decode deployments using P2pNcclConnector. There is no EPSS score, no public exploit, no Nuclei template and no KEV listing at publication, so the risk is real but not yet observed in the wild. Upgrade to vLLM 0.24.0 or later, and until then keep prefill workers off the internet, strip or validate X-Request-Id at the gateway, and restrict worker egress to known decode nodes.
Is CVE-2026-116176 actively exploited?
No confirmed active exploitation of CVE-2026-116176 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-116176?
1) Upgrade vLLM to 0.24.0 or later (affected: 0.9.2 up to but excluding 0.24.0). 2) Inventory deployments that use kv_connector P2pNcclConnector or disaggregated prefill. 3) Until patched, have the reverse proxy or API gateway drop or regex-validate X-Request-Id (for example, allow only UUID or alphanumeric values) so it cannot carry host:port data. 4) Place prefill and decode workers on an isolated network segment and apply egress allow-lists so workers can connect only to approved decode nodes and ZMQ ports. 5) Require authentication on the vLLM API endpoint and do not expose it directly to the internet. 6) Detect: alert on X-Request-Id values containing IP addresses, hostnames or colons, and on outbound ZMQ/TCP connections from prefill workers to unknown destinations. 7) Treat NCCL unique_ids as secrets and restart affected workers after patching to rotate them.
What systems are affected by CVE-2026-116176?
This vulnerability affects the following AI/ML architecture patterns: LLM model serving, Disaggregated prefill/decode inference, Multi-tenant inference gateways, GPU inference clusters with NCCL KV transfer.
What is the CVSS score for CVE-2026-116176?
CVE-2026-116176 has a CVSS v3.1 base score of 8.2 (HIGH). The EPSS exploitation probability is 0.32%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0025Exfiltration via Cyber MeansAML.T0029Denial of AI ServiceAML.T0040AI Model Inference API AccessAML.T0049Exploit Public-Facing ApplicationAML.T0057LLM Data LeakageCompliance Controls Affected
What are the technical details?
Original Advisory
vLLM from 0.9.2 before 0.24.0 contains a server-side request forgery vulnerability that allows API callers to force outbound connections by embedding a decode address in the X-Request-Id header. Attackers can make a P2pNcclConnector prefill worker ZMQ-connect to an attacker host, leaking the NCCL unique_id and KV-cache tensors or blocking the worker.
Exploitation Scenario
An attacker finds an exposed vLLM OpenAI-compatible endpoint backed by disaggregated prefill/decode. They send a normal chat completion request with an X-Request-Id header that encodes the address of a host they control. The prefill worker parses the header, treats it as the decode peer, and ZMQ-connects to the attacker's listener. The attacker's server completes the handshake, records the NCCL unique_id, and receives KV-cache tensors for the request and potentially for concurrent sessions. They reconstruct prompt content or sensitive context from the tensors. Alternatively, they point the address at a black-hole host so the worker stalls and repeat the request to degrade service.
Weaknesses (CWE)
CWE-918 — Server-Side Request Forgery (SSRF): The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:LReferences
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-2025-472779.8vLLM: RCE via exposed TCPStore in distributed inference
Same package: vllmCVE-2026-259609.8vllm: SSRF allows internal network access
Same package: vllmCVE-2024-90539.8vllm: RCE via unsafe pickle deserialization in RPC server
Same package: vllm