
Prova de conceito de exploit para CVE-2026-23918 (double-free no Apache mod_http2). Inclui DoS em múltiplos modos (Rapid-RST, Slow-Drip) e detecção passiva de RCE/vulnerabilidade para Apache 2.4.66.
Este é um exploit de prova de conceito para a vulnerabilidade de double-free no mod_http2 do Apache (CVE-2026-23918). É um bug desagradável que atinge o caminho de limpeza de streams em h2_mplx.c.
Basicamente, se você sincronizar bem o timing, consegue fazer o servidor tentar limpar o mesmo stream duas vezes, o que geralmente leva a um SIGSEGV e à queda de um worker.

Não seja idiota. Use isso apenas para testes autorizados. Se você usar em algo que não é seu, o problema é seu. Não sou responsável pelo que você fizer com isso.
A CVE-2026-23918 afeta o Apache 2.4.66. Foi corrigida na versão 2.4.67 no início deste mês (maio de 2026).
É uma condição de corrida na forma como o Apache lida com frames RST_STREAM precoces. Se um cliente envia um frame HEADERS e imediatamente o segue com um RST_STREAM antes mesmo de o multiplexador registrar o stream, dois callbacks diferentes tentam fazer a limpeza.
Um callback lida com o reset, o outro lida com o fechamento do stream. Ambos chamam m_stream_cleanup(), que empurra o mesmo ponteiro para o array de limpeza. Quando o Apache eventualmente tenta destruir esses streams, a segunda tentativa atinge memória já liberada.
DoS: Extremamente fácil. Uma única conexão pode derrubar workers. Como o Apache os reinicia, você pode manter o servidor sob pressão constante com muito pouca banda. É isso que este PoC demonstra — e foi testado e confirmado funcionando no Apache 2.4.66.
RCE: Teoricamente possível, mas não é prático para a maioria dos atacantes. Exige:
mmap, padrão em Debian/Ubuntu/Docker)Não existe exploit público de RCE, e construir um é um esforço de engenharia nada trivial. O impacto real para a maioria das organizações é DoS confiável, não RCE.

Você vai precisar de Python 3.9+ e da biblioteca 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
Derrubando um laboratório local:
# DoS agressivo
python3 cve-2026-23918.py --target 127.0.0.1 --port 8443 --mode dos
Verificando se um alvo pode ser vulnerável:
# Isso é passivo, apenas verifica cabeçalhos e suporte a H2
python3 cve-2026-23918.py --target example.com --mode rce-detect
Pressão sustentada:
# Baixa banda, longa duração
python3 cve-2026-23918.py --target 10.0.0.50 --mode slow-drip -d 60
Se você está rodando a versão 2.4.66, precisa migrar para a 2.4.67.
Se não puder atualizar agora, você pode desabilitar o HTTP/2 adicionando Protocols http/1.1 à sua configuração (ou apenas remova h2 da lista). Não é o ideal para performance, mas interrompe a queda.
Testei isso em algumas builds diferentes de Debian e Ubuntu. O DoS é muito confiável. O RCE é bem mais "instável" e eu não contaria com ele em um cenário do mundo real, a menos que o alvo tenha um estado de heap muito previsível.