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

CVE-2026-55646: Remote Denial of Service via Memory Exhaustion in vLLM Speech-to-Text Endpoints

Alon Barad
Alon Barad
Software Engineer

Jul 17, 2026·5 min read·61 visits

Executive Summary (TL;DR)

vLLM version 0.22.0 through 0.23.0 allocates system RAM for file uploads before validating size constraints. Attackers can exploit this to trigger out-of-memory (OOM) crashes on the serving host, causing a complete denial of service.

A severe denial-of-service (DoS) vulnerability exists in the speech-to-text API endpoints of the vLLM serving engine from version 0.22.0 to 0.23.0. The flaw is triggered by the direct deserialization and reading of uploaded files into RAM prior to validating file-size limits. An authenticated attacker can exploit this behavior by submitting large file payloads, causing resource starvation and forcing the operating system kernel to terminate the serving process.

Vulnerability Overview

The vLLM framework is an open-source serving engine optimized for high-throughput and memory-efficient Large Language Model (LLM) inference. In versions 0.22.0 through 0.23.0, the framework includes speech-to-text API endpoints designed to parse and translate audio inputs. These endpoints, namely /v1/audio/transcriptions and /v1/audio/translations, expose an attack surface to authenticated clients.

This vulnerability belongs to the class of CWE-400 (Uncontrolled Resource Consumption) and CWE-770 (Allocation of Resources Without Limits or Throttling). The engine fails to restrict raw memory allocations when parsing multipart HTTP file uploads. This behavior permits an attacker to send arbitrarily large payloads that exhaust system resources prior to validation checks.

Successful exploitation results in process termination. Because vLLM hosts computationally heavy models, a sudden resource depletion often causes the operating system's Out-Of-Memory (OOM) killer to terminate the main engine process. This results in a complete denial of service for all users relying on the affected instance.

Root Cause Analysis

The core technical defect resides in the execution flow within the speech-to-text API router. When a client uploads an audio file, Starlette (the underlying ASGI framework used by FastAPI) instantiates an UploadFile object. To parse the file contents, the route handler executes the expression audio_data = await request.file.read().

Executing read() without bounded constraints instructs Starlette to ingest the incoming multipart stream entirely. The framework allocates heap memory proportional to the size of the received file payload and stores it as a raw Python bytes object. This allocation occurs immediately upon receipt of the request.

While vLLM defines a configuration parameter named VLLM_MAX_AUDIO_CLIP_FILESIZE_MB (defaulting to 25 MB), this variable was only evaluated after the file was fully materialized in memory. If an attacker uploads a multi-gigabyte file, the server allocates gigabytes of physical RAM. If the allocated amount exceeds available memory, the host kernel triggers a SIGKILL to reclaim memory resources.

Vulnerable Execution Flow

The following diagram outlines the sequence of events leading to system-level process termination when an oversized upload is received:

Code Analysis & Fix Verification

In vulnerable versions, the route handler in vllm/entrypoints/speech_to_text/transcription/api_router.py processed incoming requests directly via standard Starlette file streams:

# Vulnerable Implementation
@router.post("/v1/audio/transcriptions")
async def create_transcriptions(...):
    ...
    # Memory is allocated dynamically for the full file size here
    audio_data = await request.file.read()
    ...

To resolve this flaw, the developers introduced a validation helper named read_upload_with_limit in the file vllm/entrypoints/speech_to_text/base/utils.py and modified the router endpoints to use it:

# Patched Implementation
@router.post("/v1/audio/transcriptions")
async def create_transcriptions(...):
    ...
    # Validation and bounded streaming are applied during ingestion
    audio_data = await read_upload_with_limit(request.file)
    ...

This helper verifies the Content-Length header via file.size. If the metadata reports a size exceeding VLLM_MAX_AUDIO_CLIP_FILESIZE_MB, the server rejects the request immediately. To protect against spoofed or missing headers, the helper processes the stream in incremental chunks of 64 KiB (_READ_CHUNK_SIZE), keeping a running total of ingested bytes. If this total crosses the threshold, the upload is aborted and the stream is discarded. This is a complete fix that prevents uncontrolled heap expansion.

Exploitation Methodology

Exploitation requires network reachability to the /v1/audio/transcriptions or /v1/audio/translations endpoints. If the host requires API key authentication, the attacker must possess standard credentials. No specialized tools are required; standard HTTP client libraries can facilitate the attack.

An attacker crafts a multipart form-data payload containing an excessively large file. Because Starlette processes streamed chunked uploads, the attacker can use the Transfer-Encoding: chunked header to stream data without declaring the Content-Length header, bypassing basic frontend gateway checks.

Upon receiving the stream, the backend continuously stores incoming data in heap memory. The allocation continues until the server's free physical memory is exhausted. At this stage, the OS kernel's Out-Of-Memory subsystem triggers and terminates the vllm worker process, resulting in an immediate denial of service.

Impact Assessment

The impact of this vulnerability is classified as High for availability, but carries zero impact for confidentiality or integrity. Because the engine processes large, complex transformer models, these servers typically run with high baseline memory overhead. Consequently, even small spikes in heap usage can cause process termination.

When the vLLM process is terminated, all ongoing and queued inference tasks across other endpoints (including standard text-generation models) fail immediately. This behavior disrupts operations across any microservices reliant on the affected vLLM instance.

The vulnerability is assigned a CVSS score of 6.5 (Medium). The requirement for a valid API token in authenticated environments serves as the primary barrier preventing automated mass-exploitation, maintaining lower overall exposure risk.

Remediation & Mitigation

The primary remediation strategy is upgrading the vllm library to version 0.24.0 or later. This version contains the read_upload_with_limit implementation that protects against both buffer exhaustion and chunked upload evasion.

If upgrading immediately is not feasible, administrators can apply mitigation at the network layer. Configure reverse proxies or API gateways (such as Nginx or Envoy) to restrict client payload sizes on these routes. For example, adding client_max_body_size 25M; in Nginx prevents oversized streams from reaching the vLLM backend.

Additionally, administrators can enforce strict containerization constraints. Limiting container memory bounds via cgroups prevents host-wide resource depletion and allows orchestration tools (e.g., Kubernetes) to automatically restart the terminated container, reducing overall downtime.

Official Patches

vllm-projectPull Request #45510: Security update for audio endpoint file uploads
vllm-projectCommit implementing read_upload_with_limit security controls

Fix Analysis (1)

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
EPSS Probability
0.29%
Top 79% most exploited

Affected Systems

vLLM Serving Engine running on PyPI ecosystem

Affected Versions Detail

Product
Affected Versions
Fixed Version
vllm
vllm-project
>= 0.22.0, < 0.24.00.24.0
AttributeDetail
CWE IDCWE-400, CWE-770
Attack VectorNetwork (Remote)
CVSS v3.16.5 (Medium)
Exploit MaturityPoC / Known Mechanics
ImpactDenial of Service (DoS)
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
CWE-400
Uncontrolled Resource Consumption

The software does not control or properly limit the allocation and consumption of a resource, leading to memory exhaustion and denial of service.

Vulnerability Timeline

Remediation commit integrated into main branch of vLLM
2026-06-15
Security advisory published publicly on GitHub Advisories
2026-07-06
Vulnerability published on NVD and assigned CVE-2026-55646
2026-07-06

References & Sources

  • [1]vLLM Security Advisory GHSA-v82g-2437-67m2
  • [2]National Vulnerability Database: CVE-2026-55646

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

•about 3 hours 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
6 views•5 min read
•about 4 hours 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
6 views•6 min read
•about 4 hours 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
7 views•5 min read
•about 6 hours 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
9 views•6 min read
•about 7 hours ago•CVE-2026-70183
7.5

CVE-2026-70183: Elevation of Privilege in ASP.NET Core and Visual Studio via Concurrent Race Condition

An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.

Alon Barad
Alon Barad
7 views•5 min read
•3 days ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
15 views•5 min read