Zranitelnost v Fluent Bit, která se dotýká mnoha poskytovatelů cloudových služeb

V projektu Fluent Bit byla objevena zranitelnost (CVE-2024-4323), která umožňuje vzdálené poškození paměti, což může být využito k vyvolání nedostupnosti služby, úniku dat a potenciálně k provedení vlastního kódu na serveru. Problém, který byl pojmenován „Linguistic Lumberjack“, má kritickou úroveň nebezpečí (9.8 z 10). Zranitelnost se projevuje od verze 2.0.7 a byla odstraněna v opravách 2.2.3 a 3.0.4.

Fluent Bit má více než 10 miliard nasazení a používá se pro zpracování a sběr logů a metrik v mnoha společnostech a cloudových platformách, mezi uživateli se nacházejí například Google Cloud, AWS, DigitalOcean, vmWare, Cisco, Microsoft, Lyft, LinkedIn, Walmart, Couchbase, Swift a Dell. Během března bylo staženo 13 milionů Docker obrazů s Fluent Bit. Podle společnosti Tenable, která zranitelnosti odhalila, mnoho cloudových služeb neblokuje přístup k Web API pro získání interních metrik, jako je uptime, a pro zpracování požadavků na podobná API se používá Fluent Bit.

Zranitelnost je způsobena chybou ve vestavěném HTTP serveru, která se projevuje při zpracování externích požadavků přes API volání „/api/v1/traces“ a „/api/v1/trace“, což uživatelům umožňuje získat informace o nastavených trasováních. Bez ohledu na to, zda je trasování zapnuto, má uživatel možnost přistupovat k datům API, pokud mu byl poskytnut odpovídající přístup. Během analýzy příchozích požadavků byly typy některých vstupních polí, předávaných přes pole v bloku JSON, určovány nesprávně a bez ohledu na očekávaný typ pole byly interpretovány jako typ MSGPACK_OBJECT_STR. Uvedení v poli vstupních dat hodnot neřetězcového typu, například celých čísel, vedlo k poškození paměti, protože funkce flb_sds_create_len() vyzvedávala předané celé číslo jako pole o velikosti řetězce.

Příklad požadavku, který vyvolává pád: 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"

Během experimentů se výzkumníkům podařilo dosáhnout havarijního ukončení služby a určit zbytkový obsah paměti, který byl použit při zpracování HTTP požadavků a obsahoval například fragmenty důvěrných dat, jako jsou přístupové klíče. Jelikož problém vede k přetečení zásobníku závislému na předávaných parametrech, teoreticky může být zneužit k provedení vlastního kódu v systému, avšak výzkumníci, kteří problém identifikovali, tuto možnost neověřili z důvodu nedostatku času na práci na exploitaci.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster