Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Rack (CVE-2025-46727)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-400 Consumo de recursos no controlado (Agotamiento de recursos)
Fecha de publicación:
07/05/2025
Última modificación:
08/05/2025

Descripción

Rack es una interfaz modular de servidor web Ruby. En versiones anteriores a la 2.2.14, la 3.0.16 y la 3.1.14, `Rack::QueryParser` analiza cadenas de consulta y cuerpos `application/x-www-form-urlencoded` en estructuras de datos Ruby sin imponer ningún límite en el número de parámetros, lo que permite a los atacantes enviar solicitudes con una cantidad extremadamente grande de parámetros. La vulnerabilidad surge porque `Rack::QueryParser` itera sobre cada par clave-valor separado por `&` y lo añade a un hash sin imponer un límite superior en el número total de parámetros. Esto permite a un atacante enviar una sola solicitud con cientos de miles (o más) de parámetros, lo que consume demasiada memoria y CPU durante el análisis. Un atacante puede provocar una denegación de servicio enviando solicitudes HTTP manipuladas específicamente, lo que puede causar el agotamiento de la memoria o la sobrecarga de recursos de la CPU, bloqueando o bloqueando el servidor Rack. Esto provoca una interrupción total del servicio hasta que se reinicia el trabajador afectado. Las versiones 2.2.14, 3.0.16 y 3.1.14 solucionan el problema. Existen otras mitigaciones. Se puede usar middleware para imponer un tamaño máximo de cadena de consulta o un número máximo de parámetros, o emplear un proxy inverso (como Nginx) para limitar el tamaño de las solicitudes y rechazar cadenas o cuerpos de consulta demasiado grandes. Limitar el tamaño del cuerpo de la solicitud y la longitud de las cadenas de consulta a nivel de servidor web o CDN es una mitigación eficaz.