
Démontre le contournement d'authentification Spring Boot CVE-2025-22235 via une mauvaise configuration de EndpointRequest.to(). Comprend la configuration de l'environnement, les étapes de reproduction, l'analyse du code et des conseils de correction pour la recherche et l'éducation en sécurité.
CVE-2025-22235 est une vulnérabilité de sécurité Spring Boot concernant la méthode EndpointRequest.to() qui peut générer un matcher incorrect lors de la configuration des règles de sécurité, entraînant une protection défaillante pour les chemins d'endpoints d'actuator non exposés (tels que /null/**).
Lorsque EndpointRequest.to("health") est utilisé pour configurer des règles de sécurité, si l'endpoint n'est pas configuré dans , Spring Boot génère un matcher de chemin erroné , ce qui permet à toutes les requêtes sur ce chemin de contourner la vérification d'authentification.
healthmanagement.endpoints.web.exposure.include/null/**management.endpoints.web.exposure.include=info (seul l'endpoint info est exposé, health ne l'est pas)EndpointRequest.to("health") dans la configuration de sécurité pour référencer un endpoint non exposémvn spring-boot:run
Accédez directement à http://localhost:8080/null sans connexion, la page s'affiche, prouvant l'existence du contournement d'authentification.
L'accès à d'autres endpoints protégés comme http://localhost:8080/info nécessite une connexion.
.requestMatchers(EndpointRequest.to("health")).permitAll() // Point de déclenchement de la vulnérabilité
.requestMatchers("/null").authenticated() // Devrait être protégé mais est contourné
@GetMapping("/null")
public String sensitiveEndpoint() {
return "Vous voyez cette page sans être connecté, ce qui indique la présence de la vulnérabilité de contournement d'authentification CVE-2025-22235!";
}
Mettez à jour vers les versions corrigées suivantes :
EndpointRequest.to() est activé et exposé via le Web/nullLa cause racine de la vulnérabilité est que la méthode EndpointRequest.to() génère un matcher de chemin erroné lors du traitement d'un endpoint non exposé. Lorsque le nom de l'endpoint n'est pas configuré dans management.endpoints.web.exposure.include, Spring Boot crée un motif de chemin contenant null, ce qui rend les règles de sécurité inopérantes.
Ce projet de démonstration est destiné uniquement à des fins de recherche et d'éducation en sécurité. Ne l'utilisez pas en environnement de production. L'utilisation de ce projet se fait aux risques et périls de l'utilisateur.