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

CVE-2026-57173: Unauthenticated Audio Decompression-Bomb Denial of Service in vLLM

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 17, 2026·6 min read·6 visits

Executive Summary (TL;DR)

vLLM versions prior to 0.24.0 are vulnerable to remote Denial of Service via an audio decompression bomb targeting the chat completions API, causing an immediate worker crash due to memory exhaustion.

CVE-2026-57173 (GHSA-hcwq-8wjf-3gcr) represents a critical resource allocation validation vulnerability in the vLLM inference engine. Prior to version 0.24.0, vLLM's multimodal chat completions pipeline failed to enforce maximum audio decode duration limits. Unauthenticated remote attackers can exploit this to perform an audio decompression bomb attack, causing massive memory allocations that trigger immediate system Out-Of-Memory (OOM) crashes and service termination.

Vulnerability Overview

vLLM is an open-source, high-throughput inference and serving engine designed for Large Language Models (LLMs). To support multimodal inputs such as speech-to-text and vision-language tasks, vLLM incorporates media processing pipelines to parse, decode, and transform incoming binary files (such as images and audio) into structured numerical tensors.

Prior to version 0.24.0, a security boundary omission existed within vLLM's audio ingestion pipeline. Specifically, the multimodal chat completions path (/v1/chat/completions) failed to propagate the maximum audio decode duration constraint (VLLM_MAX_AUDIO_DECODE_DURATION_S) when calling underlying audio decoding interfaces. This omission allows unauthenticated attackers to submit crafted audio files that bypass runtime limits.

This vulnerability is classified under CWE-770 (Allocation of Resources Without Limits or Throttling). It permits a remote attacker to execute an Endpoint Denial of Service (DoS) attack, commonly referred to as an audio decompression bomb. The impact of this exploit is the immediate exhaustion of physical or virtual memory, resulting in an Out-Of-Memory (OOM) crash of the Python worker processes.

Root Cause Analysis

The root cause of this vulnerability lies in the structural separation of API pathways in the vLLM server. The dedicated speech-to-text transcription endpoint (/v1/audio/transcriptions) explicitly enforced duration boundaries. However, the multimodal chat completions endpoint (/v1/chat/completions) relied on the AudioMediaIO class in vllm/multimodal/media/audio.py to ingest and decode audio streams.

Within AudioMediaIO, the helper methods load_bytes and load_file are responsible for deserializing payloads. In vulnerable versions, these methods invoked the shared decoding routine load_audio(data, sr=None) without supplying the keyword argument max_duration_s. Consequently, the parameter defaulted to None inside the underlying backend wrapper, which leverages PyAV or SoundFile decoders.

Without an explicit duration limitation, the decoder attempts to decompress the entire stream regardless of its actual or declared playback length. An attacker can construct a highly compressed audio stream that expands into a massive uncompressed array of 32-bit floating-point (float32) Pulse Code Modulation (PCM) samples in RAM. Because the decompression process occurs synchronously during request parsing, the operating system's Out-Of-Memory (OOM) killer terminates the parent Python process to prevent system-wide instability.

Code Analysis and Git Patch

To understand the technical correction, we must review the git diff in the affected module vllm/multimodal/media/audio.py. The patch explicitly introduces global configuration imports and passes the runtime boundary down the execution stack.

# Vulnerable Implementation
class AudioMediaIO:
    # ...
    def load_bytes(self, data: bytes) -> tuple[npt.NDArray, float]:
        # Decodes raw bytes with no max_duration_s parameter supplied
        return load_audio(BytesIO(data), sr=None)
 
    def load_file(self, filepath: Path) -> tuple[npt.NDArray, float]:
        # Decodes target local file with no max_duration_s parameter supplied
        return load_audio(filepath, sr=None)
# Patched Implementation
import vllm.envs as envs
 
class AudioMediaIO:
    # ...
    def load_bytes(self, data: bytes) -> tuple[npt.NDArray, float]:
        # Explicitly propagates the global environmental decode limit
        return load_audio(
            BytesIO(data),
            sr=None,
            max_duration_s=envs.VLLM_MAX_AUDIO_DECODE_DURATION_S,
        )
 
    def load_file(self, filepath: Path) -> tuple[npt.NDArray, float]:
        # Explicitly propagates the global environmental decode limit
        return load_audio(
            filepath,
            sr=None,
            max_duration_s=envs.VLLM_MAX_AUDIO_DECODE_DURATION_S,
        )

The fix is robust against normal payload abuse because the underlying load_audio implementation uses the propagated max_duration_s value to check the container's duration headers or terminate early during streaming decoding. However, a potential weakness remains if the container metadata is malformed to spoof a short duration while containing highly dense multi-channel audio data packets.

Exploitation Mechanics

The vulnerability is exploited by targeting the /v1/chat/completions API route with a crafted payload containing a highly compressed audio stream. Attackers can leverage the asymmetric compression capabilities of modern codecs such as FLAC, Opus, or MP3. These formats can compress minutes or hours of silent or highly repetitive audio signals into a few hundred kilobytes.

Additionally, vLLM supports inline Data URLs allowing attackers to transmit base64-encoded audio directly inside JSON objects. Since these payloads are fully self-contained, they are parsed instantly upon receipt, bypassing external network fetch timeout guards such as VLLM_AUDIO_FETCH_TIMEOUT. The decoding process allocates memory according to the formula: Samples = Sample Rate * Channels * Duration. For standard 44.1 kHz stereo audio decoded to 32-bit floating point, each second requires approximately 352.8 kilobytes of memory, allowing small files to demand gigabytes of RAM during decompression.

Impact Assessment

The primary impact of this vulnerability is a complete loss of service availability for the affected vLLM node. Because vLLM often runs as a high-performance single-process system with heavy GPU and system memory allocations, a sudden spike in RAM utilization triggers the host Linux kernel's Out-Of-Memory (OOM) killer. This terminates the core serving daemon instantly, dropping all active inference sessions and preventing new requests from being served.

The CVSS v3.1 score is evaluated at 6.5 (Medium) with the vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H. Although the CVSS vector lists Privileges Required as Low (PR:L) due to standard multi-tenant API assumptions, many default vLLM deployments are exposed directly to internal networks or the open internet without authentication, making the bug practically unauthenticated. No confidentiality or integrity impact is associated with this vulnerability.

Mitigation and Prevention Strategy

Remediation requires upgrading the vLLM engine to version 0.24.0 or higher, where the duration validation is consistently applied across all ingestion paths. For environments where immediate updates are not feasible, administrators must apply the security patches manually to the audio.py module.

In addition to upgrading, several defensive postures should be implemented:

  1. Restrict Request Body Sizes: Configure reverse proxies (e.g., NGINX, Envoy, Cloudflare) to drop requests exceeding a strict threshold, such as 5MB, which prevents the transmission of extremely large base64-encoded audio buffers.

  2. Adjust Environmental Limits: Set the environment variable VLLM_MAX_AUDIO_DECODE_DURATION_S to a lower value (such as 120 or 300) to restrict the maximum allowable memory allocated per-request.

  3. Deploy API Gateways: Ensure that the model endpoints are protected behind an API gateway enforcing strict authentication, rate-limiting, and client quotas to mitigate bulk denial-of-service attempts.

Official Patches

vLLM ProjectPull Request Fixing the Bug

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

Affected Systems

vLLM installations serving audio-capable multimodal models

Affected Versions Detail

Product
Affected Versions
Fixed Version
vLLM
vLLM Project
< 0.24.00.24.0
AttributeDetail
CWE IDCWE-770
Attack VectorNetwork
CVSS v3.1 Score6.5
EPSS ScoreNot Recorded
ImpactEndpoint Denial of Service (OOM Crash)
Exploit StatusProof of Concept (PoC)
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
CWE-770
Allocation of Resources Without Limits or Throttling

The software allocates a resource (memory) on behalf of an actor without specifying limits on the amount of resource that can be consumed.

Known Exploits & Detection

GitHub Security AdvisoryThe technical writeup and PoC behavior details are documented in the advisory.

References & Sources

  • [1]GHSA-hcwq-8wjf-3gcr
  • [2]Fix 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

•about 1 hour ago•CVE-2026-61599
8.8

CVE-2026-61599: Unauthenticated Arbitrary Module Import in djust Framework

A critical unauthenticated arbitrary module import vulnerability in the djust framework before version 1.0.7 allows remote attackers to execute arbitrary code by exploiting unsafe Python reflection during LiveView connection mounting.

Alon Barad
Alon Barad
1 views•7 min read
•about 2 hours ago•CVE-2026-59193
4.9

CVE-2026-59193: Remote Denial of Service via Resource Exhaustion in Grav CMS

A denial-of-service (DoS) and resource exhaustion vulnerability exists in Grav CMS prior to version 2.0.0. The package installer decompressor fails to validate ZIP archive limits before extraction, allowing authenticated administrators to cause disk exhaustion, inode exhaustion, or process termination.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 4 hours ago•CVE-2026-61453
6.1

CVE-2026-61453: Stored Cross-Site Scripting via Twig String Concatenation Bypass in Grav CMS

Grav CMS before v2.0.1 contains a security bypass vulnerability in its blueprint validation logic. The XSS detection routine, Security::detectXss(), was executed on raw page contents prior to Twig engine processing. When Twig processing is enabled for editor-authored page content, an attacker can dynamically reconstruct harmful HTML elements, attributes, or protocols using string concatenation (e.g. `{{ 'on' ~ 'error' }}`). When compiled, the benign source converts into active XSS payloads, which are rendered to the client browser via raw filters. This vulnerability was resolved in version 2.0.1 by adding a post-render validation backstop.

Alon Barad
Alon Barad
5 views•7 min read
•about 5 hours ago•CVE-2026-63127
8.2

CVE-2026-63127: OAuth Resource Spoofing and Token Leakage in rmcp SDK

An OAuth resource spoofing vulnerability in the rmcp crate prior to 2.0.0 allows a malicious Model Context Protocol (MCP) server to spoof protected resource metadata. By presenting metadata pointing to a legitimate resource and authorization server, the attacker can trick the client into completing the authentication flow and subsequently sending the authorized token back to the malicious server.

Alon Barad
Alon Barad
5 views•7 min read
•about 6 hours ago•CVE-2026-63128
7.5

CVE-2026-63128: Uncontrolled Resource Consumption in Model Context Protocol Rust SDK (rmcp)

CVE-2026-63128 is a high-severity uncontrolled resource consumption vulnerability in the Model Context Protocol (MCP) official Rust SDK (the rmcp crate) prior to version 2.0.0. An unauthenticated attacker can exploit this vulnerability by sending malformed or mismatching handshake requests to the stateful Streamable HTTP server, causing persistent memory allocation without cleanup. This results in an unbounded memory leak and lock contention that ultimately leads to complete denial of service.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 7 hours ago•CVE-2026-63671
8.1

CVE-2026-63671: Cross-Site Scripting (XSS) Sanitizer Bypass in @nuxtjs/mdc

A cross-site scripting (XSS) vulnerability was identified in @nuxtjs/mdc prior to version 0.22.1. Gaps in the HTML/SVG attribute verification and URL protocol parsing allow unauthenticated remote attackers to bypass the application's sanitization routines. By embedding malicious SVG links or data-encoded iframe elements within Markdown, attackers can execute arbitrary JavaScript in the victim's browser context.

Amit Schendel
Amit Schendel
4 views•6 min read