Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLure victim to malicious web page
-
DeliveryBrowser JS issues cross-origin request to reachable vLLM server
-
ExploitWildcard CORS permits POST /v1/chat/completions
-
ExecutionEnumerate models and read inference output
-
ImpactConsume victim GPU and exfiltrate responses
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration CORS policy restriction
|
| Exploitation Conditions | Exploitation requires all of the following: a vLLM OpenAI-compatible server prior to 0.32.0 running the default CORSMiddleware wildcard (allowed_origins=['*']); the server being reachable from the victim's browser (localhost, internal network, or VPN address); no --api-key/VLLM_API_KEY configured, which leaves endpoints such as GET /v1/models and POST /v1/chat/completions unauthenticated (or, if a key is set, the browser caller already holding a usable bearer token for read access); and the victim actively loading an attacker-controlled web page (required user interaction, UI:R). Limiting factors: cookie-based CSRF does not apply because credentials are disabled by default; when an API key is configured the /v1, /v2, /inference, and /cohere prefixes are gated, so a tokenless attacker cannot reach guarded endpoints. The only complete fix stated by the vendor is upgrading to 0.32.0, which changes the default allowed_origins to an empty list. |
| Impact | This is a genuinely low-priority issue, and the signals are consistent rather than conflicting. The CVSS base score is 3.4 (Low) with vector AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:N/A:N: although reachable over the network, exploitation requires user interaction (the victim must load an attacker-controlled page) and higher attack complexity (a vulnerable, browser-reachable, unauthenticated vLLM server must already exist). Confidentiality impact is only Low (an attacker can read model output and enumerate models through the victim's browser), with no integrity impact and no rated availability impact despite GPU-time consumption. The vuln.today Decision label is 'monitor', which aligns with the low severity and does not indicate urgency. No EPSS score and no KEV status were provided in the input, and there is no public exploit reference - only vendor advisory, fix PR, fix commit, and release links. Taken together this is a legitimately defensive, low-real-risk hardening fix rather than an actively exploited emergency; absence of EPSS/KEV data is noted, not treated as evidence either way. |
| Exploit ScenarioDerived | A victim with a locally or internally reachable vLLM OpenAI-compatible server (default configuration, no API key) visits a malicious web page. Because the server registers CORSMiddleware with allowed_origins=['*'], the attacker's JavaScript can call GET /v1/models and POST /v1/chat/completions through the victim's browser, consume GPU resources, and read the responses cross-origin. No public exploit identified at time of analysis; the browser effectively acts as a proxy into networks the remote site could not otherwise reach. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
vLLM's OpenAI-compatible server before 0.32.0 registers Starlette CORSMiddleware with allowed_origins defaulting to ["*"], so a malicious web page loaded by a victim can issue cross-origin requests to a vLLM server the browser can reach and read the responses. When no --api-key or VLLM_API_KEY is configured - the default - endpoints such as GET /v1/models and POST /v1/chat/completions are reachable, letting the page enumerate models, drive chat completions, burn GPU time, and read model output through the victim's browser; if a key is set, the guarded prefixes require that the caller already hold a usable token. Cookie-based CSRF does not apply because allow_credentials is False by default, and exploitation needs user interaction plus a browser-reachable server, which is why this scores only 3.4 and is tracked as monitor priority; no public exploit code was identified at time of analysis.
RemediationAI
Upgrade to vLLM 0.32.0, which the vendor identifies as the only complete fix; it changes the default allowed_origins from ["*"] to an empty list in both the Python and Rust configurations (PR 61009, commit fcae5c98870ff2c20659731dce7ba3a3ff0d48aa). Where upgrading is not immediately possible, replace the wildcard by launching the server with an explicit narrow --allowed-origins list containing only trusted origins, noting that any origin omitted will no longer be able to make cross-origin calls to the server; additionally configure --api-key/VLLM_API_KEY so the /v1, /v2, /inference and /cohere prefixes require a bearer token, accepting that this breaks unauthenticated clients and that a tokenless cross-origin attacker can no longer reach those guarded endpoints. Restricting the server to interfaces that victim browsers cannot reach reduces exposure but also cuts off legitimate localhost use. See the advisory at https://github.com/vllm-project/vllm/security/advisories/GHSA-vvpg-rrww-wpmh and the release at https://github.com/vllm-project/vllm/releases/tag/v0.32.0.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a permissive CORS default (CWE-942) in vLLM's serving stack, which pairs a Python FastAPI/Starlette application (vllm/entrypoints/launchers/cli_args.py defining allowed_origins defaulting to ["*"] and vllm/entrypoints/serve/middleware/register.py registering CORSMiddleware) with a Rust frontend (rust/src/cmd/src/cli.rs and rust/src/server/src/config.rs mirroring the same wildcard default, with rust/src/server/src/middleware/cors.rs emitting the origins). Because the wildcard is returned in access-control-allow-origin, browsers permit any origin to read responses from the server, and vLLM's authentication middleware is only installed when a token is configured and only guards the /v1, /v2, /inference and /cohere prefixes. That combination turns the victim's browser into a proxy that can reach localhost, internal-network or VPN-only vLLM instances that a remote web page could not otherwise address; allow_credentials=False blocks cookie-bearing cross-origin requests, so the exposure is cross-origin request execution and response disclosure rather than classic CSRF. The upstream fix changes the default to an empty origin list in both the Python arg definitions and the Rust CORS configuration and tests.
Know when Vllm gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N
Network-reachable and unauthenticated (AV:N/PR:N) but needs a victim to load a malicious page (UI:R) and a pre-existing reachable, unauthenticated server (AC:H); browser-as-proxy crosses authority (S:C) with only read disclosure (C:L).
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
vLLM is an inference and serving engine for large language models. Prior to 0.32.0, the OpenAI-compatible server configures Starlette CORSMiddleware with allowed_origins set to a wildcard by default. A malicious web page can use a victim's browser to reach an unauthenticated vLLM server on localhost, an internal network, or a VPN, call endpoints including GET /v1/models and POST /v1/chat/completions, consume GPU resources, and read responses. Cookie-based cross-site request forgery does not apply because credentials are disabled by default, and deployments requiring bearer authentication are exposed only when the caller already has a usable token. This issue is fixed in version 0.32.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Rated critical severity (CVSS 10.0
vllm-project vllm version v0.6.2 contains a vulnerability in the MessageQueue.dequeue() API function. Rated critical sev
Information exposure in vLLM inference engine versions 0.8.3 to before 0.14.1. Invalid image requests to the multimodal
Timing-based API key recovery in vLLM before 0.11.0rc2 can let remote attackers bypass bearer-token authentication on de
vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Rated high severity (CVSS 7.5), th
Denial of service in the vLLM LLM inference server (all versions prior to 0.24.0) allows a remote client to crash the sh
vLLM before version 0.14.1 contains a server-side request forgery vulnerability in the MediaConnector class where incons
Out-of-memory worker crashes in vLLM can be induced by a single small compressed audio payload submitted to the /v1/chat
vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. Rated medium severity (CVSS 6.5),
GPU memory exhaustion in vLLM versions prior to 0.28.0 lets an attacker with low-privileged API access (PR:L in the CVSS
Multimodal inference requests to vLLM deployments running versions prior to 0.28.0 can trigger a process-level assertion
Uncontrolled resource consumption in vLLM's OpenAI-compatible completions endpoint allows any authenticated API client t
EUVD-2026-110038
GHSA-vvpg-rrww-wpmh
NVD
CVE.org
EPSS
Exploit-DB