Critical Apache HTTP/2 Vulnerability CVE-2026-23918 Allows DoS, RCE; Urgent Update Advised

Critical Apache HTTP/2 Vulnerability (CVE-2026-23918) Exposes Servers to DoS and Potential Remote Code Execution

The Apache Software Foundation (ASF) has recently addressed a significant security vulnerability in the Apache HTTP Server, identified as CVE-2026-23918. This flaw, with a CVSS score of 8.8, pertains to a double free error within the HTTP/2 protocol handling, potentially leading to both denial-of-service (DoS) attacks and remote code execution (RCE). The issue specifically affects Apache HTTP Server version 2.4.66 and has been rectified in the subsequent release, version 2.4.67.

Discovery and Reporting

The vulnerability was discovered and reported by Bartlomiej Dmitruk, co-founder of Striga.ai, and Stanislaw Strzalkowski, a researcher at ISEC.pl. Their findings have been instrumental in prompting the ASF to develop and release the necessary security updates to mitigate this critical issue.

Technical Details of CVE-2026-23918

CVE-2026-23918 is characterized by a double free error in the `mod_http2` module of Apache HTTP Server 2.4.66, specifically within the stream cleanup process in the `h2_mplx.c` file. The vulnerability is triggered when a client sends an HTTP/2 HEADERS frame immediately followed by an RST_STREAM frame with a non-zero error code on the same stream, before the multiplexer has registered the stream.

This sequence causes two callbacks in the `nghttp2` library to execute consecutively: `on_frame_recv_cb` for the RST_STREAM and `on_stream_close_cb` for the stream closure. Both callbacks invoke the `h2_mplx_c1_client_rst` function, leading to the `m_stream_cleanup` function being called twice. As a result, the same `h2_stream` pointer is added to the `spurge` cleanup array twice. When the `c1_purge_streams` function later processes the `spurge` array and calls `h2_stream_destroy` followed by `apr_pool_destroy` on each entry, the second call attempts to free memory that has already been deallocated, leading to a double free error.

Potential Exploitation Scenarios

According to Dmitruk, the vulnerability can be exploited in two primary ways:

1. Denial-of-Service (DoS): This attack is straightforward and can be executed on any default deployment with `mod_http2` and a multi-threaded Multi-Processing Module (MPM). An attacker can initiate a single TCP connection and send two specific frames without requiring authentication, special headers, or specific URLs. This action causes the worker process to crash. Although Apache will respawn the worker, any requests handled by the crashed worker are dropped. The attacker can sustain this pattern, leading to continuous service disruption.

2. Remote Code Execution (RCE): Exploiting this path requires the Apache Portable Runtime (APR) with the `mmap` allocator, which is the default on Debian-based systems and the official `httpd` Docker image. The exploitation involves placing a fake `h2_stream` structure at the freed virtual address via `mmap` reuse, directing its pool cleanup function to `system()`, and utilizing Apache’s scoreboard memory as a stable container for the fake structures and command string. The scoreboard remains at a fixed address for the server’s lifetime, even with Address Space Layout Randomization (ASLR), making the RCE path feasible. While practical exploitation requires information leaks for `system()` and scoreboard offsets, and the heap spray technique is probabilistic, successful execution has been achieved in laboratory conditions within minutes.

Mitigation and Recommendations

Dmitruk noted that the MPM prefork is not affected by this vulnerability. However, he emphasized that the attack surface is substantial, as `mod_http2` is included in default builds and HTTP/2 is widely enabled in production environments. Given the severity of CVE-2026-23918, it is imperative for users to upgrade to Apache HTTP Server version 2.4.67 promptly to mitigate potential risks.

Broader Context and Related Vulnerabilities

This vulnerability underscores the ongoing challenges in securing HTTP/2 implementations. In August 2025, another significant HTTP/2 vulnerability, known as MadeYouReset (CVE-2025-8671), was disclosed. This flaw allowed attackers to bypass server-imposed limits on concurrent HTTP/2 requests, enabling large-scale DoS attacks. The MadeYouReset attack exploited the RST_STREAM frame to induce server resets, leading to resource exhaustion and, in some cases, out-of-memory crashes.

The discovery of CVE-2026-23918 highlights the evolving complexity of modern protocol abuse and the necessity for continuous vigilance and prompt patching in the face of emerging threats.

Conclusion

The identification and remediation of CVE-2026-23918 serve as a critical reminder of the importance of proactive security measures in web server deployments. Organizations utilizing Apache HTTP Server should prioritize updating to version 2.4.67 to protect against potential DoS attacks and RCE exploits. Staying informed about such vulnerabilities and implementing timely updates are essential steps in maintaining robust cybersecurity defenses.