Linguistic Lumberjac, una vulnerabilidad detectada en Fluent Bit que podría comprometer la integridad del servicio
Hace pocos días Tenable Research, dio a conocer la noticia, de que detecto una vulnerabilidad de corrupción de memoria en Fluent Bit (un proyecto de código abierto) utilizado para procesar y recopilar registros y métricas, tiene más de 10 mil millones de implementaciones en empresas y plataformas en la nube, incluidas Google Cloud, AWS, DigitalOcean, Microsoft, entre otros.
Catalogada bajo «CVE-2024-4323», y apodada como «Linguistic Lumberjack», puede ser explotada para provocar una denegación de servicio, filtrar datos y potencialmente ejecutar código en el servidor. Se menciona que la vulnerabilidad detectada, tiene un nivel de gravedad de 9.8 sobre 10, la vulnerabilidad apareció a partir de la versión 2.0.7 y fue solucionada en las actualizaciones correctivas.
En marzo, Fluent Bit registró 13 millones de descargas de imágenes Docker. Tenable, que identificó la vulnerabilidad, señaló que muchos servicios en la nube no bloquean el acceso a las API web para obtener métricas internas, y Fluent Bit se emplea para procesar estas llamadas a la API.
Tenable Research ha descubierto una vulnerabilidad de corrupción de memoria en Fluent Bit. Este problema radica en el análisis de las solicitudes de seguimiento por parte del servidor http integrado y puede dar lugar a condiciones de denegación de servicio, divulgación de información o ejecución remota de código.
La API de monitoreo de Fluent Bit tiene como objetivo permitir a los administradores u otros usuarios consultar y monitorear información interna del servicio mismo. Por ejemplo, existen puntos finales HTTP para indicar el tiempo de actividad del servicio, métricas de complementos, controles de estado, etc.
Esta vulnerabilidad permite la corrupción de memoria remota, ya que se basa en el manejo inadecuado de las solicitudes externas a través de las llamadas API «traces» por parte del servidor http incrustado. Estas API permiten a los usuarios obtener información sobre las configuraciones de rastreo, y se puede acceder a los datos de la API incluso si el rastreo no está habilitado, siempre que se conceda el acceso adecuado.
Esta falla de seguridad radica en la falta de validación apropiada de los nombres de entrada dentro de las solicitudes, lo que puede resultar en condiciones de denegación de servicio (DoS), divulgación de información, o ejecución remota de código (RCE).
En el análisis de las solicitudes entrantes, donde los tipos de algunos campos de entrada pasados a través de una matriz en un bloque JSON se determinaban incorrectamente y se interpretaban como tipo MSGPACK_OBJECT_STR, independientemente del tipo de campo esperado. Esto causaba daños en la memoria cuando se especificaban valores no string, como parámetros enteros, en la matriz de datos de entrada, ya que la función
flb_sds_create_len()
recuperaba el valor entero pasado como si fuera una cadena, llevando a la corrupción de memoria.
Se menciona que durante el análisis de la vulnerabilidad, se observó que la carencia de validación adecuada de los nombres de entrada en las solicitudes sobre la API de monitoreo de Fluent Bit puede desencadenar problemas de corrupción de memoria y, en última instancia, permitir la ejecución remota de código malicioso.
Esta vulnerabilidad se explotó con éxito en un entorno de laboratorio aislado para provocar la caída del servicio y ocasionar un escenario de denegación de servicio. Durante los experimentos, los investigadores lograron bloquear el servicio y determinar el contenido residual de la memoria utilizada al procesar solicitudes HTTP, encontrando fragmentos de datos confidenciales, como claves de acceso. Debido a que el problema provoca un desbordamiento del búfer dependiendo de los parámetros pasados, en teoría podría explotarse para ejecutar código en el sistema. Sin embargo, los investigadores que identificaron el problema no probaron esta posibilidad debido a la falta de tiempo para desarrollar el exploit.
Cabe mencionar que la explotación de esta vulnerabilidad puede tener consecuencias graves, ya que un atacante podría comprometer la integridad y disponibilidad del servicio, obtener información confidencial, e incluso ejecutar código a distancia en el sistema afectado. A pesar de que la ejecución remota de código puede ser complicada debido a diferentes factores, el riesgo principal se centra en los ataques de denegación de servicio y las filtraciones de información.
Con la finalidad de abordar la vulnerabilidad, Fluent Bit soluciono el problema en las actualizaciones correctivas 2.2.3 y 3.0.4. La solución introducida en la versión 3.0.4 implica la validación adecuada de los tipos de datos de los valores presentes en la matriz «inputs» transmitida al endpoint «traces».
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.