Fluent Bit насчитывает более 10 миллиардов внедрений и применяется для обработки и сбора логов и метрик во многих компаниях и облачных платформах, например, среди пользователей отмечаются Google Cloud, AWS, DigitalOcean, vmWare, Cisco, Microsoft, Lyft, LinkedIn, Walmart, Couchbase, Swift и Dell. В течение марта было загружено 13 млн Docker-образов с Fluent Bit. По данным компании Tenable, выявившей уязвимости, многие облачные сервисы не блокируют доступ к Web API для получения внутренних метрик, таких как uptime, и для обработки обращений к подобным API используется Fluent Bit.
Уязвимость вызвана ошибкой во встроенном HTTP-сервере, проявляющейся при обработке внешних запросов через API-вызовы «/api/v1/traces» и «/api/v1/trace», позволяющие пользователям получать информацию о настроенных трассировках. Независимо от включения трассировки пользователь имеет возможность обратиться к данным API, если ему предоставлен соответствующий доступ. Во время разбора входящих запросов типы некоторых входных полей, передаваемых через массив в блоке JSON, определялись неверно и независимо от ожидаемого типа поля интерпретировались как тип MSGPACK_OBJECT_STR. Указание в массиве входных данных нестроковых значений, например, целочисленных параметров, приводило к повреждению памяти из-за того, что функция flb_sds_create_len() извлекала переданное целочисленное значение как поле с размером строки.
Пример запроса, вызывающего аварийное завершение:
python3 -c 'print("{"output":"stdout", "params": {"format": "json"},"inputs":["" + "A"*8 + ""," + str(0xffffffff) + ", "" + "B"*500 + ""]}")' > test curl -v http://:2020/api/v1/traces/ -H "Content-Type: application/json" -H "Expect: " --data "@test"
В процессе экспериментов исследователям удалось добиться аварийного завершения сервиса и определить остаточное содержимое памяти, используемой при обработке HTTP-запросов и содержащей, например, фрагменты конфиденциальных данных, таких как ключи доступа. Так как проблема приводит к зависящему от передаваемых параметров переполнению буфера, теоретически она может быть эксплуатирована для выполнения своего кода в системе, но выявившими проблему исследователями эта возможность не проверялась из-за отсутствия времени на работу над эксплоитом.
Источник: http://www.opennet.ru/opennews/art.shtml?num=61229