La vulnerabilidad ModSecurity expone a millones de servidores web a una condición DoS grave

Se ha identificado una vulnerabilidad significativa en el módulo ModSecurity de Apache, la cual podría dejar a millones de servidores web globalmente expuestos a ataques de denegación de servicio.

Esta vulnerabilidad, identificada como CVE-2025-47947 y con una puntuación CVSS de 7.5, reside en cómo el firewall de aplicaciones web de código abierto procesa las cargas JSON bajo ciertas condiciones. Expertos en seguridad han corroborado que los atacantes pueden explotar esta falla con poco esfuerzo, utilizando una sola solicitud maliciosa para agotar la memoria del servidor y potencialmente inhabilitar los sistemas afectados.

La vulnerabilidad fue reportada inicialmente en marzo de 2025 por Simon Studer de Netnea en nombre de Swiss Post, aunque los desarrolladores tardaron varios meses en reproducir y comprender con éxito la causa raíz.

CVE-2025-47947 afecta específicamente a mod_security2, la versión del módulo Apache de ModSecurity, mientras que la implementación más nueva de libmodsecurity3 no se ve afectada.

La falla surge cuando se cumplen dos condiciones específicas simultáneamente: la carga útil entrante debe tener un tipo de contenido de aplicación/json y debe haber al menos una regla activa que utilice la acción sanitiseMatchedBytes.

En estas circunstancias, el consumo de memoria de ModSecurity aumentó exponencialmente, lo que provocó inestabilidad del sistema y posible interrupción del servicio.

El análisis técnico revela que la vulnerabilidad se debe al manejo defectuoso de ModSecurity de las acciones sanitiseMatchedBytes y sanitiseMatched al procesar estructuras de datos JSON.

Durante el funcionamiento normal, estas acciones están diseñadas para reemplazar variables coincidentes con asteriscos (*) en los registros de auditoría por motivos de seguridad. Sin embargo, al procesar cargas JSON, el motor muestra un comportamiento problemático en su mecanismo de desinfección de argumentos.

Según el análisis técnico, si una carga útil JSON contiene 1000 elementos, la regla evalúa cada elemento y lo agrega a una lista de desinfección.

Este proceso ocurre 1.000 veces, lo que da como resultado aproximadamente 1.000.000 de variables almacenadas en la memoria para una sola acción.

La lista se mantiene en la tabla APR de Apache, que se expande dinámicamente, provocando un grave agotamiento de la memoria.

Una demostración de prueba de concepto implica generar una carga útil JSON con 1000 elementos usando el comando: python3 -c “print(‘[%s]’ % ‘,’.join([‘1234567890123456’] * 1000))” > payload.json.

Luego, los atacantes pueden transmitir esta carga útil repetidamente mediante simples solicitudes HTTP POST, y los investigadores de seguridad confirman que «solo una solicitud es suficiente para reproducir este alto consumo de memoria».

Detalles de la vulnerabilidad

  • Productos afectados: ModSecurity (mod_security2) versiones 2.x hasta 2.9.8 inclusive (módulo Apache). No afecta a libmodsecurity3 (v3.x).
  • Impacto: Agotamiento de la memoria que conduce a una denegación de servicio (DoS).
  • Requisitos: 1. Carga útil con tipo de contenido: aplicación/json y 2. Al menos una regla activa que utilice sanitiseMatchedBytes o acciones sanitiseMatched.
  • Puntuación CVSS 3.1: 7.5 (Alta)

Mitigaciones

El equipo de desarrollo de ModSecurity ha abordado esta vulnerabilidad lanzando la versión 2.9.9, que incluye una solución integral para CVE-2025-47947.

La versión actualizada está disponible a través del repositorio oficial de GitHub y debe implementarse inmediatamente en las instalaciones afectadas.

Los expertos en seguridad enfatizan que esta vulnerabilidad afecta «probablemente a todas las versiones 2.x» de mod_security2, por lo que la aplicación de parches generalizados es fundamental.

Para las organizaciones que no pueden actualizar de inmediato, existen opciones de mitigación limitadas. Los administradores pueden deshabilitar las reglas que contienen la acción sanitiseMatchedBytes, aunque esto puede reducir las capacidades de monitoreo de seguridad.

Alternativamente, deshabilitar el motor de auditoría evita que se active la vulnerabilidad, pero esto afecta significativamente la visibilidad del tráfico y la funcionalidad de registro.

El proyecto ModSecurity reconoce que durante su investigación “encontró algún comportamiento inesperado” y está trabajando para mejorar el mecanismo de desinfección.

Los desarrollos futuros pueden incluir la implementación de funciones de desinfección mejoradas en libmodsecurity3, proporcionando una base más sólida para la seguridad de las aplicaciones web.

Las organizaciones que ejecutan instalaciones de ModSecurity deben priorizar la aplicación inmediata de parches para evitar la posible explotación de esta grave vulnerabilidad de denegación de servicio.