Apache HTTP/2 Double-Free Bug Enables DoS and RCE on Default Installs
CVE-2026-23918 in Apache 2.4.66 lets attackers crash servers or achieve code execution with just two HTTP/2 frames. Upgrade to 2.4.67 immediately.
A critical double-free memory corruption vulnerability in Apache HTTP Server's mod_http2 module can be exploited for denial of service on any default deployment—and remote code execution on Debian-derived systems. CVE-2026-23918 carries a CVSS score of 8.8 and affects Apache 2.4.66 running multi-threaded MPM configurations.
The attack requires only a single TCP connection and two HTTP/2 frames to trigger. No authentication needed.
How the Attack Works
The vulnerability lives in the stream cleanup path of h2_mplx.c within mod_http2. When a client sends an HTTP/2 HEADERS frame immediately followed by RST_STREAM with a non-zero error code on the same stream—before the multiplexer registers the stream—two nghttp2 callbacks fire sequentially.
Both callbacks invoke h2_mplx_c1_client_rst, which pushes the same pointer onto a cleanup array twice. When the cleanup routine later frees that memory, the second free operates on already-freed memory. Classic use-after-free territory.
Security researchers Bartlomiej Dmitruk of Striga.ai and Stanislaw Strzalkowski of ISEC.pl discovered and reported the flaw.
Exploitation Paths
Denial of Service is trivial on any default Apache deployment using mod_http2 with multi-threaded MPM (worker or event). An attacker opens one connection, sends the two-frame sequence, and crashes the server. Repeat as needed.
Remote Code Execution becomes achievable on systems where APR uses the mmap allocator—which includes Debian-derived Linux distributions and official Apache httpd Docker images. The exploitation chain involves placing a fake h2_stream struct at freed addresses and abusing Apache's scoreboard memory to gain control.
MPM prefork configurations are not affected since the race condition requires threads.
Scope and Exposure
mod_http2 ships in default Apache builds, and HTTP/2 is widely enabled in production environments. The attack surface is substantial. Any web server, reverse proxy, or load balancer running vulnerable Apache versions with HTTP/2 enabled is at risk.
This adds to a difficult year for Apache components. We've previously covered critical XXE vulnerabilities in Apache Tika and Apache Struts—different codebases, but a pattern of serious flaws in the Apache ecosystem.
Remediation
Upgrade to Apache 2.4.67 which contains the fix.
If immediate upgrade isn't possible:
- Disable HTTP/2 by removing or commenting out
Protocols h2 h2cdirectives - Switch to MPM prefork if HTTP/2 is required (performance tradeoff but eliminates the race)
- Use a reverse proxy that terminates HTTP/2 before reaching vulnerable Apache instances
Organizations running Apache in Docker containers should pay particular attention—the official images use the vulnerable APR mmap allocator configuration, making RCE more likely.
Detection
Look for:
- Unexpected Apache crashes or restarts
- HTTP/2 connections with immediate RST_STREAM after HEADERS
- Anomalous memory patterns in core dumps
Given the low complexity of the DoS attack, any unexplained Apache instability on HTTP/2-enabled servers should prompt immediate investigation.
Why This Matters
Two frames, one connection, no auth—and you can either crash a server or potentially take it over. That's an exceptionally low barrier to exploitation for a vulnerability affecting one of the internet's most widely deployed web servers.
The RCE path being specific to certain allocator configurations provides some comfort, but the DoS path works everywhere mod_http2 runs with threading. For attackers who just want disruption, this is a gift.
Security teams managing web infrastructure should treat this as a priority patch. The technical details are public, exploitation is straightforward, and the fix is available. The window between now and when exploit scripts circulate widely is shrinking.
Related Articles
Palo Alto Firewalls Under Active Attack via Root-Level RCE Flaw
CVE-2026-0300 allows unauthenticated attackers to execute code as root on PA-Series and VM-Series firewalls. Patches coming May 13—here's how to mitigate now.
May 6, 2026Cisco Patches Four CVSS 9.9 Flaws in Identity Services Engine
Critical ISE vulnerabilities let authenticated users escalate to root. Read-only admin accounts can execute arbitrary commands on underlying OS.
Apr 20, 2026Apache ActiveMQ RCE Added to CISA KEV After Exploit Surge
CVE-2026-34197 lets attackers execute arbitrary code via ActiveMQ's Jolokia API. CISA mandates federal patching by April 30 as exploitation peaks.
Apr 20, 2026Protobuf.js RCE Flaw Threatens 50 Million Weekly npm Downloads
Critical code injection vulnerability (GHSA-xq3m-2v4x-88gg, CVSS 9.9) in protobuf.js allows arbitrary JavaScript execution via malicious schemas. Patch now.
Apr 18, 2026