Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2023-34035-mitigations — Zeigt die CVE-2023-34035-Sicherheitslücke in Spring Security mit anfälligen und abgemilderten Beispielanwendungen und vermittelt die richtige Servlet-Mapping- und Request-Matcher-Konfiguration. | Kitploit
Tools/GitHubGitHub/jzheaux/cve-2023-34035-mitigations
SchwachstellenanalyseCode-AnalyseWebsicherheitFehlkonfigurationLernen & BildungAPI-Sicherheit
GitHubjzheaux/cve-2023-34035-mitigations

cve-2023-34035-mitigations

Zeigt die CVE-2023-34035-Sicherheitslücke in Spring Security mit anfälligen und abgemilderten Beispielanwendungen und vermittelt die richtige Servlet-Mapping- und Request-Matcher-Konfiguration.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
41vor 3 JahrenNoch nicht geprüft

Dieses Repository enthält eine Reihe von Beispielen, die die Konstellationen demonstrieren, in denen Anwendungen anfällig für https://spring.io/security/cve-2023-34035[CVE-2023-34035] sein können.

Eine Anwendung ist anfällig, wenn alle der folgenden Bedingungen zutreffen:

  • Spring MVC befindet sich im Classpath
  • DispatcherServlet und mindestens ein weiterer Servlet sind gemappt; einer von ihnen hat ein pfadbasiertes Servlet-Mapping (z. B. /path/**)
  • Die Anwendung verwendet requestMatchers(String), um auf Endpunkte zu verweisen, deren Servlet-Mapping die Form /path/** hat

== Beispiele

Es gibt eine Reihe von Beispielen, die Spring Boot verwenden, und eine Reihe, die dies nicht tun.

Die Beispiele, die fehlschlagende Tests enthalten, sind anfällig für CVE-2023-34035. Die Beispiele, deren Tests bestanden werden, sind nicht anfällig.

In allen Fällen enthält jedes dieser Beispiele denselben Fehler in der Schadensbegrenzung von Spring Security, wobei zu beachten ist, dass eine solche Begrenzung in vielen Fällen vorübergehend ist, bis das nächste Wartungs-Release veröffentlicht wird.

=== servlet:java-configuration:dispatcher-servlet-path

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/dispatcher-servlet-path[Dieses Beispiel] stellt eine anfällige Anwendung dar, bei der DispatcherServlet auf /mvc/* statt auf das Standard-/ bereitgestellt wird.

Es ist anfällig, da Spring MVC im Classpath ist, DispatcherServlet und mindestens ein weiterer Servlet gemappt sind – einer von ihnen mit einem nicht-root-pfadbasierten Servlet-Mapping (in diesem Fall DispatcherServlet) – und die Anwendung requestMatchers(String) verwendet, um diese Endpunkte zu schützen.

=== servlet:java-configuration:jetty

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/jetty[Dieses Beispiel] stellt eine sichere Anwendung dar, bei der DispatcherServlet auf / (das Standard) bereitgestellt wird.

Es ist nicht anfällig. Obwohl Spring MVC im Classpath ist und DispatcherServlet verwendet wird, ist es auf / bereitgestellt und es gibt keine nicht-root-pfadbasierten Servlet-Mappings.

=== servlet:java-configuration:other-servlets

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/other-servlets[Dieses Beispiel] stellt eine anfällige Anwendung dar, bei der sowohl DispatcherServlet als auch ein benutzerdefinierter Servlet MyServlet bereitgestellt werden.

Es ist anfällig, da Spring MVC im Classpath ist, DispatcherServlet und mindestens ein weiterer Servlet gemappt sind – einer von ihnen mit einem nicht-root-pfadbasierten Servlet-Mapping (in diesem Fall MyServlet) – und die Anwendung requestMatchers(String) verwendet, um diese Endpunkte zu schützen.

=== servlet:java-configuration:tomcat

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/tomcat[Dieses Beispiel] stellt eine sichere Anwendung dar, bei der DispatcherServlet auf / (das Standard) bereitgestellt wird.

Es ist nicht anfällig. Obwohl Spring MVC im Classpath ist und DispatcherServlet verwendet wird, ist es auf / bereitgestellt und es gibt keine nicht-root-pfadbasierten Servlet-Mappings.

=== servlet:java-configuration:two-dispatcher-servlets

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/two-dispatcher-servlets[Dieses Beispiel] stellt eine anfällige Anwendung dar, bei der DispatcherServlet sowie ein benutzerdefinierter Servlet MyServlet bereitgestellt werden.

Es ist anfällig, da Spring MVC im Classpath ist, DispatcherServlet und mindestens ein weiterer Servlet gemappt sind – einer von ihnen mit einem nicht-root-pfadbasierten Servlet-Mapping (in diesem Fall einer der beiden DispatcherServlets) – und die Anwendung requestMatchers(String) verwendet, um diese Endpunkte zu schützen.

=== servlet:spring-boot:java:dispatcher-servlet-path

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/dispatcher-servlet-path[Dieses Beispiel] stellt eine anfällige Anwendung dar, bei der DispatcherServlet auf /mvc/* statt auf das Standard-/ bereitgestellt wird.

Es ist anfällig, da Spring MVC im Classpath ist, DispatcherServlet und mindestens ein weiterer Servlet gemappt sind – einer von ihnen mit einem nicht-root-pfadbasierten Servlet-Mapping (in diesem Fall DispatcherServlet) – und die Anwendung requestMatchers(String) verwendet, um diese Endpunkte zu schützen.

=== servlet:spring-boot:java:jetty

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/jetty[Dieses Beispiel] stellt eine sichere Anwendung dar, bei der DispatcherServlet auf / (das Standard) bereitgestellt wird.

Es ist nicht anfällig. Obwohl Spring MVC im Classpath ist und DispatcherServlet verwendet wird, ist es auf / bereitgestellt und es gibt keine nicht-root-pfadbasierten Servlet-Mappings.

=== servlet:spring-boot:java:other-servlets

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/other-servlets[Dieses Beispiel] stellt eine anfällige Anwendung dar, bei der sowohl DispatcherServlet als auch ein benutzerdefinierter Servlet MyServlet bereitgestellt werden.

Es ist anfällig, da Spring MVC im Classpath ist, DispatcherServlet und mindestens ein weiterer Servlet gemappt sind – einer von ihnen mit einem nicht-root-pfadbasierten Servlet-Mapping (in diesem Fall MyServlet) – und die Anwendung requestMatchers(String) verwendet, um diese Endpunkte zu schützen.

=== servlet:spring-boot:java:tomcat

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/tomcat[Dieses Beispiel] stellt eine sichere Anwendung dar, bei der DispatcherServlet auf / (das Standard) bereitgestellt wird.

Es ist nicht anfällig. Obwohl Spring MVC im Classpath ist und DispatcherServlet verwendet wird, ist es auf / bereitgestellt und es gibt keine nicht-root-pfadbasierten Servlet-Mappings.

=== servlet:spring-boot:java:undertow

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/undertow[Dieses Beispiel] stellt eine sichere Anwendung dar, bei der DispatcherServlet auf / (das Standard) bereitgestellt wird.

Es ist nicht anfällig. Obwohl Spring MVC im Classpath ist und DispatcherServlet verwendet wird, ist es auf / bereitgestellt und es gibt keine nicht-root-pfadbasierten Servlet-Mappings.

== Abhilfemaßnahmen

Falls ein Fehler wie der folgende auftritt:

.Bash [source,bash,role="primary"]

This method cannot decide whether these patterns are Spring MVC patterns or not. If this endpoint is a Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise, please use requestMatchers(AntPathRequestMatcher).

sollten Sie ihn befolgen.

[HINWEIS] Die Versionen 5.8.5, 6.0.5, 6.1.2 und 6.2.0-M1 von Spring Security weisen einige Fehlalarme auf. Nun ist das Folgende in vielen Fällen vorübergehend, bis die Versionen 5.8.6, 6.0.6, 6.1.3 und 6.2.0-M2 veröffentlicht werden.

Wie die Fehlermeldung andeutet, besteht die primäre Abhilfemaßnahme darin, einen vollständigen RequestMatcher zu verwenden. Dadurch kann das Servlet-Mapping genauer berücksichtigt werden.

Wenn eine Anwendung beispielsweise einen Servlet unter /my-servlet/* bereitgestellt hat und den Datenverkehr wie folgt autorisiert:

.Java [source,java,role="primary"]

@Bean SecurityFilterChain appSecurity(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorize) -> authorize .requestMatchers("/my-servlet/").hasRole("USER") .requestMatchers("/spring-mvc-controller/").hasRole("USER") .anyRequest().authenticated() ) // ... return http.build(); }

dann sollte die Anwendung stattdessen Folgendes tun:

.Java [source,java,role="primary"]

import static org.springframework.security.web.util.matcher.AntPathRequestMatcher.antMatcher;

@Bean MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) { return new MvcRequestMatcher.Builder(introspector); }

@Bean SecurityFilterChain appSecurity(HttpSecurity http, MvcRequestMatcher.Builder mvc) throws Exception { http .authorizeHttpRequests((authorize) -> authorize .requestMatchers(antMatcher("/my-servlet/*")).hasRole("USER") .requestMatchers(mvc.pattern("/spring-mvc-controller/**")).hasRole("USER") .anyRequest().authenticated() ) // ... return http.build(); }

Oder wenn DispatcherServlet auf einen anderen Pfad bereitgestellt wird, z. B. /spring-mvc/*, dann anstelle von:

.Java [source,java,role="primary"]

@Bean SecurityFilterChain appSecurity(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorize) -> authorize .requestMatchers("/spring-mvc/controller/**")).hasRole("USER") .anyRequest().authenticated() ) // ... return http.build(); }

sollte eine Anwendung Folgendes tun:

.Java [source,java,role="primary"]

@Bean MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) { return new MvcRequestMatcher.Builder(introspector).servletPath("/spring-mvc"); }

@Bean SecurityFilterChain appSecurity(HttpSecurity http, MvcRequestMatcher.Builder mvc) throws Exception { http .authorizeHttpRequests((authorize) -> authorize .requestMatchers(mvc.pattern("/controller/**")).hasRole("USER") .anyRequest().authenticated() ) // ... return http.build(); }

Die Trennung des Servlet-Pfads bei der Konstruktion eines MvcRequestMatcher ist wichtig, um sicherzustellen, dass die Anfrage korrekt zugeordnet wird.

== Branches

In diesem Repository gibt es einen Branch für jedes Minor-Release von Spring Security. Auf diesem Branch gibt es einen Commit für jedes betroffene Beispiel mit der erforderlichen Abhilfemaßnahme.

Zum Beispiel gibt es auf dem 5.8.x-Branch acht Commits, um die acht Beispiele zu reparieren, die eine Abhilfemaßnahme erfordern.

Wenn 5.8.6, 6.0.6, 6.1.3 und 6.2.0-M2 veröffentlicht werden, werden zusätzliche Änderungen an diesen Branches vorgenommen, damit die bewährte Abhilfemaßnahme klar ist.

Tool herunterladen