Уязвимост в Fluent Bit, засягаща много облачни доставчици

В открития проект 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:\/\/localhost:2020\/api\/v1\/traces\/ -H "Content-Type: application\/json" -H "Expect: " --data "@test"

В процеса на експерименти изследователите успяха да постигнат аварийно приключване на услугата и да определят остатъчното съдържание на паметта, използвана при обработка на HTTP заявки, съдържаща, например, фрагменти от конфиденциални данни като ключове за достъп. Тъй като проблемът води до препълване на буфера, зависимо от предаваните параметри, теоретично той може да бъде експлоатиран за изпълнение на собствен код в системата, но изследователите, които откриха проблема, не провериха тази възможност поради липса на време за работа по експлоита.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster