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

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

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 5, 2026·5 min read·2 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can cause a complete Denial of Service (DoS) in vLLM by submitting a maliciously crafted regular expression that triggers exponential backtracking in the lm-format-enforcer backend, pinning the CPU at 100%.

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.

Vulnerability Overview

vLLM is a high-throughput and memory-efficient inference engine for Large Language Models (LLMs). To ensure that model outputs adhere to strict structural constraints, such as JSON schemas or regular expressions, vLLM provides a structured output decoding capability. This execution pathway relies on various parsing backends, including lm-format-enforcer, which translates regular expressions into Finite State Machines (FSMs) to guide the token-generation process.\n\nThe vulnerability lies within this structured decoding pipeline when utilizing the lm-format-enforcer engine. Specifically, the engine accepts user-controlled regular expressions through the structured_outputs.regex parameter at OpenAI-compatible endpoints like /v1/chat/completions and /v1/completions. Prior to version 0.26.0, vLLM failed to validate the execution complexity of these regex expressions or enforce compile-time resource limits on this backend.\n\nThis omission exposes vLLM servers to a remote, unauthenticated Regular Expression Denial of Service (ReDoS). When an attacker submits a highly complex or catastrophic regular expression, the backend thread attempts to parse and compile the expression into an FSM. This operation blocks the thread synchronously, forcing the CPU core to spin at maximum utilization and stalling the entire inference execution pipeline for concurrent requests.

Root Cause Analysis

The root cause of CVE-2026-73556 is the uncontrolled resource consumption during the parsing and state compilation of user-supplied regular expressions within lm-format-enforcer. This backend translates regex patterns into state-machine constraints via underlying libraries such as interegular. Because compiling irregular regular expressions (such as those containing nested quantifiers or overlapping loops) requires calculating complex state transitions, the compilation time scales exponentially relative to the expression structure.\n\nIn vulnerable versions, vLLM lacked validation steps or timeout guards when passing input to lmformatenforcer.RegexParser. During normal operation, the parsing of clean schemas is instantaneous. However, an attacker can specify a pattern containing overlapping groupings, such as (a+)+$, which causes catastrophic backtracking or extreme state-space explosion when parsed into an FSM.\n\nBecause Python executes this parsing synchronously on the thread servicing the request, the process consumes 100% of a CPU core. In multi-tenant environments or standard inference pools, this blockage prevents the worker from handling other token-generation streams. This flaw represents a "missed sibling" of CVE-2026-55574; while timeouts were implemented for other structured engines like xgrammar and outlines, lm-format-enforcer was left unprotected.

Code Analysis & Patch Deep Dive

The vulnerability was addressed in Pull Request #47595 (Commit c9a788eedc412acceaa5112e0d44624b49841577) by implementing validation and compilation timeouts using a utility function compile_regex_with_timeout.\n\nIn vllm/v1/structured_output/backend_lm_format_enforcer.py, the original implementation directly instantiated the regex parser:\n\npython\n# Vulnerable Code Path\nelif request_type == StructuredOutputOptions.REGEX:\n character_level_parser = lmformatenforcer.RegexParser(grammar_spec)\n\n\nThis instruction ran without any thread intervention or timer. The patched version wraps this initialization using a timeout-safe compiler:\n\npython\n# Patched Code Path\nelif request_type == StructuredOutputOptions.REGEX:\n character_level_parser = compile_regex_with_timeout(\n lmformatenforcer.RegexParser,\n grammar_spec,\n )\n\n\nAdditionally, early input validation was introduced to reject malicious inputs at the API gateway layer before they schedule worker threads:\n\npython\n# Early validation in backend_lm_format_enforcer.py\ndef validate_structured_output_request_lm_format_enforcer(params: SamplingParams):\n so_params = params.structured_outputs\n\n if so_params.regex:\n try:\n compile_regex_with_timeout(\n lmformatenforcer.RegexParser,\n so_params.regex,\n )\n except Exception as err:\n raise ValueError(\n f"Failed to compile regex for lm-format-enforcer: {err}"\n ) from err\n\n\nBy testing compile time inside validate_structured_output_request_lm_format_enforcer, the server catches ReDoS inputs early. If compilation exceeds the threshold, the system throws a ValueError, returning an HTTP 400 response and preventing resource exhaustion.

Exploitation Methodology

An attacker can trigger this vulnerability by making a single, unauthenticated POST request to the vLLM server's OpenAI-compatible completions endpoints. No special privileges or structural knowledge of the underlying model are required. The attack relies entirely on the inclusion of the structured_outputs JSON block.\n\njson\nPOST /v1/completions HTTP/1.1\nHost: target-vllm-server:8000\nContent-Type: application/json\n\n{\n "model": "meta-llama/Meta-Llama-3-8B-Instruct",\n "prompt": "Synthesize a structured response.",\n "stream": false,\n "structured_outputs": {\n "regex": "(([a-zA-Z0-9])+)+$"\n }\n}\n\n\nWhen the request is processed, the system maps the structured_outputs.regex option to the lm-format-enforcer backend. As the regex engine attempts to expand the FSM states for the catastrophic sub-pattern (([a-zA-Z0-9])+)+$, the calculation complexity balloons.\n\nmermaid\ngraph LR\n Client["Unauthenticated Client"] -->|"Catastrophic Regex"| vLLM["vLLM API Endpoints (/v1/completions)"]\n vLLM -->|"Extracts structured_outputs.regex"| LME["lm-format-enforcer Backend"]\n LME -->|"Synchronous FSM Compilation"| ReDoS["CPU Core Spin (100% Load)"]\n ReDoS -->|"Thread Stalled"| Block["Inference Pipeline Stalls"]\n\n\nThe resulting execution loop does not crash the server immediately with a memory fault but rather holds the designated CPU thread in a perpetual busy-wait state. Sustained attacks consisting of multiple requests can quickly exhaust all available CPU threads in the vLLM worker pool, rendering the service completely unresponsive.

Residual Risk Analysis

While the security patch effectively mitigates direct ReDoS attacks submitted via the structured_outputs.regex field, several architectural limitations could allow variant bypasses. Security researchers should pay close attention to nested structured outputs, particularly in complex JSON Schemas.\n\nUnder StructuredOutputOptions.JSON_OBJECT, users can supply complete JSON Schemas. If these schemas contain nested properties that use the "pattern" validation keyword (which also accepts regex constraints), the underlying JsonSchemaParser might compile these inner patterns. If the inner pattern compilation does not pass through the compile_regex_with_timeout utility, an attacker could hide a catastrophic regex inside a JSON schema parameter, bypassing the primary validation check.\n\nAnother concern resides in Python's signal-handling mechanism. Python's signal.alarm, which is often used to implement timeout wrapper mechanisms, is strictly limited to POSIX/Unix environments and must run on the process's main thread. If vLLM is deployed on non-POSIX runtimes (such as Windows environments) or schedules validation processes entirely inside worker threads rather than the main loop thread, standard timeout interrupts might be ignored, leaving the resource exhaustion path open.

Fix Analysis (1)

Technical Appendix

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

Affected Systems

vLLM

Affected Versions Detail

Product
Affected Versions
Fixed Version
vllm
vllm-project
< 0.26.00.26.0
AttributeDetail
CWE IDCWE-1333 / CWE-400
Attack VectorNetwork (AV:N)
CVSS Score5.3 (Medium)
EPSS Score0.00315 (Percentile: 23.90%)
ImpactDenial of Service (CPU Exhaustion)
Exploit StatusNo Public PoC Found
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
CWE-1333
Inefficient Regular Expression Complexity

The software uses a regular expression that can require exponential or polynomial time to evaluate against certain inputs, leading to a Denial of Service.

Vulnerability Timeline

Vulnerability patched in PR 47595
2026-07-14
CVE-2026-73556 / GHSA-48jh-3gj7-fg8v published
2026-08-13
NVD entry updated with CVSS evaluations
2026-08-14

References & Sources

  • [1]vLLM Security Advisory (GHSA-48jh-3gj7-fg8v)
  • [2]vLLM Pull Request #47595
  • [3]vLLM Fix Commit
  • [4]vLLM Release v0.26.0
  • [5]NVD CVE-2026-73556 Detail
  • [6]CVE.org Record for CVE-2026-73556

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 2 hours ago•CVE-2026-73557
6.3

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

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).

Alon Barad
Alon Barad
3 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