Vulnerabilidade Crítica de RCE Corrigida no Apache HTTP Server
A **Apache Software Foundation (ASF)** lançou atualizações de segurança para corrigir uma vulnerabilidade crítica de execução remota de código (RCE) no **Apache HTTP Server**. Rastreada como **CVE-2026-23918**, a falha decorre de um problema de double-free no tratamento do protocolo HTTP/2.

### Vulnerabilidade de Double-Free em HTTP/2
A vulnerabilidade, identificada como **CVE-2026-23918** (pontuação CVSS: 8.8), é descrita como um "double free e possível RCE" no tratamento do protocolo HTTP/2. Isso afeta o **Apache HTTP Server** 2.4.66 e foi corrigido na versão 2.4.67.
**Bartlomiej Dmitruk**, co-fundador da Striga.ai, e **Stanislaw Strzalkowski**, pesquisador da ISEC.pl, são creditados pela descoberta e reporte da vulnerabilidade.
### Detalhes Técnicos e Exploração
De acordo com Dmitruk, a gravidade da **CVE-2026-23918** é crítica, pois pode ser explorada tanto para negação de serviço (DoS) quanto para RCE. Ele detalhou os aspectos técnicos:
> *CVE-2026-23918 é um double-free no Apache httpd 2.4.66 `mod_http2`, especificamente no caminho de limpeza de stream do h2_mplx.c. O bug é acionado quando um cliente envia um frame HTTP/2 HEADERS imediatamente seguido por RST_STREAM com um código de erro não zero no mesmo stream, antes que o multiplexador tenha registrado o stream.*
> *Dois callbacks do nghttp2 são então chamados em sequência, on_frame_recv_cb para o RST e on_stream_close_cb para o fechamento, e ambos acabam chamando h2_mplx_c1_client_rst -> m_stream_cleanup, que adiciona o mesmo ponteiro h2_stream ao array de limpeza de spurge duas vezes. Quando c1_purge_streams posteriormente itera sobre o spurge e chama h2_stream_destroy -> apr_pool_destroy em cada entrada, a segunda chamada atinge memória que já foi liberada.*
Dmitruk explicou que o ataque DoS é direto em qualquer implantação padrão com `mod_http2` e um MPM multi-thread (**Multi-Processing Module**). A RCE, no entanto, requer um **Apache Portable Runtime (APR)** com o alocador mmap, que é o padrão em sistemas derivados do Debian e na imagem Docker oficial do httpd.
### Caminho de Exploração de RCE
Dmitruk detalhou ainda mais a exploração de RCE:
> *O primeiro resultado é negação de serviço, que é trivial: uma conexão TCP, dois frames, sem autenticação, sem headers especiais, sem URL específica, e o worker trava. O Apache o reinicia, mas cada requisição no worker travado é descartada, e o padrão pode ser sustentado enquanto o atacante continuar enviando.*
> *O segundo resultado é execução remota de código, e construímos um proof of concept funcional em x86_64. A cadeia posiciona uma struct h2_stream falsa no endereço virtual liberado via reutilização de mmap, aponta sua função de limpeza de pool para `system()`, e usa a memória do scoreboard do Apache como um contêiner estável para as estruturas falsas e a string de comando.*
> *O scoreboard fica em um endereço fixo durante a vida útil do servidor, mesmo com ASLR, o que torna o caminho de RCE prático. As ressalvas usuais se aplicam: a exploração prática requer um vazamento de informação para `system()` e os offsets do scoreboard, e o heap spray é probabilístico, mas em condições de laboratório a execução ocorre em minutos.*
### Mitigação e Recomendações
Dmitruk esclareceu que o MPM prefork não é afetado pela falha. No entanto, ele alertou que a superfície de ataque é significativa, pois `mod_http2` está incluído em compilações padrão e HTTP/2 é amplamente habilitado em ambientes de produção. Os usuários são fortemente aconselhados a aplicar as correções mais recentes para mitigar o risco apresentado por esta vulnerabilidade.