CVE-2026-73555: vLLM: Unauthenticated Internal Path and Username Disclosure via Validation Error Messages
Summary
When the vLLM API receives a malformed request (e.g., invalid JSON or missing required fields), FastAPI raises a Pydantic RequestValidationError. The validationexceptionhandler in vllm/entrypoints/openai/serverutils.py converts this exception to a string via str(exc), which includes the internal file path and line number of the handler function. The existing sanitizemessage() function in vllm/entrypoints/utils.py strips memory addresses (e.g., 0x7f...) but does not strip File "...", line X patterns. The result is a user-facing HTTP response that leaks internal system information.
Impact
An unauthenticated attacker can extract the following with a single malformed request:
- OS username running the vLLM process (e.g., ubuntu) - Home directory path (e.g., /home/ubuntu/) - Virtual environment path (e.g., vllm-env/) - Python version (e.g., 3.12) - Internal package structure and line numbers (e.g., vllm/entrypoints/openai/chatcompletion/apirouter.py) - Handler function names per endpoint, enabling precise version fingerprinting
This information aids attackers in constructing targeted exploits: environment paths narrow the attack surface, and handler function names + line numbers enable exact version identification even when the /version endpoint is disabled.
All POST endpoints that accept JSON bodies are affected, including /v1/chat/completions, /v1/completions, /tokenize, and /detokenize.
Workarounds
Deploying vLLM behind a reverse proxy that rewrites error response bodies to strip file paths would mitigate this, though it is fragile.
Remediation Recommendation
Two possible fixes (either suffices):
Option A — Fix validationexceptionhandler: Construct the error message from exc.errors() (the structured Pydantic error list) rather than str(exc). This avoids the traceback-style string entirely.
Option B — Fix sanitizemessage: Add a regex to strip File "...", line \d+ patterns, similar to how memory addresses are already stripped:
python import re msg = re.sub(r'File ".?", line \d+, in \w+', '[internal]', msg)
Option A is preferred as it addresses the root cause rather than filtering symptoms.
Environment Tested
- vLLM 0.20.1 (pip install, latest stable as of May 2026) - Python 3.12 - Ubuntu 22.04 - Model: Qwen/Qwen2-0.5B (text-only; bug is model-independent)
This was fixed here: https://github.com/vllm-project/vllm/commit/e87521626f
Other sources
vLLM is an inference and serving engine for large language models. Prior to 0.26.0, the validationexceptionhandler in vllm/entrypoints/openai/serverutils.py converts FastAPI RequestValidationError objects with str(exc), and sanitizemessage in vllm/entrypoints/utils.py does not remove traceback-style file paths, allowing unauthenticated malformed JSON requests to /v1/chat/completions, /v1/completions, /tokenize, and /detokenize to disclose the OS username, home and virtual-environment paths, Python version, internal package structure, line numbers, and endpoint handler names. This issue is fixed in version 0.26.0.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/vllmto a version that resolves this vulnerability.Fixed in 0.26.0 - Upgrade
Upgrade
vllmto a version that resolves this vulnerability.Fixed in 0.26.0 - Configuration
Modify `validation_exception_handler` in `vllm/entrypoints/openai/server_utils.py` to construct the error message from `exc.errors()` rather than `str(exc)`, so the HTTP response does not include internal file paths/line numbers from traceback-style strings.
vLLM (vllm/entrypoints/openai/server_utils.py - validation_exception_handler) error_message_construction_source = exc.errors() (structured Pydantic error list) instead of str(exc) - Configuration
Update `sanitize_message()` in `vllm/entrypoints/utils.py` to add a regex that strips traceback-style `File "...", line \d+` patterns (similar to existing stripping of memory addresses like `0x7f...`).
vLLM (vllm/entrypoints/utils.py - sanitize_message) traceback_path_sanitization_regex = regex that strips `File "...", line \d+` patterns
Event History
Frequently Asked Questions
What is the severity of CVE-2026-73555?
The severity of CVE-2026-73555 is medium with a score of 5.3.
What does CVE-2026-73555 affect?
CVE-2026-73555 affects vLLM, which is an inference and serving engine for large language models.
How does CVE-2026-73555 impact system security?
CVE-2026-73555 allows unauthenticated internal path and username disclosure via validation error messages.
How do I fix CVE-2026-73555?
To fix CVE-2026-73555, upgrade vLLM to version 0.26.0 or later, which addresses the issue.
What is the nature of the vulnerability in CVE-2026-73555?
CVE-2026-73555 is caused by ineffective handling of FastAPI RequestValidationError objects that leads to sensitive information exposure.