Уязвимость в Fluent Bit, затрагивающая многих облачных провайдеров

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 2792
Зарегистрирован: 20.08.2022

#

Уязвимость в Fluent Bit, затрагивающая многих облачных провайдеров
Дата публикации:Wed, 22 May 2024 11:06:22 +0300




В открытом проекте Fluent Bit выявлена уязвимость (CVE-2024-4323), позволяющая удалённо добиться повреждения памяти, что можно использовать для вызова отказа в обслуживании, утечки данных и потенциально выполнения своего кода на сервере. Проблема, которой присвоено кодовое имя "Linguistic Lumberjack", имеет критический уровень опасности (9.8 из 10). Уязвимость проявляется начиная с версии 2.0.7 и устранена в корректирующих обновлениях 2.2.3 и 3.0.4.




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-запросов и содержащей, например, фрагменты конфиденциальных данных, таких как ключи доступа. Так как проблема приводит к зависящему от передаваемых параметров переполнению буфера, теоретически она может быть эксплуатирована для выполнения своего кода в системе, но выявившими проблему исследователями эта возможность не проверялась из-за отсутствия времени на работу над эксплоитом.




Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61229

Жизнь за Нер'зула!

Ответить