Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2023-34035-mitigations — Dimostra la vulnerabilità CVE-2023-34035 in Spring Security con applicazioni di esempio vulnerabili e mitigate, insegnando la corretta configurazione del servlet mapping e del request matcher. | Kitploit
Strumenti/GitHubGitHub/jzheaux/cve-2023-34035-mitigations
Analisi delle VulnerabilitàAnalisi del CodiceSicurezza WebConfigurazione ErrataApprendimento e FormazioneSicurezza delle API
GitHubjzheaux/cve-2023-34035-mitigations

cve-2023-34035-mitigations

Dimostra la vulnerabilità CVE-2023-34035 in Spring Security con applicazioni di esempio vulnerabili e mitigate, insegnando la corretta configurazione del servlet mapping e del request matcher.

Vedi Repository
41103 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Questa repository è un insieme di esempi per dimostrare le configurazioni in cui le applicazioni possono essere vulnerabili a https://spring.io/security/cve-2023-34035[CVE-2023-34035].

Un'applicazione è vulnerabile quando sono vere tutte le seguenti condizioni:

Spring MVC è nel classpath

DispatcherServlet e almeno un'altra servlet sono mappate; una di esse con una mappatura servlet basata sul percorso (ad esempio, /path/**)

L'applicazione usa requestMatchers(String) per fare riferimento agli endpoint la cui mappatura servlet è della forma /path/**

== Esempi

C'è un insieme di esempi che usano Spring Boot e un insieme che non lo usa.

Gli esempi che contengono test che falliscono sono vulnerabili a CVE-2023-34035. Gli esempi i cui test passano non sono vulnerabili.

In tutti i casi, ciascuno di questi esempi contiene lo stesso errore di mitigazione di Spring Security, anche se si noti che tale mitigazione è temporanea in molte circostanze, in attesa del prossimo rilascio di manutenzione.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/dispatcher-servlet-path[Questo esempio] rappresenta un'applicazione vulnerabile in cui DispatcherServlet è distribuita su /mvc/* invece della / predefinita.

È vulnerabile poiché Spring MVC è nel classpath, DispatcherServlet e almeno un'altra servlet sono mappate -- una di esse con una mappatura servlet basata sul percorso non-root (in questo caso, DispatcherServlet), e l'applicazione usa requestMatchers(String) per proteggere quegli endpoint.

=== servlet:java-configuration:jetty

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/jetty[Questo esempio] rappresenta un'applicazione sicura in cui DispatcherServlet è distribuita su / (la predefinita).

Non è vulnerabile. Sebbene Spring MVC sia nel classpath e DispatcherServlet sia in uso, è distribuita su / e non ci sono mappature servlet basate sul percorso non-root.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/other-servlets[Questo esempio] rappresenta un'applicazione vulnerabile in cui DispatcherServlet è distribuita insieme a una servlet personalizzata MyServlet.

È vulnerabile poiché Spring MVC è nel classpath, DispatcherServlet e almeno un'altra servlet sono mappate -- una di esse con una mappatura servlet basata sul percorso non-root (in questo caso, MyServlet), e l'applicazione usa requestMatchers(String) per proteggere quegli endpoint.

=== servlet:java-configuration:tomcat

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/tomcat[Questo esempio] rappresenta un'applicazione sicura in cui DispatcherServlet è distribuita su / (la predefinita).

Non è vulnerabile. Sebbene Spring MVC sia nel classpath e DispatcherServlet sia in uso, è distribuita su / e non ci sono mappature servlet basate sul percorso non-root.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/java-configuration/two-dispatcher-servlets[Questo esempio] rappresenta un'applicazione vulnerabile in cui DispatcherServlet è distribuita insieme a una servlet personalizzata MyServlet.

È vulnerabile poiché Spring MVC è nel classpath, DispatcherServlet e almeno un'altra servlet sono mappate -- una di esse con una mappatura servlet basata sul percorso non-root (in questo caso, una delle due DispatcherServlet), e l'applicazione usa requestMatchers(String) per proteggere quegli endpoint.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/dispatcher-servlet-path[Questo esempio] rappresenta un'applicazione vulnerabile in cui DispatcherServlet è distribuita su /mvc/* invece della / predefinita.

È vulnerabile poiché Spring MVC è nel classpath, DispatcherServlet e almeno un'altra servlet sono mappate -- una di esse con una mappatura servlet basata sul percorso non-root (in questo caso, DispatcherServlet), e l'applicazione usa requestMatchers(String) per proteggere quegli endpoint.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/jetty[Questo esempio] rappresenta un'applicazione sicura in cui DispatcherServlet è distribuita su / (la predefinita).

Non è vulnerabile. Sebbene Spring MVC sia nel classpath e DispatcherServlet sia in uso, è distribuita su / e non ci sono mappature servlet basate sul percorso non-root.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/other-servlets[Questo esempio] rappresenta un'applicazione vulnerabile in cui DispatcherServlet è distribuita insieme a una servlet personalizzata MyServlet.

È vulnerabile poiché Spring MVC è nel classpath, DispatcherServlet e almeno un'altra servlet sono mappate -- una di esse con una mappatura servlet basata sul percorso non-root (in questo caso, MyServlet), e l'applicazione usa requestMatchers(String) per proteggere quegli endpoint.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/tomcat[Questo esempio] rappresenta un'applicazione sicura in cui DispatcherServlet è distribuita su / (la predefinita).

Non è vulnerabile. Sebbene Spring MVC sia nel classpath e DispatcherServlet sia in uso, è distribuita su / e non ci sono mappature servlet basate sul percorso non-root.

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

https://github.com/jzheaux/cve-2023-34035-mitigations/tree/main/servlet/spring-boot/java/undertow[Questo esempio] rappresenta un'applicazione sicura in cui DispatcherServlet è distribuita su / (la predefinita).

Non è vulnerabile. Sebbene Spring MVC sia nel classpath e DispatcherServlet sia in uso, è distribuita su / e non ci sono mappature servlet basate sul percorso non-root.

== Mitigazioni

Nel caso in cui si riceva un errore come il seguente:

.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).

[NOTE] Le versioni 5.8.5, 6.0.5, 6.1.2 e 6.2.0-M1 di Spring Security hanno alcuni falsi positivi. Si noti che in molti casi quanto segue è temporaneo, in attesa del rilascio di 5.8.6, 6.0.6, 6.1.3 e 6.2.0-M2.

Come accennato dal messaggio di errore, la mitigazione principale consiste nell'usare un RequestMatcher completo. Questo serve a tenere meglio in considerazione la mappatura servlet.

Ad esempio, se un'applicazione ha una servlet distribuita su /my-servlet/* e autorizza quel traffico in questo modo:

.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(); }

allora, l'applicazione dovrebbe invece fare:

.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); }

Scarica lo strumento