CVE-2026-73555: vLLM: Unauthenticated Internal Path and Username Disclosure via Validation Error Messages

Published Aug 13, 2026
·
Updated

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

2 affected componentsFixes available
vllm<0.26.0
pip/vllm<0.26.0
0.26.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/vllm to a version that resolves this vulnerability.

    Fixed in 0.26.0
  2. Upgrade

    Upgrade vllm to a version that resolves this vulnerability.

    Fixed in 0.26.0
  3. 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)
  4. 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

Aug 13, 2026
CVE Published
via MITRE·02:50 PM
Data Sourced
via MITRE·02:50 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·03:20 PM
DescriptionSeverityWeakness
Sep 4, 2026
Advisory Published
via GitHub·09:36 PM
Data Sourced
via GitHub·09:36 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-73555?

The severity of CVE-2026-73555 is medium with a score of 5.3.

2

What does CVE-2026-73555 affect?

CVE-2026-73555 affects vLLM, which is an inference and serving engine for large language models.

3

How does CVE-2026-73555 impact system security?

CVE-2026-73555 allows unauthenticated internal path and username disclosure via validation error messages.

4

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.

5

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.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203