vLLM
CVE-2026-54232
HIGH
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Attacker needs no privileges or auth - only a PyPI registration - but a victim must actually build the Dockerfile, hence UI:R; build-time root RCE yields full C/I/A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Lifecycle Timeline
1Blast Radius
ecosystem impact- 1 pypi packages depend on vllm (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 0.22.1.
DescriptionCVE.org
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.
Articles & Coverage 1
AnalysisAI
Remote code execution in vLLM versions prior to 0.22.1 allows attackers to backdoor production LLM inference deployments through a dependency confusion attack in the project's Dockerfile. Because flashinfer-jit-cache was pulled via --extra-index-url with UV_INDEX_STRATEGY=unsafe-best-match while the name remained unregistered on PyPI, any attacker who claimed the name on PyPI with a higher version would have their code executed as root during every Docker build. No public exploit identified at time of analysis, but the supply-chain primitive is well understood and trivially weaponizable.
Technical ContextAI
vLLM is a widely used Python-based inference and serving engine for large language models, distributed in part via an official Dockerfile that uses uv/pip to install GPU helper wheels. The Dockerfile references flashinfer-jit-cache from the vendor index https://flashinfer.ai/whl/ as an --extra-index-url while also leaving PyPI as a candidate source. With UV_INDEX_STRATEGY set to unsafe-best-match globally, uv compares versions across all configured indexes and selects the highest, regardless of origin. This is a textbook CWE-427 Uncontrolled Search Path Element manifestation in the modern Python packaging ecosystem: because the attacker controls neither code nor infrastructure but does control which package is named highest on PyPI, a higher-versioned malicious flashinfer-jit-cache (e.g., 0.6.11.post2) wins resolution against the legitimate lower-versioned wheel on the private index. The affected CPE is cpe:2.3:a:vllm-project:vllm covering all releases prior to 0.22.1.
RemediationAI
Upgrade to vLLM 0.22.1, which removes the unsafe index strategy and/or pins flashinfer-jit-cache to a trusted source; this is the only complete fix and is documented in GHSA-jrf6-vqxq-pjv2 (https://github.com/vllm-project/vllm/security/advisories/GHSA-jrf6-vqxq-pjv2). Organizations that cannot immediately upgrade should rebuild Docker images only after removing UV_INDEX_STRATEGY=unsafe-best-match (forcing first-index resolution, at the cost of breaking installs if the private index is missing a needed wheel), explicitly pinning flashinfer-jit-cache with a hash via --require-hashes, or vendoring the wheel into the build context so PyPI is never consulted for that name. Any image built from a pre-0.22.1 Dockerfile during the exposure window should be treated as potentially backdoored, rotated, and rebuilt from a clean base, and any API keys, model weights, or prompt logs handled by such deployments should be considered compromised and rotated.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
Vasion Print (formerly PrinterLogic) Virtual Appliance Host prior to version 25.2.169 and Application prior to version 2
An issue in Plone Docker Official Image 5.2.13 (5221) open-source software that could allow for remote code execution du
Unauthenticated remote code execution in Kestra orchestration platform before 1.0.45 and 1.3.21 lets anonymous attackers
Same weakness CWE-427 – Uncontrolled Search Path Element
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today