CVE-2023-45802: Vulnerabilidad de denegación de servicio por pérdida de memoria en Apache HTTP Server mod_http2

Apache HTTP Server es uno de los servidores web más utilizados en Internet, actuando como infraestructura base para una parte significativa de aplicaciones, API y servicios expuestos a la web. Su fiabilidad es fundamental para la disponibilidad de numerosas actividades en línea.

Esta vulnerabilidad presenta un alto riesgo de Denial of Service (DoS) remoto no autenticado. Un atacante puede bloquear cualquier servidor Apache vulnerable y accesible públicamente sin necesidad de credenciales o acceso previo. Esto hace posibles ataques simples y repetibles que pueden causar tiempos de inactividad significativos en el servicio, con la consiguiente pérdida de ingresos, insatisfacción de los clientes y daños reputacionales.

Aunque esta CVE específica aún no figura en el catálogo de Vulnerabilidades Explotadas Conocidas (KEV) de CISA, es una variante del conocido ataque HTTP/2 Rapid Reset (CVE-2023-44487), ampliamente explotado en la naturaleza. Existe un exploit de prueba de concepto (PoC) público para CVE-2023-45802, lo que reduce considerablemente la barrera para los atacantes. Cualquier organización que ejecute un servidor Apache HTTP Server expuesto públicamente con el módulo mod_http2 habilitado está en riesgo inmediato.

ProductoApache HTTP Server
Fecha2025-12-06 12:29:58

Resumen técnico

La causa principal de esta vulnerabilidad es una pérdida de memoria (CWE-401: Falta de liberación de memoria después del ciclo de vida) dentro del módulo mod_http2 del servidor. El software no desasigna correctamente la memoria asociada a un flujo (stream) HTTP/2 cuando este es cancelado por un cliente mediante un frame RST_STREAM.

La secuencia técnica del ataque es la siguiente:

  1. Un atacante establece una conexión HTTP/2 persistente con un servidor vulnerable.
  2. El atacante envía una solicitud para iniciar un nuevo flujo.
  3. Inmediatamente después de enviar la solicitud, el atacante envía un frame RST_STREAM para cancelar ese mismo flujo.
  4. El manejador mod_http2 procesa el reinicio pero no libera la memoria asignada para el contexto de la solicitud inicial.
  5. El atacante repite este ciclo de “solicitud y reinicio” miles de veces en la misma conexión, haciendo que el consumo de memoria del servidor Apache crezca linealmente y sin límites. Finalmente, el sistema operativo termina el proceso para evitar la inestabilidad de todo el sistema, provocando un Denial of Service.
// Pseudo-código conceptual de la lógica defectuosa
void handle_stream_reset(h2_stream* stream) {
    // Se ejecuta la lógica para cerrar el flujo.
    // ...
    // VULNERABILIDAD: La memoria asignada para el contexto de la
    // solicitud del flujo y los datos asociados NO se libera aquí.
    // free(stream->request_memory); // <-- Este paso falta.
}
  • Versiones afectadas: Apache HTTP Server 2.4.57 y 2.4.58.
  • Versión corregida: Apache HTTP Server 2.4.59 y posteriores.

Recomendaciones

  • Parche inmediato: Actualizar todas las instancias de Apache HTTP Server a la versión corregida 2.4.59 o superior. Esta es la forma de mitigación más eficaz.

  • Mitigaciones:

    • Si no es posible realizar la actualización de inmediato, considere desactivar temporalmente el protocolo HTTP/2. Esto se puede hacer comentando la línea LoadModule http2_module en la configuración del servidor y reiniciando el servicio. Tenga en cuenta que esto puede tener implicaciones en el rendimiento de las aplicaciones web.
    • Coloque el servidor detrás de un proxy inverso, un balanceador de carga o una Content Delivery Network (CDN) que haya implementado mitigaciones contra ataques DoS basados en HTTP/2, como Rapid Reset.

  • Threat hunting y monitoreo:

    • Implemente y monitoree alertas para aumentos anómalos y prolongados en el uso de memoria de los procesos del servidor httpd (o equivalente). El crecimiento de memoria derivado de este ataque es constante y normalmente no disminuye con el tiempo.
    • Aunque es difícil de detectar en los registros estándar, los monitoreos de red especializados o los registros de un Web Application Firewall (WAF) pueden revelar direcciones IP de clientes individuales que establecen conexiones HTTP/2 persistentes con una tasa anómala de creación y reinicio de flujos.

  • Respuesta a incidentes:

    • Si el ataque está en curso, identifique la dirección IP de origen y aplique un bloqueo temporal a nivel de firewall de red o dispositivo perimetral.
    • Antes de reiniciar un proceso de servidor que haya fallado, intente recopilar un volcado de memoria (memory dump) para análisis forense, en caso de que esté previsto en sus procedimientos de respuesta a incidentes.

  • Defensa en profundidad:

    • Asegúrese de que existan sistemas de monitoreo y alerta automatizados para todos los parámetros críticos de salud del servidor, incluidos memoria, CPU y número de conexiones.
    • Implemente un Web Application Firewall (WAF) con capacidades de inspección y limitación de tráfico HTTP/2 para prevenir comportamientos abusivos.

[Callforaction-THREAT-Footer]