Vulnerabilidad crítica en Apache HTTP/2 (CVE-2026-23918) expone a DoS y RCE

Publicado el

Vulnerabilidad crítica en Apache HTTP/2

La Apache Software Foundation (ASF) ha publicado actualizaciones de seguridad para abordar varias vulnerabilidades en su servidor HTTP, destacando una especialmente grave que podría permitir la ejecución remota de código (RCE). Esta vulnerabilidad, identificada como CVE-2026-23918 y con un puntaje CVSS de 8.8, se describe como un caso de "doble liberación y posible RCE" en el manejo del protocolo HTTP/2.

Detalles técnicos de la vulnerabilidad

La falla afecta a Apache HTTP Server 2.4.66, siendo corregida en la versión 2.4.67. Los investigadores Bartlomiej Dmitruk, cofundador de Striga.ai, y Stanislaw Strzalkowski de ISEC.pl, han sido reconocidos por descubrir y reportar esta vulnerabilidad. Según Dmitruk, la criticidad de CVE-2026-23918 es alta, ya que puede ser explotada para conseguir denegación de servicio (DoS) y RCE.

La vulnerabilidad se origina en un doble free dentro del módulo mod_http2 de Apache 2.4.66, específicamente en el proceso de limpieza de flujo en el archivo h2_mplx.c. El problema se activa cuando un cliente envía un marco de HEADERS de HTTP/2 seguido inmediatamente por un RST_STREAM con un código de error distinto de cero en el mismo flujo, antes de que el multiplexor haya registrado el flujo.

Esta secuencia provoca que se activen dos callbacks en nghttp2: on_frame_recv_cb para el RST y on_stream_close_cb para el cierre, llevando a que ambos llamen a h2_mplx_c1_client_rst -> m_stream_cleanup. Esto hace que el mismo puntero de h2_stream se empuje dos veces en el array de limpieza, y cuando c1_purge_streams itera sobre el array y llama a h2_stream_destroy -> apr_pool_destroy en cada entrada, la segunda llamada accede a memoria que ya ha sido liberada.

Impacto del DoS y RCE

El ataque de DoS es trivial y se puede ejecutar en cualquier despliegue por defecto con mod_http2 y un MPM multihilo. En contraste, la vía para RCE requiere un Apache Portable Runtime (APR) con el mmap allocator, que es el predeterminado en sistemas derivados de Debian y en la imagen oficial de httpd en Docker.

Dmitruk explica que el primer resultado del ataque es la denegación de servicio, que se puede lograr con una única conexión TCP y dos marcos, sin necesidad de autenticación ni encabezados especiales. El trabajador se bloquea, pero Apache lo reinicia, lo que provoca que todas las solicitudes al trabajador caído sean descartadas. Este patrón puede mantenerse mientras el atacante continúe enviando los datos.

La segunda consecuencia es la ejecución remota de código. Se ha desarrollado un proof of concept funcional en x86_64. El proceso implica colocar una estructura h2_stream falsa en la dirección virtual liberada mediante la reutilización de mmap, dirigiendo su función de limpieza de pool a system(), y utilizando la memoria del scoreboard de Apache como contenedor estable para las estructuras falsas y la cadena de comandos. El scoreboard se encuentra en una dirección fija durante la vida del servidor, incluso con ASLR, lo que hace que esta vía de RCE sea práctica.

Riesgos y recomendaciones

Aunque el MPM prefork no se ve afectado por esta vulnerabilidad, el investigador advierte que la superficie de ataque es amplia, dado que mod_http2 se incluye en las construcciones por defecto y HTTP/2 está ampliamente habilitado en despliegues en producción. Ante la gravedad de esta falla, se recomienda a los usuarios que apliquen las últimas correcciones para garantizar una protección óptima.

Fuente

Ver noticia original