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-73557

CVE-2026-73557: Race Condition in PyTorch Tensor Invariant Checks within vLLM Engine

Alon Barad
Alon Barad
Software Engineer

Sep 5, 2026·5 min read·3 visits

Executive Summary (TL;DR)

A race condition in vLLM's custom embedding loaders allows unauthenticated attackers to bypass PyTorch sparse tensor validation, causing out-of-bounds writes and server crashes via crafted requests.

CVE-2026-73557 details a race condition vulnerability in the vLLM serving framework, arising from the thread-unsafe usage of PyTorch's process-global sparse tensor invariant check manager. When processing concurrent requests with custom prompt or multimodal embeddings, concurrent thread execution can disable global tensor integrity checks. An unauthenticated attacker can leverage this timing window to submit malformed sparse coordinate (COO) tensors containing out-of-bounds indices, causing memory corruption and process crashes (Denial of Service).

Vulnerability Overview

The vulnerability CVE-2026-73557 is a race condition in vLLM, a high-throughput and memory-efficient serving engine for Large Language Models (LLMs). This flaw specifically impacts how the system handles custom prompt and multimodal embeddings (such as text, image, or audio) provided directly by the client. These features allow clients to bypass the tokenization stage by sending pre-computed serialized PyTorch tensors.\n\nThe vulnerability lies within the interaction between vLLM's concurrent, asynchronous architecture and PyTorch's process-global state model. By sending concurrent requests with custom embeddings, a remote, unauthenticated attacker can exploit this concurrency model to bypass security validation, forcing the vLLM engine to process unvalidated, malformed coordinate (COO) sparse tensors.\n\nThe vulnerability has been assigned CVE-2026-73557 and GHSA-pr7f-p5mw-fc87. It affects all versions of vLLM from 0.20.2rc0 up to, but not including, 0.26.0. Successful exploitation leads to an out-of-bounds memory write, causing a denial-of-service (DoS) crash of the vLLM serving process.

Technical Root Cause Analysis

The root cause of CVE-2026-73557 is the non-thread-safe design of PyTorch's torch.sparse.check_sparse_tensor_invariants() context manager. To remediate a previous vulnerability (CVE-2025-62164), vLLM developers wrapped tensor loading calls with this context manager to enforce coordinate bounds validation on Coordinate (COO) sparse tensors.\n\nWhen PyTorch executes torch.sparse.check_sparse_tensor_invariants(), it alters a process-global validation state flag. Upon entering the context manager (__enter__), the current global validation state (usually False by default) is saved, and the process-global flag is set to True. Upon exiting the context manager (__exit__), the saved state is restored back to the process-global flag.\n\nBecause vLLM processes requests asynchronously and offloads CPU-intensive tensor deserialization tasks to a shared ThreadPoolExecutor via asyncio.gather, multiple threads can enter and exit these validation contexts concurrently. This interleaving creates a race condition. A benign thread exiting its context manager can set the global flag back to False while another concurrent thread is still inside its guarded block, leaving the remaining thread to deserialize a malicious tensor with validation silently disabled.

Vulnerable vs. Patched Code Analysis

In the vulnerable version of vLLM, the validation context was applied directly around torch.load calls without any thread synchronization. The following code from vllm/renderers/embed_utils.py demonstrates this vulnerability:\n\npython\n# Vulnerable Implementation in vllm/renderers/embed_utils.py\nwith torch.sparse.check_sparse_tensor_invariants():\n tensor = torch.load(\n BytesIO(pybase64.b64decode(embed, validate=True)),\n weights_only=True,\n map_location=torch.device(\"cpu\"),\n )\n return tensor.to_dense()\n\n\nIn the patched version, a process-wide mutex lock _SPARSE_LOAD_LOCK is introduced in vllm/utils/sparse_utils.py to serialize all validation context manager operations. This ensures that only one thread can modify and execute within the global validation context at any given time:\n\npython\n# Patched Implementation in vllm/utils/sparse_utils.py\nimport contextlib\nimport threading\nimport torch\n\n_SPARSE_LOAD_LOCK = threading.Lock()\n\n@contextlib.contextmanager\ndef check_sparse_tensor_invariants_threadsafe():\n # Enforce mutual exclusion on the global state manipulation\n with _SPARSE_LOAD_LOCK, torch.sparse.check_sparse_tensor_invariants():\n yield\n\n\nThis synchronized wrapper is then used across all affected loader paths, including vllm/renderers/embed_utils.py, vllm/multimodal/media/audio.py, and vllm/multimodal/media/image.py, preventing concurrent interleaving.

Exploitation Mechanics

An attacker can exploit this vulnerability by submitting a request containing both valid and malicious prompt embeddings concurrently, or by sending multiple rapid concurrent requests to the vLLM endpoint. The goal is to trigger the race condition where the exit of a benign load operation disables validation for the concurrent malicious load operation.\n\nThe malicious payload consists of a serialized PyTorch sparse COO tensor containing out-of-bounds indices. Below is an example of constructing such an invalid tensor:\n\npython\nimport io\nimport torch\nimport pybase64\n\n# Create an invalid COO sparse tensor with out-of-bounds indices\nindices = torch.tensor([[999999], [999999]])\nvalues = torch.tensor([1.0])\nshape = (5, 5)\n\ninvalid_sparse = torch.sparse_coo_tensor(\n indices, values, shape, dtype=torch.float32, check_invariants=False\n)\n\nbuf = io.BytesIO()\ntorch.save(invalid_sparse, buf)\nbuf.seek(0)\nmalicious_payload = pybase64.b64encode(buf.read()).decode(\"utf-8\")\n\n\nWhen the race condition is successfully triggered, the global validation flag is set to False before the malicious tensor calls .to_dense(). The compiled PyTorch C++ backend then attempts to write values to memory locations outside the allocated tensor buffer, leading to a segmentation fault and a denial-of-service (DoS) crash.

Impact Assessment

The exploitation of CVE-2026-73557 has a low-to-medium direct impact, primarily resulting in a Denial of Service (DoS) of the serving engine. When the invalid tensor coordinates are processed without validation, PyTorch's underlying C++ memory management routines perform out-of-bounds memory writes, causing an immediate segmentation fault (SIGSEGV) or heap corruption that terminates the vLLM daemon process.\n\nBecause vLLM serves as the primary inference backbone in production deployments, crashing the daemon disrupts LLM-powered applications and services. While there is no known vector for arbitrary code execution (ACE) or data exfiltration directly from this bug, service instability represents a significant risk for enterprise operations.\n\nThe CVSS v4.0 score is assessed at 6.3 (Medium), with a vector of CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N. The low exploitability probability (EPSS score of 0.00251) and the requirement of concurrent timing states mean that while the vulnerability is serious, widespread exploitation in the wild remains complex and low-priority.

Remediation Guidance

The primary remediation for CVE-2026-73557 is upgrading to vLLM version 0.26.0 or higher. This version implements the thread-safe context manager, which completely closes the race condition window by synchronizing access to PyTorch's global validation configuration.\n\nIf an immediate upgrade is not feasible, organizations should reduce the attack surface by disabling untrusted prompt and multimodal embedding features. This can be achieved by ensuring that the vLLM server is not started with the following command-line flags:\n- --enable-prompt-embeds\n- --enable-mm-embeds\n\nAdditionally, implementing network-level protections can mitigate risk. Employing Web Application Firewalls (WAF) to inspect incoming request bodies for JSON structures containing \"type\": \"prompt_embeds\" or limiting the concurrent rate of API calls to the completion endpoints can disrupt an attacker's ability to successfully execute the race timing loop.

Fix Analysis (1)

Technical Appendix

CVSS Score
6.3/ 10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
EPSS Probability
0.25%
Top 84% most exploited
1,500
via Shodan

Affected Systems

vLLM server environments utilizing prompt embeddingsvLLM server environments utilizing multimodal media loaders (audio, image)

Affected Versions Detail

Product
Affected Versions
Fixed Version
vLLM
vLLM Project
>= 0.20.2rc0, < 0.26.00.26.0
AttributeDetail
CWE IDCWE-362
Attack VectorNetwork
CVSS v4.0 Score6.3 (Medium)
EPSS Score0.00251
ImpactDenial of Service (Process Crash)
Exploit StatusProof-of-Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-362
Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

The program associates a process-global state change with a concurrent validation logic that can be scheduled out-of-order, causing the security control to be disabled while a concurrent execution thread processes invalid input.

Vulnerability Timeline

Initial mitigations added for CVE-2025-62164
2025-12-15
Race condition vulnerability reported to vLLM maintainers
2026-07-13
Fix commit submitted by Juan Pérez de Algaba
2026-07-14
vLLM v0.26.0 released containing the fix; CVE-2026-73557 public disclosure
2026-08-13

References & Sources

  • [1]vLLM Fix Commit 793cf79c89d4
  • [2]vLLM Pull Request 48583

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

•4 minutes ago•CVE-2026-73555
5.3

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

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.

Alon Barad
Alon Barad
0 views•5 min read
•about 1 hour ago•CVE-2026-73556
5.3

CVE-2026-73556: Regular Expression Denial of Service (ReDoS) in vLLM lm-format-enforcer Backend

CVE-2026-73556 is a Regular Expression Denial of Service (ReDoS) vulnerability in the vLLM inference engine's lm-format-enforcer structured-output backend. Prior to version 0.26.0, lack of compilation timeouts or complexity validation for user-supplied regular expressions in the structured_outputs.regex parameter allowed unauthenticated remote attackers to trigger CPU exhaustion and block the core execution loop.

Amit Schendel
Amit Schendel
2 views•5 min read
•about 3 hours ago•CVE-2026-73842
9.0

CVE-2026-73842: Missing Authentication and Authorization on Internal Management Listener in OpenChoreo cluster-gateway

A critical-severity missing authentication and privilege management vulnerability was identified in the OpenChoreo cluster-gateway component. The gateway exposed internal management endpoints, including arbitrary Kubernetes proxying and execution interfaces, on an unauthenticated port. An adjacent attacker within the control-plane network can bypass RBAC controls entirely and gain administrative control over all connected data planes.

Alon Barad
Alon Barad
4 views•6 min read
•about 4 hours ago•GHSA-7Q9C-HPX7-9CWM
7.5

GHSA-7Q9C-HPX7-9CWM: Unauthenticated Remote Shutdown in @typespec/spector Mock Server

An unauthenticated remote shutdown vulnerability exists in the Microsoft TypeSpec Spector mock server. Due to missing authentication on critical administrative routes and binding to all network interfaces, any remote attacker can shut down the mock server.

Alon Barad
Alon Barad
3 views•7 min read
•about 5 hours ago•CVE-2026-72796
5.8

CVE-2026-72796: Access Control Bypass via Static Routes in SiYuan

A detailed technical breakdown of CVE-2026-72796 (GHSA-fgmr-7w36-9qfq), an access control bypass vulnerability in the SiYuan personal knowledge management system. Prior to version 3.7.4, inconsistent authorization checks between dynamic API endpoints and static file routes allowed authenticated low-privilege readers or anonymous public users to read sensitive files, templates, snippets, and export directories.

Amit Schendel
Amit Schendel
5 views•8 min read
•about 6 hours ago•CVE-2026-75858
7.8

CVE-2026-75858: Silent Remote Code Execution via Approval Bypass in CodeWhale Interactive Tools

CVE-2026-75858 is a critical authorization bypass vulnerability in CodeWhale's interactive execution tools, allowing silent, unprompted execution of model-supplied Python and shell commands on the host machine. The defect affects versions between 0.8.41 and 0.8.64, bypassing any configured approval policies via indirect prompt injection.

Alon Barad
Alon Barad
5 views•6 min read