Skip to main content

Ghostcat-Sicherheitslücke betrifft alle Tomcat-Versionen

Artikel von
ghostcat feature

26. Februar 2020

0 Min. Lesezeit

Apache Tomcat ist eine Open-Source-Implementierung der Technologien Java Servlet, JavaServer Pages, Java Expression Language und Java WebSocket. Tomcat gehört zu den beliebtesten Java-HTTP-Webserver-Umgebungen und wurde 1998 veröffentlicht.

Ghostcat ist eine kritische Schwachstelle in Tomcat, die am 3. Januar von den Sicherheitsforschern von Chaitin Tech entdeckt wurde. Am 20. Februar veröffentlichte die China National Vulnerability Database (CNVD) eine Sicherheitsempfehlung zu diesem Problem unter der Nummer CNVD-2020-10487.

Die Schwachstelle wurde im Apache JServ Protocol (AJP) gefunden. Dieses Binärprotokoll ermöglicht es Angreifern, beliebige Dateien in Tomcat-Webanwendungsverzeichnissen zu lesen oder einzubinden.

AJP-Connector

Der AJP-Connector übernimmt die Kommunikation zwischen Tomcat und der Außenwelt. In Apache Tomcat ist der AJP-Connector standardmäßig für die Versionen 6 bis 9 auf Port 8009 aktiviert. Da CVE-2020-1938 eine Schwachstelle zum Lesen und Einbinden von Dateien im AJP-Connector von Tomcat ist, sind alle Versionen ohne den entsprechenden Patch betroffen.

Die Schwachstelle ermöglicht es Angreifern, den Inhalt von Webanwendungsdateien zu lesen. Wenn die Webanwendung Datei-Uploads zulässt, können Angreifer außerdem beliebige Dateien auf den Server hochladen, darunter schädliche JavaServer Pages (JSP), die die Remote-Codeausführung auf dem Server ermöglichen.

GhostCat-Logo mit orangefarbenen und grünen Katzaugen-Symbolen über weißer und orangefarbener Fettschrift

Lösung

Apache Tomcat hat bereits gepatchte Versionen für Tomcat 7, 8 und 9 veröffentlicht:

Die Chaitin-Forscher empfehlen, bei Verwendung des Patches außerdem ein geeignetes Secret zur Connector-Konfiguration in der Datei /conf/server.xml hinzuzufügen.

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" 
address="YOUR_TOMCAT_IP_ADDRESS" 
secret="YOUR_TOMCAT_AJP_SECRET" />

Wenn ein Patch nicht infrage kommt, gibt es laut den Chaitin-Forschern weitere Möglichkeiten, das Problem einzudämmen.

Wenn Sie den AJP-Connector nicht verwenden, können Sie dessen Deklaration in der Datei /conf/server.xml bedenkenlos auskommentieren oder löschen.

<!--<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" />-->

Wenn Sie den AJP-Connector verwenden und kein Update auf eine gepatchte Version möglich ist, fügen Sie ein Feld „requiredSecret“ mit einem sicheren, schwer zu erratenden Secret hinzu.

<Connector port="8009" protocol="AJP/1.3" 
redirectPort="8443" 
address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET" />

Spring Boot

Der aktuelle JVM Ecosystem Report zeigt, dass Spring Boot das meistgenutzte serverseitige Framework im Ökosystem ist. Spring Boot verwendet einen eingebetteten Webserver, wobei standardmäßig die eingebettete Tomcat-Version zum Einsatz kommt. Es ist möglich, dass spring-boot-starter-web ein anfälliges eingebettetes Apache-Tomcat-Paket in Ihr System eingebunden hat.

Bearbeitet am 2. März 2020

Gut zu wissen: Spring Boot erstellt standardmäßig keinen AJP-Connector. Das bedeutet, dass Angreifer diese Schwachstelle mit den Standardeinstellungen nicht ausnutzen können. Spring Boot lässt sich jedoch anders konfigurieren. Prüfen Sie anhand Ihrer Konfiguration, ob Sie betroffen sind, und ergreifen Sie geeignete Maßnahmen.

Starten Sie mit Capture-the-Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.