Automated Threat Modeling

NGINX HTTP/3 QPACK Use After Free (CVE-2026-42530): Brief Summary of a Critical Remote Vulnerability

A brief summary of CVE-2026-42530, a Use After Free in NGINX's HTTP/3 QPACK encoder stream handling. It allows unauthenticated denial of service, and conditional remote code execution, against servers running NGINX Open Source 1.31.0 and 1.31.1.

CVE Analysis

10 min read

ZeroPath CVE Analysis
ZeroPath CVE Analysis

2026-06-17

NGINX HTTP/3 QPACK Use After Free (CVE-2026-42530): Brief Summary of a Critical Remote Vulnerability
Experimental AI-Generated Content

This CVE analysis is an experimental publication that is completely AI-generated. The content may contain errors or inaccuracies and is subject to change as more information becomes available. We are continuously refining our process.

If you have feedback, questions, or notice any errors, please reach out to us.

[email protected]

Introduction

A newly disclosed Use After Free in NGINX's HTTP/3 QPACK implementation lets a remote, unauthenticated attacker crash worker processes and, under the right conditions, execute code on the world's most widely deployed web server. NGINX powers 32.8% of all websites with a known web server, and the recent CVE-2026-42945 was exploited in the wild within four days of disclosure. Organizations running NGINX 1.31.x with HTTP/3 enabled should evaluate their exposure immediately.

Technical Information

Root Cause: Use After Free in QPACK Encoder Stream Handling

CVE-2026-42530 is classified as CWE-416 (Use After Free) and sits in NGINX's ngx_http_v3_module, the module that handles HTTP/3 (QUIC) support. F5 Networks, acting as the CNA, published it on June 17, 2026. It carries a CVSS v4.0 score of 9.2 Critical (CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) and a CVSS v3.1 score of 8.1 High.

HTTP/3 uses QPACK (defined in RFC 9204) to compress header fields. QPACK works through two dedicated unidirectional streams, an encoder stream and a decoder stream, and the specification says each endpoint opens exactly one of each per HTTP/3 session. The protocol's correctness depends on that invariant.

The bug triggers when a specially crafted HTTP/3 session gets the QPACK encoder stream reopened after it has already been closed or its associated memory has been freed. NGINX then processes the reopened stream and dereferences a pointer to memory that has already been deallocated. This is a classic Use After Free. The freed region may have been reallocated for a different purpose, so any read or write through the stale pointer either corrupts the new data or follows attacker-controlled values.

Impact: Denial of Service and Conditional RCE

The immediate, reliably achievable impact is denial of service. The Use After Free crashes the NGINX worker process, which then restarts. The attacker needs nothing beyond network access and an HTTP/3-enabled configuration to get this result.

Remote code execution is the more severe impact, and it requires additional conditions that the F5 advisory describes as "beyond the attacker's control." Either ASLR must be disabled on the target system, or the attacker must have a separate way to bypass ASLR, for example through an information leak vulnerability.

When ASLR is absent or defeated, the attacker can predict the memory layout and craft the contents of the freed region to redirect execution flow. That turns the Use After Free from a crash into a controlled write primitive suitable for code execution.

Attack Flow

Based on the advisory details, an attack would proceed as follows:

  1. The attacker identifies an NGINX instance that accepts HTTP/3 connections, either from the Alt-Svc header or by probing UDP port 443 for QUIC responses.

  2. The attacker opens a standard HTTP/3 QUIC session with the target server.

  3. Within the session, the attacker sends a crafted sequence of QUIC frames that closes the QPACK encoder stream and then reopens it. The framing that does this exploits a logic error in ngx_http_v3_module's stream lifecycle management.

  4. NGINX processes the reopened encoder stream and accesses freed memory. That alone is enough for DoS, because the worker process crashes.

  5. If ASLR is disabled, the attacker can arrange for the freed memory to be reallocated with attacker-controlled content before the stale pointer is dereferenced. That enables arbitrary code execution in the context of the NGINX worker process.

The F5 advisory confirms this is a data plane issue only. The NGINX control plane is not exposed through this vulnerability.

CVSS Breakdown

MetricCVSS v3.1CVSS v4.0
Score8.1 High9.2 Critical
Attack VectorNetworkNetwork
Attack ComplexityHighHigh
Privileges RequiredNoneNone
User InteractionNoneNone
Confidentiality ImpactHighHigh
Integrity ImpactHighHigh
Availability ImpactHighHigh

Both scoring systems rate attack complexity as High, which reflects the conditions beyond the attacker's control and the ASLR requirement for full exploitation.

Affected Systems and Versions

Only a narrow set of NGINX Open Source versions is vulnerable, but the flaw carries into multiple downstream F5 products.

NGINX Open Source

Only the 1.31.x mainline branch is affected:

Vulnerable VersionsFixed Version
1.31.0, 1.31.11.31.2

Organizations running the NGINX stable branch (1.30.x and earlier) are not affected by this specific CVE. Per F5's policy, software versions that have reached End of Technical Support (EoTS) are not evaluated.

Downstream F5 Products

ProductVulnerable VersionsResolution
NGINX Instance Manager2.17.0 through 2.22.0See F5 advisory
NGINX Gateway Fabric (Branch 2.x)2.0.0 through 2.6.3See F5 advisory
NGINX Gateway Fabric (Branch 1.x)1.3.0 through 1.6.2See F5 advisory
NGINX Ingress Controller (Branch 5.x)5.0.0 through 5.5.0See F5 advisory
NGINX Ingress Controller (Branch 4.x)4.0.0 through 4.0.1See F5 advisory
NGINX Ingress Controller (Branch 3.x)3.5.0 through 3.7.2See F5 advisory

Required Configuration

The vulnerability is only exploitable when HTTP/3 QUIC is enabled, which means the listen directive must include the quic parameter:

listen 443 quic reuseport;

Instances without quic in their listen directives never reach the vulnerable ngx_http_v3_module code path and are not at risk.

Mitigation

The F5 advisory gives one explicit workaround, which is to remove quic from all listen directives. For example, change:

listen 443 quic reuseport;

to:

listen 443 ssl;

That removes the vulnerable code path entirely. The definitive fix is upgrading to NGINX Open Source 1.31.2 or later.

Other defense-in-depth measures worth implementing:

  • Verify ASLR is enabled on all NGINX hosts. On Linux, check with cat /proc/sys/kernel/randomize_va_space (the value should be 2). This does not prevent the DoS scenario but blocks the RCE path.
  • Restrict UDP port 443 at the network perimeter to limit QUIC exposure where you cannot patch immediately.
  • Monitor for repeated worker process restarts, which may indicate active exploitation attempts.
  • Inventory all NGINX-derived products across your environment, including Kubernetes ingress controllers, API gateways, and management planes that embed NGINX.

Vendor Security History

2026 has been a busy year for NGINX security disclosures. CVE-2026-42530 is the eighth NGINX CVE disclosed this year:

CVEModuleTypeCVSS v3.1DisclosedExploited in Wild
CVE-2026-42530ngx_http_v3_moduleUse After Free8.1Jun 17, 2026No evidence yet
CVE-2026-9256ngx_http_rewrite_moduleHeap Buffer OverflowMediumMay 22, 2026No
CVE-2026-42945ngx_http_rewrite_moduleHeap Buffer Overflow8.1May 13, 2026Yes
CVE-2026-40460ngx_quic_moduleIP Spoofing/Auth BypassMediumMay 13, 2026No
CVE-2026-42946ngx_http_scgi/uwsgi_moduleMemory Over Read6.5May 13, 2026No
CVE-2026-42934ngx_http_charset_moduleHeap Over Read4.8May 13, 2026No
CVE-2026-40701ngx_http_ssl_moduleSSL Vulnerability4.8May 13, 2026No
CVE-2026-1642SSL upstreamMITM Injection8.8Feb 4, 2026No

The May 13 disclosure batch alone included seven CVEs, published under F5's Quarterly Security Notification. The most consequential, CVE-2026-42945 (dubbed "NGINX Rift"), was an 18-year-old heap buffer overflow in the rewrite module. VulnCheck confirmed active exploitation within four to five days of disclosure. Security researcher Kevin Beaumont noted that RCE for that vulnerability also required ASLR to be disabled, a condition that parallels CVE-2026-42530.

The HTTP/3 QUIC module in particular has been a recurring source of vulnerabilities. Counting CVE-2026-42530, there have been at least eight HTTP/3-related CVEs across 2024 and 2026:

CVEYearIssue
CVE-2024-249902024Use After Free in HTTP/3
CVE-2024-249892024NULL Pointer Dereference
CVE-2024-327602024Buffer Overwrite in HTTP/3
CVE-2024-310792024Stack Overflow/Use After Free
CVE-2024-352002024NULL Pointer Dereference
CVE-2024-341612024Memory Disclosure
CVE-2026-404602026QUIC Source IP Spoofing
CVE-2026-425302026QPACK Use After Free

This pattern suggests that NGINX's HTTP/3 implementation is still an immature attack surface. A relatively new protocol, complex stream management across the QPACK encoder and decoder streams, and manual memory management in C together leave plenty of room for memory corruption flaws. Organizations should evaluate whether HTTP/3 is operationally necessary for their deployments and consider disabling it where the performance benefits do not justify the extra attack surface.

The CSA (Cyber Security Agency) of Singapore has also issued advisories covering the May 2026 F5 vulnerabilities.

References

Detect & fix
what others miss

Works with
  • GitHub
  • GitLab
  • Bitbucket
  • Azure DevOps Services
  • Gerrit
  • CVS
  • Jira
  • Linear
  • Slack
  • Security Compass
Explore integrations
Security magnifying glass visualization