HIGH 8.8

CVE-2026-54232: vLLM Dependency Confusion Supply-Chain Attack (Flashinfer JIT Cache)

vLLM, a popular inference engine for large language models, has a critical supply-chain vulnerability in versions before 0.22.1. The Dockerfile attempts to install a custom package (flashinfer-jit-cache) from a private index, but misconfigures Python's package resolution to also search PyPI. An attacker could register a malicious version of that package on PyPI, which would be installed during container builds with full root privileges. This allows arbitrary code execution and container backdooring, potentially compromising all prompts, credentials, and model data in production deployments.

Source data · NVD / CISA · public domain

CVSS
3.1 · 8.8 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Weaknesses (CWE)
CWE-427
Affected products
1 configuration(s)
Published / Modified
2026-06-22 / 2026-06-24

NVD description (verbatim)

vLLM is an inference and serving engine for large language models (LLMs). Prior to 0.22.1, the vLLM Dockerfile is vulnerable to a dependency confusion attack through the flashinfer-jit-cache package. The package is installed from a custom index (flashinfer.ai/whl/) using --extra-index-url, but the package name was not registered on PyPI, and UV_INDEX_STRATEGY="unsafe-best-match" is set globally. An attacker who registers flashinfer-jit-cache on PyPI with version 0.6.11.post2 can execute arbitrary code as root during the Docker build and backdoor every resulting container image, enabling exfiltration of all user prompts, API credentials, and model data from production vLLM deployments This vulnerability is fixed in 0.22.1.

1 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability stems from a dependency confusion attack vector in the vLLM build process. The Dockerfile specifies flashinfer-jit-cache installation via --extra-index-url pointing to flashinfer.ai/whl/, but the global UV_INDEX_STRATEGY="unsafe-best-match" configuration causes pip/uv to prefer packages from PyPI if available, bypassing the intended private index. Since flashinfer-jit-cache was never registered on PyPI, an attacker can register it there with a higher version number (0.6.11.post2), ensuring installation during Docker build with root execution context. This grants arbitrary code execution within the container image, affecting all instances derived from that image. The flaw is classified under CWE-427 (Uncontrolled Search Path Element).

Business impact

Organizations deploying vLLM in production face severe supply-chain risk. Compromised container images could silently exfiltrate proprietary LLM model weights, user prompts (potentially containing sensitive business data or PII), and API credentials used for authentication. The attack occurs at build time, meaning detection after deployment is difficult. Every downstream deployment inheriting the backdoored image becomes a potential data breach vector. For enterprises running vLLM as an internal service or API, this vulnerability could expose competitive models, customer interactions, and authentication tokens at scale.

Affected systems

vLLM versions prior to 0.22.1 are affected. This includes all container images built from vulnerable Dockerfiles and already deployed in production. The vulnerability only manifests during Docker builds using the affected configuration; existing running containers are safe if built before the attack occurs. Organizations using vLLM's official pre-built images should verify the build date and update accordingly. Custom builds or forks that retained the same Dockerfile logic are also at risk.

Exploitability

Exploitability is straightforward and requires only network access and a registered PyPI account. The attack is deterministic: once a malicious package is published to PyPI with the correct version, any Docker build of an affected vLLM Dockerfile automatically triggers installation of the backdoored package. No user interaction is required beyond normal build automation (CI/CD pipelines). The barrier to exploitation is low, though it does require an attacker to anticipate when the build process will run and which version constraints are in use. The CVSS score of 8.8 (HIGH) reflects the combination of network accessibility, low complexity, high confidentiality and integrity impact, and the ability to compromise production systems.

Remediation

Upgrade vLLM to 0.22.1 or later immediately. This version fixes the UV_INDEX_STRATEGY configuration to prioritize the private index. Organizations should also rebuild Docker images from the patched codebase and redeploy affected containers. For environments with extensive vLLM deployments, consider: (1) auditing container image build dates to identify potentially compromised images, (2) rotating API credentials and monitoring for exfiltration of model data, (3) reviewing logs for unusual outbound connections during builds. Additionally, organizations may harden their own build pipelines by setting restrictive UV_INDEX_STRATEGY settings (e.g., "prefer-binary") and explicitly pinning package versions.

Patch guidance

Update vLLM to version 0.22.1 or later. This patch modifies the Dockerfile and build configuration to ensure the private index is consulted first, preventing PyPI from being searched for flashinfer-jit-cache. After updating the vLLM source, rebuild all Docker images in your CI/CD pipeline. If you maintain custom Dockerfiles for vLLM, review --extra-index-url configurations and ensure UV_INDEX_STRATEGY does not default to "unsafe-best-match". Test patched images in a non-production environment before rolling out to production clusters. Document the patch application date for audit and compliance purposes.

Detection guidance

In real-time monitoring, watch for unexpected outbound connections from vLLM processes to unknown hosts, particularly during startup. Monitor container build logs for flashinfer-jit-cache version resolution—verify that the package is being fetched from flashinfer.ai/whl/ and not PyPI. Check Docker image layers and metadata for timestamps indicating builds during the vulnerability window. For post-compromise investigation, audit container registries for image push dates and compare against known patching timelines. Review vLLM process logs for attempts to access credentials or model files; monitor for data exfiltration indicators such as large uploads to external IPs. Consider runtime security tools that intercept package installations and alert on unsigned or unexpected packages.

Why prioritize this

This vulnerability merits immediate attention due to its high CVSS score (8.8), attack simplicity, and direct threat to confidentiality and integrity of sensitive LLM assets. The supply-chain nature means the attack occurs invisibly during standard build processes, making early detection unlikely. Any organization with vLLM in production or in active use during development should treat this as critical. The vulnerability is not yet widely exploited (not listed in CISA KEV), but the low barrier to exploitation means attackers could begin registering malicious packages on PyPI at any time. Prioritize upgrades for production deployments first, then development and testing infrastructure.

Risk score, explained

The CVSS 3.1 score of 8.8 reflects: (1) Network attack vector (AV:N)—exploitation requires only internet access and a PyPI account, (2) Low attack complexity (AC:L)—no special conditions or race conditions needed, (3) No privilege escalation required at attack time, but execution occurs as root during build (significant impact), (4) High confidentiality impact (C:H)—exfiltration of model data, prompts, and credentials, (5) High integrity impact (I:H)—arbitrary code execution and container backdooring, (6) High availability impact (A:H)—compromised containers can be manipulated or removed. The user interaction requirement (UI:R) stems from the implicit need for someone to trigger a Docker build, which is typically automated in CI/CD, making this a practical consideration rather than a true mitigation.

Frequently asked questions

If I'm running a vLLM container image that was built before this CVE was published, am I affected?

Only if the image was built from a vLLM version before 0.22.1 using a Dockerfile with the vulnerable configuration. If an attacker registered the malicious flashinfer-jit-cache package on PyPI before your build date, your image could be compromised. If you built after the attack occurred, your image is likely affected. To be safe, audit build timestamps and rebuild with patched source code.

Do I need to patch if I use vLLM from a pre-built image provided by the vLLM team?

Check the image metadata (labels, tags, or documentation) to confirm the build date and vLLM version. If the image was built from 0.22.1 or later, you are safe. If it was built from an earlier version and you cannot confirm the build date, err on the side of caution and pull or rebuild a newer image. Verify against the official vLLM releases and container registry.

What should I do if I suspect a vLLM deployment has been compromised by this vulnerability?

Immediately isolate the affected deployment from network access if data exfiltration is suspected. Rotate all API credentials and authentication tokens that could have been exposed. Review logs for unusual outbound connections or data transfers during the build window. Rebuild Docker images using patched vLLM 0.22.1+ and redeploy in a clean state. If the deployment processed sensitive prompts or model data, consider those compromised and notify stakeholders accordingly.

Does this vulnerability affect vLLM installations outside of Docker containers?

No. The vulnerability is specific to Docker builds using the affected Dockerfile configuration. If you installed vLLM via pip, conda, or other package managers directly on a system without using the vLLM Dockerfile, you are not affected by this specific vulnerability. However, always keep vLLM updated to the latest stable version for other security and stability benefits.

This analysis is provided for informational purposes and reflects the published vulnerability details as of the date of this report. SEC.co does not provide legal, compliance, or insurance advice. Organizations should independently verify patch availability with vLLM maintainers, test patches in non-production environments, and validate remediation against their own infrastructure before production deployment. Threat actor activity, exploit development, and patch availability are subject to change. For the most current advisories, consult the official vLLM GitHub repository and PyPI package registry. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).