A Apache Software Foundation liberou atualizações para o HTTP Server que corrigem várias vulnerabilidades, entre elas a CVE-2026-23918, um caso de double free no tratamento de HTTP/2 que permite negação de serviço e, em situações específicas, execução remota de código; a falha afetava o Apache 2.4.66 e foi corrigida na versão 2.4.67, sendo reportada por Bartlomiej Dmitruk e Stanislaw Strzalkowski.
A Apache Software Foundation liberou atualizações para o HTTP Server que corrigem várias vulnerabilidades, incluindo a CVE-2026-23918.
Essa falha é um caso de double free no tratamento do HTTP/2 que pode causar negação de serviço e, em condições específicas, execução remota de código.
O problema afetava a versão 2.4.66 do servidor e foi corrigido na 2.4.67.
A descoberta foi reportada por Bartlomiej Dmitruk e Stanislaw Strzalkowski.
O vetor de DoS é simples: um cliente envia um frame HTTP/2 HEADERS e logo em seguida um RST_STREAM com código de erro diferente de zero no mesmo stream.
Na sequência, o multiplexador registra o stream apenas depois, o que provoca um double free e pode derrubar o processo worker.
Dois callbacks disparam em sequência — on_frame_recv_cb para o RST e on_stream_close_cb para o fechamento — e ambos acabam chamando h2_mplex_c1_client_rst, que leva a m_stream_cleanup.
O mesmo ponteiro h2_stream acaba sendo empurrado duas vezes para o array de limpeza (spurge) e, quando c1_purge_streams itera esse array e executa h2_stream_destroy -> apr_pool_destroy, a segunda chamada tenta liberar memória já liberada.
A negação de serviço é trivial em implantações padrão com mod_http2 e um MPM multi-threaded; um único TCP com dois frames e sem autenticação já pode causar a queda do worker.
Para chegar à execução remota de código é necessário que o APR use o alocador mmap, que é o padrão em sistemas derivados do Debian e na imagem oficial do httpd no Docker.
Um proof of concept funcional mostrou que é possível posicionar uma estrutura h2_stream falsa no endereço virtual liberado via reutilização de mmap, apontar sua função de limpeza de pool para system() e usar a memória do scoreboard do Apache como um local estável para as estruturas e a string de comando.
O scoreboard permanece em um endereço fixo durante a vida do servidor, mesmo com ASLR, e isso é o que torna o caminho para RCE prático em certos cenários.
Os pesquisadores observam que a exploração prática exige vazamento de informações para obter endereços como o de system() e os offsets do scoreboard, e que a pulverização do heap é probabilística, embora em laboratório a execução tenha sido alcançada em minutos.
O MPM prefork não é afetado por essa falha.
Como o mod_http2 costuma vir em builds padrão e HTTP/2 está amplamente habilitado em produção, a superfície de ataque é significativa.
A Apache Software Foundation publicou atualizações na versão 2.4.67 para mitigar essa e outras falhas relacionadas.