Im offenen Projekt Fluent Bit wurde eine Sicherheitsanfälligkeit (CVE-2024-4323) entdeckt, die es Angreifern ermöglicht, remote Speicherbeschädigung zu verursachen, was zu einem Dienstausfall, Datenlecks und potenziell zur Ausführung eigenen Codes auf dem Server führen kann. Das Problem, dessen Codename "Linguistic Lumberjack" lautet, hat eine kritische Gefährdungsstufe von 9,8 auf einer Skala von 10. Die Sicherheitsanfälligkeit tritt ab Version 2.0.7 auf und wurde in den Korrekturupdates 2.2.3 und 3.0.4 behoben.
Fluent Bit verzeichnet über 10 Milliarden Implementierungen und wird zur Verarbeitung und Sammlung von Log- und Metrikdaten in vielen Unternehmen und Cloud-Plattformen eingesetzt, zu den Nutzern gehören unter anderem Google Cloud, AWS, DigitalOcean, vMware, Cisco, Microsoft, Lyft, LinkedIn, Walmart, Couchbase, Swift und Dell. Im März wurden 13 Millionen Docker-Images mit Fluent Bit heruntergeladen. Laut der Firma Tenable, die die Sicherheitsanfälligkeiten entdeckt hat, blockieren viele Cloud-Dienste den Zugang zu Web-APIs nicht, um interne Metriken wie die Betriebszeit abzurufen, und Fluent Bit wird zur Verarbeitung solcher API-Anfragen verwendet.
Die Schwachstelle wird durch einen Fehler im integrierten HTTP-Server verursacht, der sich bei der Verarbeitung externer Anfragen über die API-Aufrufe „/api/v1/traces“ und „/api/v1/trace“ zeigt und es Benutzern ermöglicht, Informationen über konfigurierte Traces zu erhalten. Unabhängig von der Aktivierung des Tracings können Benutzer auf die API-Daten zugreifen, wenn ihnen der entsprechende Zugang gewährt wird. Bei der Analyse eingehender Anfragen wurden die Typen einiger Eingabefelder, die über ein Array im JSON-Block übermittelt wurden, falsch bestimmt und unabhängig vom erwarteten Feldtyp als MSGPACK_OBJECT_STR interpretiert. Die Angabe nicht-stringbasierter Werte im Eingabearray, beispielsweise ganzzahliger Parameter, führte zu Speicherbeschädigungen, da die Funktion flb_sds_create_len() den übermittelten ganzzahligen Wert als Feld mit der Größe eines Strings extrahierte.
Beispiel einer Anfrage, die einen Absturz verursacht: 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“
Während der Experimente gelang es den Forschern, einen Notfallabbruch des Dienstes herbeizuführen und den verbleibenden Inhalt des Arbeitsspeichers zu bestimmen, der bei der Verarbeitung von HTTP-Anfragen verwendet wird und beispielsweise Fragmente sensibler Daten wie Zugriffsschlüssel enthält. Da das Problem zu einem von den übermittelten Parametern abhängigen Pufferüberlauf führt, könnte es theoretisch ausgenutzt werden, um eigenen Code im System auszuführen, jedoch wurde diese Möglichkeit von den Forschern, die das Problem entdeckt haben, aufgrund von Zeitmangel für die Entwicklung eines Exploits nicht getestet.
Quelle: opennet.ru
