Vulnerabilidad Crítica de Ejecución Remota de Código (RCE) Corregida en Apache HTTP Server
La **Apache Software Foundation (ASF)** ha lanzado actualizaciones de seguridad para abordar una vulnerabilidad crítica de ejecución remota de código (RCE) en el **Apache HTTP Server**. Rastreada como **CVE-2026-23918**, la falla se origina en un problema de doble liberación (double-free) en el manejo del protocolo HTTP/2.

### Doble Liberación (Double-Free) en HTTP/2
La vulnerabilidad, identificada como **CVE-2026-23918** (puntaje CVSS: 8.8), se describe como una "doble liberación y posible RCE" en el manejo del protocolo HTTP/2. Esto afecta al **Apache HTTP Server** 2.4.66 y ha sido corregido en la versión 2.4.67.
**Bartlomiej Dmitruk**, cofundador de Striga.ai, y **Stanislaw Strzalkowski**, investigador en ISEC.pl, son reconocidos por descubrir y reportar la vulnerabilidad.
### Detalles Técnicos y Explotación
Según Dmitruk, la severidad de **CVE-2026-23918** es crítica, ya que puede ser explotada tanto para denegación de servicio (DoS) como para RCE. Detalló los aspectos técnicos:
> *CVE-2026-23918 es una doble liberación en Apache httpd 2.4.66 `mod_http2`, específicamente en la ruta de limpieza de streams de h2_mplx.c. El error se activa cuando un cliente envía un frame HTTP/2 HEADERS seguido inmediatamente por RST_STREAM con un código de error distinto de cero en el mismo stream, antes de que el multiplexor haya registrado el stream.*
> *Dos callbacks de nghttp2 se ejecutan en secuencia, on_frame_recv_cb para el RST y on_stream_close_cb para el cierre, y ambos terminan llamando a h2_mplx_c1_client_rst -> m_stream_cleanup, que agrega el mismo puntero h2_stream al array de limpieza de purga dos veces. Cuando c1_purge_streams posteriormente itera sobre la purga y llama a h2_stream_destroy -> apr_pool_destroy en cada entrada, la segunda llamada accede a memoria que ya ha sido liberada.*
Dmitruk explicó que el ataque de DoS es directo en cualquier despliegue predeterminado con `mod_http2` y un MPM multihilo (**Multi-Processing Module**). Sin embargo, la RCE requiere un **Apache Portable Runtime (APR)** con el asignador mmap, que es el predeterminado en sistemas derivados de Debian y en la imagen Docker oficial de httpd.
### Ruta de Explotación RCE
Dmitruk detalló aún más la explotación RCE:
> *El primer resultado es denegación de servicio, que es trivial: una conexión TCP, dos frames, sin autenticación, sin cabeceras especiales, sin URL específica, y el worker se bloquea. Apache lo reinicia, pero cada solicitud en el worker bloqueado se descarta, y el patrón puede mantenerse mientras el atacante siga enviando.*
> *El segundo resultado es ejecución remota de código, y construimos una prueba de concepto funcional en x86_64. La cadena coloca una estructura h2_stream falsa en la dirección virtual liberada mediante la reutilización de mmap, apunta su función de limpieza de pool a `system()`, y utiliza la memoria del scoreboard de Apache como un contenedor estable para las estructuras falsas y la cadena de comandos.*
> *El scoreboard se encuentra en una dirección fija durante la vida útil del servidor, incluso con ASLR, lo que hace que la ruta RCE sea práctica. Se aplican las advertencias habituales: la explotación práctica requiere una fuga de información para `system()` y los offsets del scoreboard, y el heap spray es probabilístico, pero en condiciones de laboratorio la ejecución se logra en minutos.*
### Mitigación y Recomendaciones
Dmitruk aclaró que el MPM prefork no se ve afectado por la falla. Sin embargo, advirtió que la superficie de ataque es significativa, ya que `mod_http2` se incluye en las compilaciones predeterminadas y HTTP/2 está ampliamente habilitado en entornos de producción. Se recomienda encarecidamente a los usuarios que apliquen los últimos parches para mitigar el riesgo que representa esta vulnerabilidad.