Eine Sicherheitsanfälligkeit in Fluent Bit, die viele Cloud-Anbieter betrifft

Im offenen Projekt Fluent Bit wurde eine Sicherheitsanfälligkeit (CVE-2024-4323) entdeckt, die es ermöglicht, Speicherbeschädigungen aus der Ferne zu verursachen. Dies kann für einen Dienstleistungsabbruch, Datenlecks und potenziell die Ausführung von eigenem Code auf dem Server genutzt werden. Das Problem, das den Codenamen „Linguistic Lumberjack“ trägt, hat ein kritisches Gefahrenniveau (9.8 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 hat über 10 Milliarden Bereitstellungen und wird zur Verarbeitung und Sammlung von Protokollen und Metriken in vielen Unternehmen und Cloud-Plattformen eingesetzt. Zu den Nutzern gehören 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 dem Unternehmen Tenable, das die Sicherheitsanfälligkeiten entdeckt hat, blockieren viele Cloud-Dienste den Zugriff auf Web-APIs nicht, um interne Metriken wie Uptime abzurufen, und Fluent Bit wird zur Handhabung solcher API-Anfragen verwendet.

Die Sicherheitsanfälligkeit wird durch einen Fehler im integrierten HTTP-Server verursacht, der bei der Verarbeitung externer Anfragen über die API-Aufrufe „/api/v1/traces“ und „/api/v1/trace“ auftritt. Diese ermöglichen den Benutzern, Informationen über die konfigurierten Traces abzurufen. Unabhängig davon, ob das Tracing aktiviert ist, kann ein Benutzer auf die API-Daten zugreifen, wenn ihm der entsprechende Zugang gewährt wird. Während 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. Das Bereitstellen von nicht-zeichenfolgenbezogenen Werten im Eingabearray, wie beispielsweise Ganzzahlen, führte zu Speicherbeschädigungen, da die Funktion flb_sds_create_len() den übergebenen Ganzzahlwert als Stringfeldgröße extrahierte.

Beispiel für eine 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“

Im Verlauf der Experimente gelang es den Forschern, einen Notausstieg des Dienstes zu erreichen und den verbleibenden Inhalt des Speichers zu identifizieren, der bei der Verarbeitung von HTTP-Anfragen verwendet wurde und beispielsweise Fragmente vertraulicher Daten wie Zugangsschlü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

60GB SSD 8Gb DDR4