vLLM: OpenAI auth bypass
Summary
A vulnerability in ASGI web servers and starlette's trust on those web servers enables an authentication bypass of the OpenAI API AuthenticationMiddleware, which was discovered during @x41sec's source code audit.
It allows to use the API without providing the configured VLLM_API_KEY or --api-key.
Details
In https://github.com/vllm-project/vllm/blob/v0.14.0/vllm/entrypoints/openai/api_server.py#L689-L692 the url_path is taken from the URL, which is reconstructed by starlette based on the request scope.
from starlette.datastructures import URL, Headers, MutableHeaders, State
# ...
url_path = URL(scope=scope).path.removeprefix(root_path)
headers = Headers(scope=scope)
if url_path.startswith("/v1") and not self.verify_token(headers):
response = JSONResponse(content={"error": "Unauthorized"}, status_code=401)
return response(scope, receive, send)
return self.app(scope, receive, send)
The request scope includes the request's Host: header and reconstructs the URL as shown below:
f"{scheme}://{host_header}{path}"
Neither starlette nor any of the ASGI servers (including uvicorn, which vllm uses) properly filter the Host: header for invalid characters. This allows an attacker to include special URL characters such as / or ? in the Host: header and thereby control the reconstructed URL and it's .path attribute.
FastAPI/starlette's routing uses the HTTP path and does not depend on the parsed url.path attribute, allowing attackers to reach an endpoint via a certain path while providing a different value in the .path.
Impact
- Instances of vllm that use an API Key for the OpenAI API and expose the API to attackers.
- Instances behind an RFC-conforming web server (such as nginx) are not affected.
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| Python (PyPI) | vllm | >= 0.3.0, < 0.22.0 | 0.22.0 |
References
- https://github.com/vllm-project/vllm/security/advisories/GHSA-94f4-hr76-p5j6
- https://x41-dsec.de/lab/advisories/x41-2026-002-starlette
- https://github.com/vllm-project/vllm/pull/43426
- https://nvd.nist.gov/vuln/detail/CVE-2026-48746
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-48746.json
- https://github.com/vllm-project/vllm
- https://github.com/pypa/advisory-database/tree/main/vulns/vllm/PYSEC-2026-226.yaml
- https://bugzilla.redhat.com/show_bug.cgi?id=2491581
- https://access.redhat.com/security/cve/CVE-2026-48746
- https://access.redhat.com/errata/RHSA-2026:61629
- https://access.redhat.com/errata/RHSA-2026:61627
- https://access.redhat.com/errata/RHSA-2026:43038
- https://access.redhat.com/errata/RHSA-2026:42644
- https://access.redhat.com/errata/RHSA-2026:42142
- https://access.redhat.com/errata/RHSA-2026:42132
- https://access.redhat.com/errata/RHSA-2026:36006
- https://access.redhat.com/errata/RHSA-2026:36005
- https://access.redhat.com/errata/RHSA-2026:30089
- https://access.redhat.com/errata/RHSA-2026:30088
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H- Weakness (CWE)
CWE-444, CWE-501- Platform
- Python (PyPI)
- Package
vllm- Disclosed
- 16.06.2026
- Updated
- 11.10.2026 15:17
Sources and licenses
OSV / GitHub Advisory Database - PYSEC-2026-226 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-94f4-hr76-p5j6 - CC BY 4.0
Vulnerability history: vllm
All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 94
- First → latest
- 09.2024 10.2026
- Without a fix
- 5
- Exploited in attacks
- 0
Severity breakdown
- Critical 9
- High 23
- Medium 47
- Low 4
- Unrated 11
Disclosures per year
- 2024: 2
- 2025: 30
- 2026: 62
-
vLLM: OpenAI auth bypass this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.