Summary
CVE-2026-94623 is a denial-of-service vulnerability in vLLM’s NIXL connector, used for prefill/decode disaggregated deployments. Improper validation of KV-cache block counts across multi-prompt completion requests allows a remote, unauthenticated attacker to trigger a reachable assertion failure that crashes the decode worker process. The flaw carries a CVSS v3.1 base score of 7.5 (High) and a CVSS v4.0 score of 8.7 (High).
Technical details
- Root cause: In prefill/decode disaggregated deployments using the NIXL KV-transfer connector, the router forwards a single KV descriptor for a multi-prompt
/v1/completionsrequest. The_apply_prefix_cachinglogic inNixlBaseConnectorWorkerdoes not correctly validate block counts when prompts of differing lengths are present, relying on bareassertstatements instead of handled exceptions. - Trigger conditions: An attacker sends a completion request containing multiple prompts of varying token lengths, along with
kv_transfer_params, to a vLLM deployment running with prefill/decode disaggregation over the NIXL connector. - Attack vector: Network (AV:N), low attack complexity, no privileges or user interaction required — the request can be sent directly to the exposed inference API endpoint.
- Impact: The assertion failure terminates the decode worker process, causing denial of service for the affected inference deployment. There is no confidentiality or integrity impact; availability impact is high, and recovery requires the worker to be restarted.
Affected software
- vllm-project vLLM, versions up to and including 0.29.0, when deployed with prefill/decode disaggregation using the NIXL connector
Severity
- CVSS v3.1 Base Score: 7.5 (High) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - CVSS v4.0 Score: 8.7 (High) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CWE-617: Reachable Assertion
Mitigation and recommended actions
- Immediate: A fix (tracked under GHSA-6vh8-5j8f-m4vf and GitHub PR #51505) rejects multi-prompt requests carrying
kv_transfer_paramswith an HTTP 400 response, and replaces the vulnerable bareassertstatements with handledValueErrorexceptions so individual malformed requests fail gracefully instead of crashing the worker. Organizations should upgrade to a vLLM release that includes this fix once it is published and confirm the patch level with the vllm-project maintainers, as the fix was still pending final merge and release assignment at time of disclosure. - If no patch is yet available for your deployed version:
- Restrict network access to vLLM inference API endpoints (especially decode-worker endpoints in prefill/decode disaggregated setups) to trusted clients only, using authentication, network segmentation, or an API gateway.
- Apply request-shape validation or a proxy-layer rule to block/reject multi-prompt completion requests that include
kv_transfer_params. - Monitor for decode-worker crashes/restarts, reachable-assertion errors, and unusual bursts of multi-prompt requests with varying prompt lengths as an indicator of exploitation attempts.
- Consider disabling prefill/decode disaggregation via the NIXL connector until the fix is deployed, if feasible for your workload.

