A Fluent Bit projektben felfedeztek egy sebezhetőséget (CVE-2024-4323), amely lehetővé teszi az emlékezeti sérüléseket, amit szolgáltatásmegtagadás, adatvesztés és esetlegesen a saját kód végrehajtására is fel lehet használni a szerveren. A problémát "Linguistic Lumberjack" kódnévvel illették, és kritikus veszélyességi szintet kapott (9,8 a 10-ből). A sebezhetőség a 2.0.7-es verziótól kezdődően jelentkezik, és a 2.2.3-as és 3.0.4-es javítófrissítésekben orvosolták.
A Fluent Bit több mint 10 milliárd telepítési számot tudhat magáénak, és számos cég és felhőszolgáltatás által használt logok és metrikák feldolgozására és gyűjtésére szolgál, mint például a Google Cloud, AWS, DigitalOcean, vmWare, Cisco, Microsoft, Lyft, LinkedIn, Walmart, Couchbase, Swift és Dell. Márciusban 13 millió Docker-képet töltöttek le a Fluent Bit-tel. A sebezhetőségeket felfedező Tenable adatai szerint sok felhőszolgáltatás nem tiltja le a Web API-hozzáférést a belső metrikák, például az uptime beszerzésére, és a hasonló API-k kiszolgálásához a Fluent Bit-et használják.
A sebezhetőség a beépített HTTP-szerver hibájából ered, amely a külső API-hívások kezelése során jelentkezik a "\/api\/v1\/traces" és "\/api\/v1\/trace" végpontokon, lehetővé téve a felhasználók számára, hogy információt kapjanak a konfigurált nyomokkal kapcsolatban. A nyomkövetés engedélyezésétől függetlenül a felhasználó hozzáférhet az API adataihoz, ha megfelelő hozzáférést kapott. A beérkező kérdések elemzése során a JSON tömbön keresztül átadott néhány bemeneti mező típusa helytelenül lett meghatározva, és a várt mezőtípustól függetlenül MSGPACK_OBJECT_STR típusúként értelmezték. A bemeneti adatok tömbjében nem karakterlánc értékek megadása, például egész számú paraméterek, emlékezeti sérülést okozott, mivel a flb_sds_create_len() függvény az átadott egész számú értéket karakterhosszúságú mezőként dolgozta fel.
Oktató jellegű kérés, amely összeomlást okoz: 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»
Kísérleteik során a kutatóknak sikerült kényszerített leállást elérniük a szolgáltatásban, és meghatározniuk a memóriában tárolt maradék tartalmat, amely a HTTP kérések feldolgozása során keletkezik, és például bizalmas adatok, mint az hozzáférési kulcsok töredékeit tartalmazza. Mivel a probléma a továbbított paraméterektől függő puffertúlcsordulást okoz, elméletileg kihasználható a kód végrehajtására a rendszerben, azonban a problémát felfedező kutatók ezt a lehetőséget nem ellenőrizték a kihasználásra szánt fejlesztésre szánt idő hiánya miatt.
Forrás: opennet.ru
