KI-gestützte Cyberangriffe: Wie man intelligente Bedrohungen erkennt, verhindert und abwehrt

Jetzt lesen
Wir verwenden künstliche Intelligenz für Website-Übersetzungen, und obwohl wir uns um Genauigkeit bemühen, kann es sein, dass sie nicht immer 100%ig präzise sind. Wir danken Ihnen für Ihr Verständnis.

CVE-2024-36401 in Open-Source GeoServer setzt Systeme der Remote-Code-Ausführung aus

von OPSWAT
Jetzt teilen
Fotos der Teilnehmer des OPSWAT
Teilnehmer des OPSWAT

In diesem Blog befassen wir uns mit CVE-2024-36401 - einer Sicherheitslücke, die in GeoServer gefunden wurde, einem Open-Source-Java-basierten Server, der häufig für die Bearbeitung und den Austausch von Geodaten verwendet wird. Diese Schwachstelle, die RCE (Remote Code Execution) durch nicht authentifizierte Benutzer ermöglichen könnte, unterstreicht, wie wichtig es ist, GeoServer-Bereitstellungen so schnell wie möglich zu patchen. 

In unserer neuesten Sicherheitsanalyse untersuchen zwei OPSWAT diese Bedrohung:

Wir werden auch erläutern, wie die SBOM-Technologie OPSWAT diese Schwachstelle aufspüren kann und wie Teams ihre Geodateninfrastruktur sichern können, bevor Angreifer zuschlagen.

Illustration der GeoServer-Schwachstellenanalyse

GeoServer Übersicht

GeoServer ist ein Java-basierter Open-Source-Server für die Anzeige, Bearbeitung und den Austausch von Geodaten. Ursprünglich wurde GeoServer im Jahr 2001 von TOPP (The Open Planning Project) ins Leben gerufen und entwickelt, um das öffentliche Engagement in der Verwaltung und Stadtplanung durch den offenen Austausch von Geodaten zu verbessern. Mehr als zwei Jahrzehnte später ist GeoServer zu einer robusten Plattform gereift, die in der Lage ist, verschiedene Geodatenformate zu verarbeiten und mit unterschiedlichen Datenquellen zu integrieren.

GeoServer bietet Dienste, die auf den OGC-Standards (Open Geospatial Consortium) basieren, darunter:

  • WFS (Web Feature Service) - Ermöglicht das Erstellen, Ändern und Austauschen von geografischen Informationen im Vektorformat über HTTP
  • WCS (Web Coverage Service) - Erleichtert den Zugang zu Rasterdaten (z. B. Satellitenbilder) für komplexe Modellierungen und Analysen.
  • WMS (Web Map Service) - Bietet eine einfache HTTP-Schnittstelle für die Anforderung von Kartenbildern.

Hintergrund zu CVE-2024-36401

CVE-2024-36401 betrifft GeoServer-Versionen vor 2.25.2, 2.24.4 und 2.23.6. Er entsteht durch die unsichere Auswertung von Eigenschaftsnamen als XPath-Ausdrücke über mehrere OGC-Anfrageparameter. Angreifer können diese Schwachstelle ausnutzen, um RCE (Remote Code Execution) zu erzeugen, indem sie manipulierte Eingaben in eine Standard-GeoServer-Installation einschleusen.

 Laut GitHub Security Advisories wird diese Sicherheitslücke mit einem CVSS v3.1-Wert von 9.8 (kritisch) bewertet. 

Screenshot der CVSS Base Score Metrics, die zur Bewertung von Software-Schwachstellen verwendet werden

GeoServer's einfache vs. komplexe Funktionen

GeoServer unterstützt sowohl einfache als auch komplexe Feature-Typen, um verschiedene Geodatenstrukturen, von flachen bis hin zu komplizierten, verschachtelten Datensätzen, zu unterstützen. Die fehlerhafte Handhabung von XPath-Ausdrücken in diesen Datentypen macht CVE-2024-36401 jedoch ausnutzbar.

Einfache Merkmale

Einfache Featuretypen stellen einfache Geodaten in einem flachen Format dar, bei dem jede Zeile in einer Datenbank einem Geomerkmal entspricht und jedes Attribut direkt auf ein XML-Element abgebildet wird. 

Beispielsweise kann eine Tabelle, die Unternehmen mit Spalten wie ID, Name und Standort darstellt, leicht in einfache XML-Funktionen umgewandelt werden.

idNameStandort
1OPSWATPUNKT (10.769829, 106.685248)
GeoServer einfaches Feature-Mapping von Datenbankzeilen auf XML-Elemente

Komplexe Merkmale

Im Gegensatz dazu können komplexe Featuretypen kompliziertere Daten verarbeiten. Dieser Merkmalstyp unterstützt verschachtelte Eigenschaften und Beziehungen zwischen verschiedenen Datensätzen. Diese komplexen Schemata werden nicht automatisch generiert, sondern anhand von Gemeinschaftsstandards definiert, wie sie in der GeoServer-Erweiterung "Application Schema" beschrieben sind.

Beispiel: 

Unter der vorherigen Tabelle companies fügen wir einen Fremdschlüssel hinzu gu_id zur Beschreibung der Beziehung zwischen einem Unternehmen und seiner entsprechenden geologischen Einheit:

idNameStandortgu_id
1OPSWATPUNKT (10.769829, 106.685248)12

Die Informationen zu den geologischen Einheiten werden separat in der Tabelle geologische Einheit:

gu_idUrneBeschreibung
12urn:x-demo:feature:GeologicUnit:12Metamorpher Gneis

Mit Hilfe dieser Tabellen können wir das Unternehmen einem sa:SamplingCompanydie eine verschachtelte gsml:GeologischeEinheit. Dieser Aufbau schafft ein komplexes Merkmal, da es sich um verschachtelte Typen und Beziehungen handelt, die durch Gemeinschaftsspezifikationen und nicht durch automatisch generierte Schemata definiert sind.

Verschachtelte Beziehungen zwischen geologischen Einheiten in komplexen GeoServer-Features

Diese Flexibilität ist für die Modellierung komplexer realer Szenarien unerlässlich, birgt aber auch Schwachstellen, da sie auf fortgeschrittene Verarbeitungstechniken wie die JXPath-Auswertung angewiesen ist, um die verschachtelten Strukturen effektiv zu verwalten.

Wie die Anfälligkeit entsteht

GeoServer ist so konzipiert, dass er die XPath-Auswertung zur Verarbeitung komplexer Feature-Typen (wie sie in Application Schema-Datenspeichern zu finden sind) verwendet. Aber aufgrund unsachgemäßer Handhabung wendet er die XPath-Auswertung fälschlicherweise auch auf einfache Merkmalstypen an. Dies schafft einen Angriffsvektor, weil:

  1. GeoServer stützt sich auf die GeoTools-Bibliothek, um Eigenschaftsnamen während des Datenabrufs auszuwerten.
  2. Die commons-jxpath Bibliothek, die für die Verarbeitung von XPath-Ausdrücken verwendet wird, fehlt eine ordnungsgemäße Validierung, wodurch beliebiger Code bei der Verarbeitung von XPath-Ausdrücken ausgeführt werden kann.
  3. Dieser Fehler setzt alle GeoServer-Instanzen potenziellen RCE-Schwachstellen aus, da ein Angreifer eine bösartige Anfrage erstellen kann, die diese unsichere XPath-Ausführung ausnutzt, um den Server zu kontrollieren.

Überblick über den Exploitation-Workflow

  • A POST Anfrage wird an den GetPropertyValue Vorgang. Dann versucht GeoServer, die Eigenschaft abzurufen (oder valueReference) für ein bestimmtes Merkmal.  
  • Wenn die angeforderte Eigenschaft in der Tabelle Feature Type Details vorhanden ist, verarbeitet GeoServer sie normal.
GeoServer Fallback zu commons-jxpath für XPath-Auswertung in einer Tabelle
  • Wenn die Eigenschaft jedoch nicht aufgeführt ist, greift GeoServer auf die commons-jxpath Bibliothek, um den Anfrageparameter als XPath-Ausdruck zu interpretieren.
  • Seit commons-jxpath erlaubt die Ausführung von Java-Code direkt aus XPath. Dieser Fallback-Mechanismus ermöglicht es, vom Benutzer bereitgestellte Anforderungsparameter zur Remotecodeausführung auszunutzen. Einfach ausgedrückt: Ein Angreifer kann bösartigen Code einschleusen, um RCE zu erreichen.
Workflow-Diagramm zur Veranschaulichung des GeoServer GetPropertyValue-Vorgangs und des Angriffsflusses

Ausnutzung und Analyse von Schwachstellen

JXPath und die Java Execution Bridge

Commons-jxpath-Verarbeitung von bösartigen XPath-Ausdrücken in GeoServer

Die commons-jxpath Bibliothek, die gemeinhin als JXPath bezeichnet wird, ermöglicht die Navigation durch Java-Objektgraphen (JavaBeans, DOM-Objekte usw.) mit Hilfe der XPath-Syntax. Wenn Sie zum Beispiel ein einfaches Employee-Objekt mit Eigenschaften wie Name und Adresse haben, können Sie mit JXPath diese Eigenschaften abfragen, als wären sie Knoten in einem XML-Dokument.

JXPath-Navigation in Java-Objektgraphen mit XPath-Syntax

Ausnutzung von Erweiterungsfunktionen

Neben den Standardfunktionen unterstützt JXPath auch Erweiterungsfunktionen, die eine Brücke zu Java bilden. Diese "Brücke zu Java" ist von entscheidender Bedeutung, da sie es beispielsweise ermöglicht, Java-Funktionen direkt in XPath-Abfragen aufzurufen:

JXPath zur Abfrage von Eigenschaften eines Java Employee-Objekts

Aufgrund der wenigen Einschränkungen, welche Java-Methoden über diese Brücke aufgerufen werden können, kann ein Angreifer die exec() Funktion (oder ähnliche Methoden), um beliebige Befehle auf dem Server auszuführen.

Aufruf von Erweiterungsfunktionen als Brücke zwischen XPath und Java-Methoden

WFS GetPropertyValue

Der WFS von GeoServer ermöglicht den Benutzern die Abfrage und Bearbeitung von Geodaten. Unter normalen Bedingungen ist der WFS GetPropertyValue Operation würde einfach die angeforderte Eigenschaft in einer XML-Struktur zurückgeben.

WFS GetPropertyValue-Operation mit Rückgabe der XML-Eigenschaft
WFS GetPropertyValue XML-Antwortstruktur

Workflow-Analyse

  1. Ein Angreifer sendet eine POST-Anfrage an /geoserver/wfs.
  2. Der GeoServer untersucht das äußerste XML-Tag.wfs:GetPropertyValue-um zu bestimmen, welcher Vorgang ausgeführt werden soll.
  3. GeoServer delegiert dann die Anfrageparameter an die entsprechende Methode in der WFS-Klasse. In diesem Szenario leitet der Dispatcher die Anfrage an die GetPropertyValue Methode.
GeoServer Dispatcher, der die Anfrage an die Methode GetPropertyValue weiterleitet
  1. Innerhalb der Klasse DefaultWebFeatureService20 (WFS) wird diese GetPropertyValue Methode leitet die Parameter des Benutzers an einen Handler mit demselben Namen weiter.
  2. Der Handler ist run() Methode erhält die Anfrage, einschließlich der kritischen valueReference Parameter, der vom Benutzer gesteuert wird.
Handler run()-Methode, die eine Benutzeranfrage mit valueReference-Parameter empfängt
  1. Während der run() Methode ruft der GeoServer die referenzWert und ruft seine evaluate() Funktion.
GeoServer ruft referenceValue ab und ruft die Funktion evaluate() auf
  1. Wenn valueReference nicht mit den vordefinierten Eigenschaften von GeoServer übereinstimmt, setzt GeoServer sie standardmäßig auf den FeaturePropertyAccessor, die Folgendes interpretiert valueReference als XPath-Ausdruck.
FeaturePropertyAccessor interpretiert valueReference als XPath-Ausdruck
  1. Die get() Methode in FeaturePropertyAccessor verwendet commons-jxpath um die XPath-Abfrage auszuführen. Hier wird der Benutzer valueReference wird direkt in den xpath-Parameter ohne Validierung übergeben. Über JXPathContext.newContext()initialisiert der GeoServer eine Umgebung für XPath-Abfragen und führt diese dann über iteratePointers().
Commons-jxpath führt XPath-Abfrage mit benutzerdefinierter valueReference aus

Da JXPath Erweiterungsfunktionen unterstützt, können Angreifer bösartigen Code in den XPath-Ausdruck einfügen und so die Ausführung von beliebigem Code auf der GeoServer-Instanz auslösen.

Angreifer injiziert bösartigen Code über XPath-Ausdruck für RCE

Diese Kette von Ereignissen zeigt, wie unsicher der Umgang mit dem valueReference Parameter kann zu RCE führen, was eine ernsthafte Sicherheitsbedrohung für anfällige GeoServer-Einsätze darstellt.

Simulation des Angriffs

Um diese Ausnutzung in einem realen Szenario zu simulieren, haben unsere OPSWAT GeoServer auf einem lokalen Windows-Rechner installiert. Beim Zugriff auf GeoServer wurde die folgende Oberfläche angezeigt.

Screenshot der GeoServer-Schnittstelle auf einem Windows-Rechner für die Schwachstellen-Simulation

Sobald der Server läuft, kann ein Angreifer die Sicherheitslücke ausnutzen, indem er eine POST-Anfrage mit einem bösartigen XPath-Ausdruck über valueReference zum Endpunkt /geoserver/wfs.

XML-Codefragment zur Demonstration einer bösartigen POST-Anfrage, die valueReference in GeoServer ausnutzt

Ergebnis: Nachdem die Anfrage gesendet wurde, führt der bösartige XPath-Ausdruck einen Systembefehl aus und löst den Start der Calculator-Anwendung aus.

Screenshot, der den Start der Rechneranwendung nach erfolgreichem RCE-Exploit zeigt

Abhilfemaßnahmen und Empfehlungen

Eine einfache Schwachstelle kann sich zu einem Angriff auf die Software-Lieferkette ausweiten, insbesondere bei Projekten, die auf Open-Source-Software wie GeoServer basieren. DieOPSWAT SBOM-Technologie (Software Bill of Materials) hilft bei der Identifizierung von Schwachstellen wie CVE-2024-36401 in Ihrer Codebasis.

Dieses Beispiel zeigt, wie OPSWAT SBOM:

  1. Erkennt die von Sicherheitslücken betroffenen Softwarekomponenten.
  2. Bewertet und stuft den Schweregrad der Sicherheitslücke ein - hier sind die GeoServer CVEs als "kritisch" gekennzeichnet.
  3. Identifiziert die betroffene Version.
  4. Empfiehlt die korrigierte Version, damit die Entwicklungsteams umgehend Patches einspielen oder Abhilfemaßnahmen ergreifen können.
Dashboard-Screenshot von OPSWAT SBOM, das GeoServer-Pakete mit kritischen Sicherheitslücken erkennt
Die OPSWAT SBOMSoftware Bill of Materials)-Technologie erkennt GeoServer-Pakete mit kritischen Sicherheitslücken.

Weitere empfohlene Schritte

  1. Aktualisieren Sie GeoServer: Aktualisieren Sie auf die GeoServer-Versionen 2.25.2, 2.24.4 oder 2.23.6 (oder höher), in denen die Sicherheitslücke gepatcht ist.
  2. Audit-Abhängigkeiten: Verwenden Sie regelmäßig Tools wie OPSWAT SBOM, um veraltete Bibliotheken zu identifizieren (z. B., commons-jxpath) in Ihrer Umgebung.
  3. Beschränken Sie den Zugang: Setzen Sie GeoServer hinter Firewalls oder Authentifizierungsschichten ein, um die Angriffsfläche zu minimieren.
  4. Überwachen Sie Sicherheitshinweise: Behalten Sie die offiziellen GeoServer-Versionshinweise und CVE-Datenbanken im Auge, um über neue Patches auf dem Laufenden zu bleiben.

Über OPSWAT SBOM

OPSWAT SBOM unterstützt die gängigsten Programmiersprachen und bietet Software-Entwicklungsteams Einblick in Open-Source-Bibliotheken von Drittanbietern, deren Abhängigkeiten und die neuesten verfügbaren Versionen für Upgrades. Entwickler können OPSWAT SBOM in ihren Quellcode und in Containerdienste wie GitHub, BitBucket, GitLab, Amazon ECR, DockerHub und andere integrieren. Erfahren Sie mehr über SBOM.

Sprechen Sie noch heute mit einem Experten, um zu erfahren, wie Sie die OPSWAT und -Lösungen in Ihre bestehende Infrastruktur und Arbeitsabläufe integrieren können:

Bleiben Sie auf dem Laufenden mit OPSWAT!

Melden Sie sich noch heute an, um die neuesten Unternehmensinformationen zu erhalten, Geschichten, Veranstaltungshinweise und mehr.