← Back to Feed CACHED · 2026-08-25 16:55:29 · CACHE_KEY CVE-2026-18798
CVE-2026-18798 · CWE-415 · Disclosed 2026-08-25

Issue summary: QUIC server may double free QRX

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

It's like finding a trapdoor in a room nobody moved into yet

CVE-2026-18798 is a double-free (CWE-415) in OpenSSL's QUIC server record-layer receive path (port_default_packet_handler()). When a QUIC INITIAL packet arrives and channel creation subsequently fails, the QRX object is freed once by port_bind_channel() and again by the error-handling cleanup code, corrupting the heap and crashing the process. Affected versions are OpenSSL 4.0.0–4.0.1, 3.6.0–3.6.3, and 3.5.0–3.5.7. Fixed in 4.0.2, 3.6.4, and 3.5.8. Only the server-side QUIC code path is reachable — TLS, DTLS, and QUIC client usage are completely unaffected.

The vendor CVSS of 7.5 / HIGH reflects the unauthenticated, network-reachable, no-interaction DoS vector — and that math is correct *in the abstract*. But OpenSSL's own severity classification is Moderate, and that's closer to reality. QUIC server support landed only in OpenSSL 3.5 (March 2025) and adoption is still early. The vast majority of OpenSSL deployments — web servers, VPN appliances, mail relays, API gateways — use TLS, not native OpenSSL QUIC. The impact ceiling is process crash (DoS), not code execution. For a 10,000-host fleet, the number of hosts actually running an OpenSSL-native QUIC *server* endpoint is likely in the single digits, if any.

"QUIC server double-free is DoS-only and hits a niche code path most enterprises haven't enabled yet."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Identify QUIC server endpoint

The attacker scans for UDP services advertising QUIC (typically port 443/UDP with ALPN h3). The target must be running OpenSSL 3.5–4.0.x with QUIC server mode compiled in and active. Standard Shodan/Censys QUIC fingerprinting applies.
Conditions required:
  • Target runs OpenSSL 3.5.0–3.5.7, 3.6.0–3.6.3, or 4.0.0–4.0.1
  • QUIC server mode is enabled and listening on a reachable UDP port
Where this breaks in practice:
  • Most production QUIC deployments use quiche, msquic, or Cloudflare/Fastly edge stacks — not OpenSSL's native QUIC server
  • OpenSSL QUIC server support is <18 months old; enterprise adoption is minimal
  • Many distributions still ship OpenSSL 3.0.x or 3.4.x, which lack QUIC server entirely
Detection/coverage: Shodan/Censys can identify QUIC endpoints; fingerprinting the underlying TLS library to confirm OpenSSL ≥3.5 is harder but possible via ServerHello patterns.
STEP 02

Send crafted INITIAL packet that triggers channel creation failure

The attacker sends a QUIC INITIAL packet designed to pass initial validation but cause the subsequent port_bind_channel() call to fail. This can be triggered by resource exhaustion conditions, malformed inner frames, or specific timing that causes the channel allocation to error out after the QRX object has already been created.
Conditions required:
  • Network path to the QUIC UDP port is open
  • No upstream rate-limiting or QUIC-aware WAF dropping malformed initials
Where this breaks in practice:
  • Enterprise QUIC deployments typically sit behind CDN or load balancer layers that terminate QUIC themselves
  • UDP-based attacks are often rate-limited or dropped by perimeter firewalls
Detection/coverage: IDS rules for malformed QUIC INITIAL packets are emerging but not yet mainstream. Suricata has experimental QUIC protocol support.
STEP 03

Double-free triggers heap corruption → process crash

The QRX object is freed once inside the channel-binding error path and then freed again by the top-level error handler in port_default_packet_handler(). The double-free corrupts the heap allocator metadata. In practice, this results in an immediate SIGABRT or SIGSEGV, terminating the server process. OpenSSL states there is no evidence this is exploitable for RCE.
Conditions required:
  • The QUIC listener process does not have a watchdog/restart supervisor that masks the crash
Where this breaks in practice:
  • Production deployments use process supervisors (systemd, s6, container orchestrators) that auto-restart crashed services within seconds
  • A single crash is a blip; sustained DoS requires repeated packets, which is noisy and easily rate-limited
Detection/coverage: Process crash monitoring, core dump analysis, and QUIC connection failure metrics will surface this immediately.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo known exploitation. Not listed in CISA KEV. No campaign intelligence from Mandiant, CrowdStrike, or Proofpoint references this CVE.
Proof-of-conceptNo public PoC as of 2026-08-26. No exploit code found in GitHub CVE-2026-PoC repositories or on oss-security. The trigger condition (channel creation failure during INITIAL processing) is reproducible from the advisory description but requires QUIC protocol-level tooling.
EPSS scoreNot yet scored (disclosed 2026-08-25, <48 hours old). Expect low percentile given DoS-only impact and niche attack surface.
KEV statusNot listed. No CISA KEV entry.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H — 7.5 HIGH. Network-reachable, no auth, no interaction, but availability-only impact. No confidentiality or integrity loss.
OpenSSL severityModerate per OpenSSL's own classification (distinct from the CVSS-derived HIGH). OpenSSL reserves HIGH/CRITICAL for RCE or widespread data-leak scenarios.
Affected versionsOpenSSL 3.5.0–3.5.7, 3.6.0–3.6.3, 4.0.0–4.0.1. Older branches (3.4.x, 3.0.x, 1.1.1, 1.0.2) are not affected — they lack QUIC server support entirely.
Fixed versions4.0.2, 3.6.4, 3.5.8. Distro backports expected within days for Debian/Ubuntu/RHEL tracking these branches.
Exposure dataNo GreyNoise or Shodan tags specific to this CVE. Broader QUIC server scanning shows ~21% of web traffic uses HTTP/3, but the fraction using *OpenSSL-native* QUIC server (vs. quiche, msquic, BoringSSL) is negligible in enterprise.
ReporterNot publicly attributed in the advisory. Reported to OpenSSL via responsible disclosure.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.3/10)

The single most decisive factor is the extremely narrow exposed population: QUIC server mode exists only in OpenSSL ≥3.5 (shipped ~18 months ago), and enterprise adoption of OpenSSL-native QUIC serving is minimal — the overwhelming majority of QUIC termination happens in CDN edge stacks, BoringSSL (Chromium/gRPC), or purpose-built libraries like quiche and msquic. Combined with the DoS-only impact ceiling (no RCE), the real-world risk drops well below the CVSS 7.5 label.

HIGH Vulnerability mechanics and affected versions
HIGH DoS-only impact (no RCE)
MEDIUM Exposed population estimate (based on QUIC adoption data, not direct scan telemetry)

Why this verdict

  • Narrow attack surface: Only OpenSSL's QUIC *server* code path is affected. TLS, DTLS, and QUIC client are untouched. The QUIC server feature shipped in OpenSSL 3.5 (March 2025) and is not yet widely deployed in enterprise stacks.
  • DoS-only blast radius: The double-free crashes the process. OpenSSL explicitly states no evidence of RCE exploitability. Impact is availability loss, not compromise. CVSS confirms C:N/I:N.
  • Auto-restart resilience: Production services behind systemd, Kubernetes, or container orchestrators restart within seconds. Sustained DoS requires continuous attack traffic, which is noisy and rate-limitable.
  • Role multiplier: OpenSSL is canonically a high-value component (it runs on network edge appliances, web servers, identity infrastructure). However, the *QUIC server* feature is a small subset of OpenSSL's functionality. High-value roles like F5, Citrix NetScaler, HAProxy, and nginx typically use their own QUIC stacks or BoringSSL, not OpenSSL-native QUIC. Domain controllers, hypervisors, CAs, backup servers, and EDR agents do not run QUIC servers. The fraction of high-value-role installs reachable via this bug is well under 1%, which breaks the HIGH floor requirement.
  • No exploitation signals: No KEV listing, no PoC, no in-the-wild activity. Disclosed <48 hours ago with patches already available.

Why not higher?

To justify HIGH, this bug would need either RCE potential or significant deployment in high-value roles. It has neither. The double-free is DoS-only per OpenSSL's own analysis, and the QUIC server feature is too new and too niche to claim meaningful enterprise exposure. OpenSSL's own severity team rated it Moderate, not High.

Why not lower?

Despite the narrow exposure, this *is* unauthenticated and remotely triggerable with no user interaction from a single UDP packet. Any host that *does* run an OpenSSL-native QUIC server is trivially crashable. The affected component (OpenSSL) is foundational infrastructure, so even niche features warrant tracking. LOW would understate the risk for the small population of affected deployments.

05 · Compensating Control

What to do — in priority order.

  1. Audit for OpenSSL QUIC server listeners — Run lsof -i UDP | grep -E ':(443|8443)' and cross-reference with openssl version on each host to identify any process actually using OpenSSL ≥3.5 QUIC server mode. If you find zero (likely), document it and deprioritize. No mitigation SLA applies for MEDIUM — go straight to the 365-day remediation window.
  2. Rate-limit inbound QUIC INITIAL packets — If you do run affected QUIC servers, configure your perimeter firewall or load balancer to rate-limit UDP/443 INITIAL packets per source IP (e.g., 10/sec). This blunts sustained crash-loop DoS without breaking legitimate QUIC handshakes.
  3. Ensure process supervisors auto-restart QUIC services — Verify that any QUIC-serving process is managed by systemd (with Restart=always), Kubernetes liveness probes, or equivalent. This limits each crash to a sub-second blip rather than sustained outage.
  4. Update OpenSSL to patched version — Upgrade to OpenSSL 4.0.2, 3.6.4, or 3.5.8 within the noisgate remediation SLA of 365 days. If your distro hasn't released the update yet, track the package and apply when available.
What doesn't work
  • TLS-layer WAF rules — This is a QUIC (UDP) vulnerability, not a TLS (TCP) one. WAF rules inspecting TLS handshakes on TCP/443 will not see QUIC traffic at all.
  • Disabling QUIC client support — The bug is server-side only. Disabling QUIC on your outbound clients has zero effect on exposure.
  • OpenSSL FIPS mode — FIPS mode does not disable or alter the QUIC server code path. The double-free exists regardless of FIPS configuration.
06 · Verification

Crowdsourced verification payload.

Run this script on each host suspected of running an OpenSSL QUIC server. It checks the installed OpenSSL library version. Execute as any user: bash check_cve_2026_18798.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-18798 checker — OpenSSL QUIC server double-free
# Run on target hosts. No special privileges required.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

OSSL=$(openssl version 2>/dev/null || true)
if [ -z "$OSSL" ]; then
  echo "UNKNOWN — openssl binary not found in PATH"
  exit 2
fi

# Extract version number
VER=$(echo "$OSSL" | grep -oP '\d+\.\d+\.\d+' | head -1)
if [ -z "$VER" ]; then
  echo "UNKNOWN — could not parse version from: $OSSL"
  exit 2
fi

MAJOR=$(echo "$VER" | cut -d. -f1)
MINOR=$(echo "$VER" | cut -d. -f2)
PATCH=$(echo "$VER" | cut -d. -f3)

# Branches without QUIC server support are not affected
# (1.x, 3.0.x, 3.1.x, 3.2.x, 3.3.x, 3.4.x)
if [ "$MAJOR" -lt 3 ]; then
  echo "PATCHED — $OSSL (no QUIC server support, not affected)"
  exit 0
fi
if [ "$MAJOR" -eq 3 ] && [ "$MINOR" -lt 5 ]; then
  echo "PATCHED — $OSSL (no QUIC server support, not affected)"
  exit 0
fi

# Check affected ranges
# 3.5.0-3.5.7 vulnerable, 3.5.8+ patched
if [ "$MAJOR" -eq 3 ] && [ "$MINOR" -eq 5 ]; then
  if [ "$PATCH" -lt 8 ]; then
    echo "VULNERABLE — $OSSL (fixed in 3.5.8)"
    exit 1
  else
    echo "PATCHED — $OSSL"
    exit 0
  fi
fi

# 3.6.0-3.6.3 vulnerable, 3.6.4+ patched
if [ "$MAJOR" -eq 3 ] && [ "$MINOR" -eq 6 ]; then
  if [ "$PATCH" -lt 4 ]; then
    echo "VULNERABLE — $OSSL (fixed in 3.6.4)"
    exit 1
  else
    echo "PATCHED — $OSSL"
    exit 0
  fi
fi

# 4.0.0-4.0.1 vulnerable, 4.0.2+ patched
if [ "$MAJOR" -eq 4 ] && [ "$MINOR" -eq 0 ]; then
  if [ "$PATCH" -lt 2 ]; then
    echo "VULNERABLE — $OSSL (fixed in 4.0.2)"
    exit 1
  else
    echo "PATCHED — $OSSL"
    exit 0
  fi
fi

# Future versions assumed patched
echo "PATCHED — $OSSL (version newer than known affected range)"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: First, determine if you even have exposure — run the version-check script across your fleet and filter for hosts running OpenSSL 3.5–4.0.x. Then check which of those (if any) actually have a QUIC server listener on a UDP port. For most enterprises, the answer will be zero, and this CVE becomes a backlog item. If you do find affected QUIC servers, apply the patch (4.0.2 / 3.6.4 / 3.5.8) at your normal cadence. At a MEDIUM reassessed severity, there is no noisgate mitigation SLA — go straight to the 365-day noisgate remediation SLA. No KEV listing or in-the-wild exploitation changes that timeline. Do not let the vendor CVSS 7.5 panic you into emergency patching for a DoS bug in a feature almost nobody has turned on yet.

Sources

  1. OpenSSL Vulnerabilities Page
  2. OpenSSL Security Advisory — August 2026
  3. OpenSSL 4.0.2 Patches 11 Vulnerabilities
  4. OpenSSL 4.0.2 Release Notes — 9to5Linux
  5. OpenSSL QUIC Server Feature Announcement (3.5)
  6. HTTP/3 and QUIC Protocol Adoption 2026
  7. OpenSSL Vulnerabilities — 3.5 Branch
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.