## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-XELOXA-CVE-2026-23918-APACHE-H2-POC
# CVE-2026-23918-Apache-H2-PoC
这是针对 Apache `mod_http2` 中双重释放漏洞(CVE-2026-23918)的概念验证利用程序。这是一个棘手的漏洞,影响 `h2_mplx.c` 中的流清理路径。
基本上,如果时机把握得当,你可以让服务器尝试清理同一条流两次,这通常会导致 SIGSEGV 和工作进程崩溃。

* * *
## 法律声明
别犯傻。仅限授权测试使用。如果你把它用在你不拥有的东西上,后果自负。我对你的行为不承担任何责任。
* * *
## 发生了什么?
CVE-2026-23918 影响 Apache 2.4.66。它已于本月早些时候(2026 年 5 月)在 2.4.67 中修复。
这是 Apache 处理早期 RST_STREAM 帧时的一个竞态条件。如果客户端发送一个 HEADERS 帧,并在多路复用器注册该流之前立即跟上 RST_STREAM,两个不同的回调会尝试进行清理。
一个回调处理重置,另一个处理流关闭。两者都会调用 `m_stream_cleanup()`,将同一个指针推入清理数组。当 Apache 最终尝试销毁这些流时,第二次尝试会命中已释放的内存。
### 影响
* **拒绝服务(DoS)** :极其容易。一个连接就能使工作进程崩溃。由于 Apache 会重新生成工作进程,你可以用极少的带宽让服务器持续处于压力之下。这就是本 PoC 所演示的内容——并且已在 Apache 2.4.66 上测试并确认有效。
* **远程代码执行(RCE)** :理论上可行,但对大多数攻击者来说**并不实际** 。它需要:
1. 一个**信息泄露** (第二个漏洞来泄露内存地址)
2. 特定的 APR 内存分配器(`mmap`,Debian/Ubuntu/Docker 上的默认配置)
3. 精确的堆操作和对目标内存布局的了解
目前不存在公开的 RCE 利用程序,构建一个也是不小的工程工作量。对大多数组织而言,现实世界的影响是可靠的 DoS,而非 RCE。

* * *
## 快速开始
你需要 Python 3.9+ 和 `h2` 库。
root@kitploit:~
git clone https://github.com/xeloxa/CVE-2026-23918-Apache-H2-PoC.git
cd CVE-2026-23918-Apache-H2-PoC
pip install -r requirements.txt
### 快速测试
**使本地实验环境崩溃:**
root@kitploit:~
# 激进 DoS
python3 cve-2026-23918.py --target 127.0.0.1 --port 8443 --mode dos
**检查目标是否可能存在漏洞:**
root@kitploit:~
# 这是被动检测,仅检查标头和 H2 支持
python3 cve-2026-23918.py --target example.com --mode rce-detect
**持续压力:**
root@kitploit:~
# 低带宽,长时间
python3 cve-2026-23918.py --target 10.0.0.50 --mode slow-drip -d 60
* * *
## 如何修复
如果你运行的是 2.4.66,你需要升级到 2.4.67。
如果暂时无法更新,你可以通过向配置中添加 `Protocols http/1.1` 来禁用 HTTP/2(或者直接从列表中移除 `h2`)。这对性能来说不太理想,但可以阻止崩溃。
* * *
## 备注与参考
* 官方 Apache 公告
* NVD 链接
* 由 Bartłomiej Dmitruk 和 Stanisław Strzałkowski 发现。
我已在几个不同的 Debian 和 Ubuntu 构建上测试过。DoS 非常可靠。RCE 则要"挑剔"得多,除非目标具有非常可预测的堆状态,否则在现实场景中我不会指望它。