
Proof-of-Concept exploit per CVE-2026-23918 (double-free in Apache mod_http2). Include DoS multi-modalità (Rapid-RST, Slow-Drip) e rilevamento passivo di RCE/vulnerabilità per Apache 2.4.66.
Questo è un proof-of-concept per la vulnerabilità di double-free nel modulo mod_http2 di Apache (CVE-2026-23918). È un bug subdolo che colpisce il percorso di pulizia dello stream in h2_mplx.c.
In pratica, se si sincronizza bene il timing, si può indurre il server a tentare di ripulire lo stesso stream due volte, il che di solito porta a un SIGSEGV e al crash di un worker.

Non fare stupidaggini. Usa questo strumento solo per test autorizzati. Se lo usi su qualcosa che non possiedi, sei da solo. Non sono responsabile di ciò che ne fai.
CVE-2026-23918 colpisce Apache 2.4.66. È stata corretta nella versione 2.4.67 all'inizio di questo mese (maggio 2026).
È una race condition nel modo in cui Apache gestisce i frame RST_STREAM precoci. Se un client invia un frame HEADERS e lo segue immediatamente con un RST_STREAM prima che il multiplexer registri lo stream, due callback diversi tentano di eseguire la pulizia.
Una callback gestisce il reset, l'altra gestisce la chiusura dello stream. Entrambe chiamano m_stream_cleanup(), che inserisce lo stesso puntatore nell'array di pulizia. Quando Apache tenta infine di distruggere quegli stream, il secondo tentativo accede a memoria già liberata.
DoS: Estremamente facile. Una singola connessione può mandare in crash i worker. Poiché Apache li fa ripartire, si può tenere il server sotto pressione costante con pochissima larghezza di banda. Questo è ciò che dimostra questo PoC — ed è stato testato e confermato funzionante su Apache 2.4.66.
RCE: Teoricamente possibile ma non praticabile per la maggior parte degli attaccanti. Richiede:
mmap, predefinito su Debian/Ubuntu/Docker)Non esiste alcun exploit RCE pubblico, e costruirne uno richiede uno sforzo ingegneristico non banale. L'impatto reale per la maggior parte delle organizzazioni è un DoS affidabile, non una RCE.

Ti serviranno Python 3.9+ e la libreria h2.
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
Mandare in crash un laboratorio locale:
# DoS aggressivo
python3 cve-2026-23918.py --target 127.0.0.1 --port 8443 --mode dos
Verificare se un target potrebbe essere vulnerabile:
# Questo è passivo, controlla solo gli header e il supporto H2
python3 cve-2026-23918.py --target example.com --mode rce-detect
Pressione sostenuta:
# Bassa larghezza di banda, lunga durata
python3 cve-2026-23918.py --target 10.0.0.50 --mode slow-drip -d 60
Se stai eseguendo la 2.4.66, devi passare alla 2.4.67.
Se non puoi aggiornare subito, puoi disabilitare HTTP/2 aggiungendo Protocols http/1.1 alla tua configurazione (o semplicemente rimuovere h2 dall'elenco). Non è ideale per le prestazioni, ma ferma il crash.
Ho testato questo su diverse build Debian e Ubuntu. Il DoS è molto affidabile. La RCE è molto più "capricciosa" e non ci farei affidamento in uno scenario reale a meno che il target non abbia uno stato dell'heap molto prevedibile.