Analyse von JFrog Spring WebFlux patcht kritische Sicherheitslücke

Von Martin Hensel 2 min Lesedauer

Die Sicherheitsspezialisten von JFrog haben eine kritische Lücke im Framework Spring WebFlux detailliert analysiert. Sie kann schwerwiegende Auswirkungen auf Spring-WebFlux-Anwendungen haben und wurde deshalb bereits gepatcht.

JFrog hat sich bis ins Detail mit einer kritischen Sicherheitslücke in Spring WebFlux befasst.
JFrog hat sich bis ins Detail mit einer kritischen Sicherheitslücke in Spring WebFlux befasst.
(Bild: Darwin Laganzon / Pixabay)

Aufgrund des kritischen NVD-Schweregrads („National Vulnerability Database“, CVSS 9.8) und einer ähnlichen Einstufung seitens der Spring-Maintainer sowie der möglichen schwerwiegenden Folgen, sah sich JFrog zu einer genaueren Untersuchung der Schwachstelle motiviert. Neu veröffentlichte Versionen von Spring Security enthalten bereits einen Fix der Sicherheitslücke (CVE-2023-34034), die sich in der Zugriffskontrolle versteckt hatte.

Das Java-basierte Spring Anwendungsframework ist weit verbreitet und stellt Infrastrukturunterstützung für die Entwicklung von Java-Applikationen auf Unternehmensebene bereit. Spring Security, ein Authentifizerungs- und Zugriffskontrollframework, sichert derartige Anwendungen ab. Seit Spring 5 ist Spring WebFlux als reaktive Programmieralternative zum traditionellen Spring Web MVC Framework an Bord. Statt des Thread-per-Request-Ansatzes nutzt es die reaktive Streams-API und kann somit mehrere Anforderungen gleichzeitig mit einer kleinen Anzahl an Threads verarbeiten.

Details zur Schwachstelle

Bei der Sicherheitslücke handelt es sich um eine Filterumgehungsschwachstelle. Die Beschreibung des bereits vorgenommenen Fixes ging jedoch nicht genau darauf ein, welche Spring-Anwendungsfälle von dem Problem betroffen sind. JFrog führte deshalb einen Proof of Concept in Form einer einfachen WebFlux-Anwendung mit den Rollen „User“ und „Admin“ sowie einer anfälligen Version von Spring Security durch. Diese Anwendung enthält eine Anmeldeseite und einen Admin-Endpunkt. „.anyExchange().permitAll()“ erlaubt den Zugriff auf alle Seiten mit Ausnahme der Admin-Seiten, die durch „.pathMatchers("admin/**").hasRole(Roles.ADMIN)“ angewiesen werden.

Aufgrund der Schwachstellt würde die Regel „admin/**“ mit keiner URL übereinstimmen, da ihr ein Schrägstrich am Anfang fehlt. Angreifer können dies ausnutzen, um zum Beispiel ungehindert auf „/admin/supershell“ zuzugreifen, ohne tatsächlich ein Administrator zu sein. Somit konnte JFrog nachweisen, dass Angreifer mit Kenntnis entsprechender Endpunkte ohne Authentifizierung auf diese zugreifen können.

Betroffene und Abhilfe

Die Lücke betrifft Anwendungen, die das Spring-WebFlux-Framework verwenden. Das ältere Spring-MVC-Framework ist nicht betroffen. Zudem muss eine anfällige Version von Spring Security (z.B. 5.6.0) im Einsatz sein. Die Webanwendung muss außerdem URL-Pfadfilterung für die Einstellung von Spring-Security-Zugriffsregeln verwenden. Dabei beginnt das Pfadmuster nicht mit einem Schrägstrich. Enthält der URL-Pfad zudem Platzhalterzeichen („**“), erhöht dies den Schweregrad der Lücke.

JFrog rät, zur Abhilfe auf eine der folgenden Versionen von Spring Security zu aktualisieren: 5.6.12+, 5.7.10+, 5.8.5+, 6.0.6+ oder 6.1.2+. Alternativ kann in jedem genutzten URL-Filter ein führender Schrägstrich ergänzt werden. (z.B. „pathMatchers(„/admin/**“)“ statt „pathMatchers(„admin/**“)“).

(ID:49658447)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung