O vulnerabilitate în Fluent Bit, care afectează mulți furnizori de cloud

În proiectul deschis Fluent Bit a fost identificată o vulnerabilitate (CVE-2024-4323) care permite exploatarea la distanță pentru a provoca daune în memoria sistemului, ceea ce poate fi utilizat pentru a declanșa un atac de tip denial-of-service, scurgeri de date și, potențial, executarea de cod personal pe server. Problema, care a fost numită «Lumberjack Lingvistic», are un nivel critic de severitate (9.8 din 10). Vulnerabilitatea apare începând cu versiunea 2.0.7 și a fost remediată în actualizările corective 2.2.3 și 3.0.4.

Fluent Bit are peste 10 miliarde de implementări și este utilizat pentru procesarea și colectarea jurnalelor și metricilor în multe companii și platforme de cloud, printre utilizatori numărându-se Google Cloud, AWS, DigitalOcean, vmWare, Cisco, Microsoft, Lyft, LinkedIn, Walmart, Couchbase, Swift și Dell. În martie, au fost descărcate 13 milioane de imagini Docker cu Fluent Bit. Conform datelor companiei Tenable, care a identificat vulnerabilitățile, multe servicii cloud nu blochează accesul la API-ul Web pentru obținerea metricilor interne, cum ar fi uptime-ul, iar Fluent Bit este folosit pentru a gestiona apelurile la astfel de API-uri.

Vulnerabilitatea este cauzată de o eroare în serverul HTTP încorporat, care apare în timpul procesării cererilor externe prin apelurile API «/api/v1/traces» și «/api/v1/trace», permițând utilizatorilor să obțină informații despre traseele configurate. Indiferent de activarea urmăririi, utilizatorul are capacitatea de a accesa datele API, dacă i se oferă acces adecvat. În timpul analizei cererilor de intrare, tipurile unora dintre câmpurile de intrare, transmise printr-un tablou în blocul JSON, au fost determinate incorect și, indiferent de tipul așteptat, au fost interpretate ca tip MSGPACK_OBJECT_STR. Specificarea în tabloul de date a valorilor non-string, cum ar fi parametrii întregi, a dus la deteriorarea memoriei, deoarece funcția flb_sds_create_len() extrăgea valoarea întreagă transmisă ca o dimensiune de câmp de tip string.

Exemplu de cerere care cauzează o eroare fatală: 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»

În cadrul experimentelor, cercetătorii au reușit să provoace o întrerupere a serviciului și să determine conținutul rezidual al memoriei utilizate în procesarea cererilor HTTP, conținând, de exemplu, fragmente de date confidențiale, cum ar fi cheile de acces. Deoarece problema duce la o depășire a tamponului dependentă de parametrii transmiși, teoretic aceasta ar putea fi exploatată pentru a executa codul său în sistem, dar cercetătorii care au descoperit problema nu au testat această posibilitate din lipsă de timp pentru a lucra la un exploit.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster