Aktuelle Zero-Day-Schwachstelle im Java Spring Framework (Spring4Shell)

Wissenswertes und Tipps von der SySS

Erneut macht eine Schwachstelle im Java Spring Framework Schlagzeilen. Dabei muss zwischen CVE-2022-22963, einer Schwachstelle, die Remote Code Execution in der Spring Cloud-Funktionalität ermöglicht, und einer bisher nicht mit einer CVE-ID versehenen Schwachstelle in "Spring Core" unterschieden werden.
Für CVE-2022-22963 gibt es bereits Aktualisierungen, die kritische Remote Code Execution innerhalb von "Spring Core" verlangt kurzfristig schnelle Lösungen.

Das ist die Situation

Seit einem GitHub-Commit am 30. März 2022, der einen Proof of Concept (PoC)-Code für eine Schwachstelle in Spring Core beinhaltet, zeigte sich relativ schnell, dass es als unauthentifizierter Nutzer möglich ist, Betriebssystembefehle auszuführen. Es gibt jedoch zum aktuellen Zeitpunkt noch keine klare Aussage, welche Webapplikationen anfällig sind. Es ist allerdings davon auszugehen, dass Applikationen, die regulär im Einsatz sind, über diese Schwachstelle angegriffen werden können.

So sieht die Schwachstelle im Detail aus

Betroffen scheinen zunächst alle Java Development Kit (JDK)-Versionen 9 und aufwärts zu sein, sofern Spring Core eingesetzt wird. Aktuell gibt es noch keine Aktualisierungen durch den Hersteller, um die Sicherheitslücke zu schließen. Für die Sicherheitslücke verantwortlich scheint eine Kombination der @RequestMapping-Annotation mit den "Plain Old Java Object"-Parametern zu sein.
Dabei werden die @RequestMapping- sowie die @GetMapping- und @PostMapping-Annotation genutzt, um eine URL festzulegen, worüber eine bestimmte Funktion aufrufbar ist. Beispielsweise würde der nachfolgende Codeblock den URL-Pfad /foobar zugänglich machen:


@RequestMapping("/foobar")


Dann kann eine Anfrage an diesen Pfad mit Parametern dazu führen, dass einige Eigenschaften festgelegt oder überschrieben werden. Darüber ist es zum Beispiel auch möglich, die Logging-Konfiguration eines Apache Tomcat zu verändern. So wäre es denkbar, eine sogenannte Web-Shell über die folgenden Aufrufe zu erhalten: 


class.module.classLoader.resources.context.parent.pipeline.first.pattern=<Inhalt-der-Webshell>

&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp

&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT

&class.module.classLoader.resources.context.parent.pipeline.first.prefix=webshell

&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=


Dies schreibt eine Datei mit dem Namen "webshell.jsp" in den Ordner "webapps/ROOT" und ist daraufhin aus dem Internet aufrufbar. 
Für andere Webserver, die das Spring Framework einsetzen, müssen die Exploits entsprechend angepasst werden, da diese Logging-Funktionen nicht existieren.

Im nachfolgenden Screenshot ist zu sehen, dass sogar eine Standardapplikation des Spring-Tutorials anfällig für die Schwachstelle ist:

Diese Gegenmaßnahmen sind zu ergreifen

Es wird spekuliert, dass die Hersteller von Spring bereits an einem Patch für die Sicherheitslücke arbeiten. Bis dahin könnten folgende Maßnahmen ergriffen werden, um den Impact möglichst gering zu halten: 

  • Identifikation und Abschottung von verwundbaren Systemen, sofern möglich
  • Patchen des Quellcodes in DataBinder

Aktuell gehen viele Sicherheitsforscher davon aus, dass diese Schwachstelle nicht so großflächig ausnutzbar ist, wie es die Log4j-Schwachstelle war. Trotzdem sollte überprüft werden, ob eine verwundbare Version im Einsatz ist.

So kann die SySS unterstützen

Benötigen Sie Unterstützung bei einem Incident? Unsere Abteilung für Digitale Forensik und Incident Response ist für Sie da.

Ihr direkter Kontakt zu SySS +49 (0)7071 - 40 78 56-0 oder anfrage@syss.de | IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN +49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer

Ihr direkter Kontakt zu SySS +49 (0)7071 - 40 78 56-0 oder anfrage@syss.de

IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN +49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer

Direkter Kontakt

+49 (0)7071 - 40 78 56-0 oder anfrage@syss.de

IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN

+49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer