CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-73555

CVE-2026-73555: Environment and Information Disclosure via Exception Handling in vLLM

Alon Barad
Alon Barad
Software Engineer

Sep 5, 2026·5 min read·56 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can query vLLM API endpoints with malformed JSON to retrieve full system paths, virtual environment directory structures, and host usernames from error tracebacks.

An information disclosure vulnerability in vLLM prior to version 0.26.0 allows unauthenticated remote attackers to trigger validation errors that expose highly sensitive host machine metadata, absolute paths, environment structures, and usernames. This flaw stems from improper serialization of Pydantic exceptions and an inadequate fallback sanitization function.

Vulnerability Overview

vLLM is a high-performance open-source inference engine designed for serving Large Language Models. In typical deployment topologies, vLLM exposes an HTTP REST API server compliant with OpenAI endpoints. This API boundary forms the primary external attack surface, managing unauthenticated incoming client requests that are parsed into internal structured payloads.

Because these endpoints are accessible directly over the network, robust input validation and error handling are critical security boundaries. CVE-2026-73555 describes an information disclosure vulnerability (CWE-209) residing within this request validation layer. The flaw allows unauthenticated remote users to trigger structured exceptions that leak extensive host metadata.

When a malformed request is processed, the system produces validation tracebacks rather than sanitized client errors. This leakage exposes absolute directory structures, underlying package frameworks, system configuration states, and active local usernames. This reconnaissance metadata simplifies target environment profiling for subsequent attacks.

Root Cause Analysis

The core of the vulnerability lies in how vLLM handles request parsing failures via its FastAPI and Pydantic architecture. When incoming payloads fail validation checks, Pydantic raises a RequestValidationError exception. FastAPI's routing middleware intercepts this exception and processes it through a custom validation handler.

Prior to version 0.26.0, the handler in vllm/entrypoints/serve/utils/server_utils.py converted the raw exception directly into a string representation using str(exc). Under default FastAPI behavior, string conversion of a validation exception serializes the entire contextual route environment. This trace information contains internal application execution paths and local filesystem variables.

Furthermore, the helper library intended to filter sensitive outputs was functionally insufficient. The sanitize_message routine was only designed to strip memory address pointers from object representations using a basic regular expression. It did not parse or neutralize file directories, active operating system paths, or local file trace logs.

Code-Level Diff Analysis

The structural modifications implemented in the patch address both the exception formatting architecture and the fallback mitigation layers.

Below is a comparison of the vulnerable error-generation logic versus the patched approach inside vllm/entrypoints/serve/utils/server_utils.py:

# VULNERABLE APPROACH
async def validation_exception_handler(req: Request, exc: RequestValidationError) -> Response:
    # Raw string conversion of 'exc' serializes FastAPI's route traceback contexts
    exc_str = str(exc)
    errors_str = str(errors)
    if errors and errors_str and errors_str != exc_str:
        message = f"{exc_str} {errors_str}"
    else:
        message = exc_str
 
# PATCHED APPROACH
async def validation_exception_handler(req: Request, exc: RequestValidationError) -> Response:
    # Reconstructs errors using structured fields from exc.errors() instead of str(exc)
    if errors:
        count = len(errors)
        label = "error" if count == 1 else "errors"
        message = f"{count} validation {label}:\n"
        message += "".join(f"  {err}\n" for err in errors)
        message = message.rstrip()
    else:
        message = "Validation error"

Additionally, the patch hardens the fallback mechanism inside vllm/entrypoints/serve/utils/api_utils.py to strip out persistent filesystem details:

def sanitize_message(message: str) -> str:
    """Strip memory addresses, tracebacks, and file paths from error messages."""
    message = re.sub(r" at 0x[0-9a-f]+>", ">", message)
    # Strips raw Python traceback patterns
    message = re.sub(r'\n?\s*File "[^"]+", line \d+, in \S+(\n\s+.*)?', "", message)
    # Filters common base directories
    message = re.sub(
        r"/(?:home|usr|opt|var|tmp|root|lib|mnt|srv)(?:/[\w.\-]+)+", "<path>", message
    )
    # Fallback absolute path replacement
    message = re.sub(r"(?:/[\w\-]+)+/[\w\-]+\.\w+", "<path>", message)
    return message.strip()

Execution Flow Diagram

The following diagram tracks the processing sequence of a malformed client request through the application logic, highlighting how environmental details are exposed during error generation.

Exploitation Methodology

Exploitation of CVE-2026-73555 is straightforward and does not require complex payload mechanics. An attacker targeting the /v1/chat/completions endpoint can purposely submit invalid data types to force a validation failure.

For example, the endpoint expects the messages attribute to contain a list of objects. Transmitting a scalar string instead triggers a validation failure, prompting the server to formulate an error response. Because authentication is often bypassed or absent on these standard serving endpoints, any client on the network interface can generate this payload.

The resulting HTTP 422 Unprocessable Entity response returns the path structure of the virtual environment, the python system engine details, and the local shell username. This allows external threat actors to profile the underlying infrastructure without writing to disk or provoking system alerts.

Impact Assessment

While CVE-2026-73555 is assigned a CVSS score of 5.3 (Medium) due to its read-only impact, its role in a broader attack chain is substantial. Identifying absolute paths and system account names removes key barriers to local privilege escalation or sandbox escape.

Knowing that an instance runs in /home/deployer/vllm-env/ rather than a restricted system container allows attackers to design path-traversal scripts and locate configuration repositories. It also reveals file system permissions, package versions, and operational boundaries.

In environments utilizing containers, this leak compromises the confidentiality of host-mount directories. Because AI infrastructure is frequently deployed in cloud-managed nodes with elevated privileges, exposing the structural design of these endpoints increases the severity of adjacent host exploits.

Mitigation Analysis & Potential Gaps

The primary resolution is upgrading the installation to vLLM version 0.26.0 or higher. This modifies the exception formatter to avoid stringifying raw tracebacks.

However, potential gaps remain in the fallback validation logic. The patterns within sanitize_message rely entirely on Unix-like directory layouts. If vLLM is executed on a native Windows server, backslash-separated absolute directory paths (such as C:\Users\Administrator\vllm\) will not match the current regular expression layout and will still leak to remote users.

Furthermore, non-standard Unix mount directories like /app, /workspace, or /code are not targeted by the default pattern unless they contain a file extension. These omissions could allow some environments to remain partially vulnerable if errors escape the primary validation handler.

Official Patches

vllm-projectvLLM Security Advisory for GHSA-hwrm-c4cx-rf4j

Fix Analysis (1)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
EPSS Probability
0.26%
Top 83% most exploited

Affected Systems

vLLM API Server deployments running version < 0.26.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
vllm
vllm-project
< 0.26.00.26.0
AttributeDetail
CWE IDCWE-209
Attack VectorNetwork (AV:N)
CVSS v3.15.3 (Medium)
EPSS Score0.00255
ImpactInformation Disclosure
Exploit Statuspoc
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1005Data from Local System
Collection
T1082System Information Discovery
Discovery
CWE-209
Generation of Error Message Containing Sensitive Information

The product generates an error message that contains sensitive information about its environment, applications, or associated data, which can expose internal implementation details to unauthorized parties.

Vulnerability Timeline

Fix commit merged into the codebase
2026-07-09
vLLM v0.26.0 released and CVE-2026-73555 published
2026-08-13

References & Sources

  • [1]vLLM Github Security Advisory
  • [2]vLLM Patch Commit

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 minutes ago•CVE-2026-109619
9.2

CVE-2026-109619: Remote Code Execution in PHP Core via Stale Global State Memory Corruption (PHP2Shell)

CVE-2026-109619 (PHP2Shell) is a critical Use-After-Free vulnerability in the core PHP engine caused by improper global state cleanup during out-of-memory exception handling across persistent worker requests.

Alon Barad
Alon Barad
1 views•6 min read
•5 minutes ago•CVE-2026-113721
4.5

CVE-2026-113721: Unsafe Link Resolution in virtualenv File Generation

In Python virtualenv prior to version 21.14.9, activation script generators and configuration writers use Path.exists() before writing files. Because Path.exists() resolves symbolic links, it returns False for dangling symlinks. Consequently, virtualenv skips unlinking pre-planted symbolic links or hard links, writing data directly to target locations outside the intended virtual environment directory.

Amit Schendel
Amit Schendel
1 views•5 min read
•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
31 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
19 views•6 min read
•10 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
18 views•5 min read
•10 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
24 views•6 min read