
Demonstriert CVE-2025-22235 Spring Boot Authentifizierungsumgehung durch Fehlkonfiguration von EndpointRequest.to(). Beinhaltet Umgebungseinrichtung, Reproduktionsschritte, Code-Analyse und Anleitung zur Behebung für Sicherheitsforschung und -bildung.
CVE-2025-22235 ist eine Sicherheitslücke in Spring Boot, bei der die Methode EndpointRequest.to() bei der Konfiguration von Sicherheitsregeln möglicherweise einen fehlerhaften Matcher erzeugt, was dazu führt, dass der Sicherheitsschutz für nicht exponierte Actuator-Endpunktpfade (z.B. /null/**) unwirksam wird.
Wenn mit EndpointRequest.to("health") Sicherheitsregeln konfiguriert werden, und der health-Endpunkt nicht in management.endpoints.web.exposure.include konfiguriert ist, erzeugt Spring Boot einen fehlerhaften Pfad-Matcher /null/**, wodurch alle Anfragen unter diesem Pfad die Authentifizierungsprüfung umgehen.
management.endpoints.web.exposure.include=info (nur info-Endpunkt exponiert, health-Endpunkt nicht exponiert)EndpointRequest.to("health") auf einen nicht exponierten Endpunkt verwiesenmvn spring-boot:run
Direkter Zugriff auf http://localhost:8080/null ohne Anmeldung möglich, was die Authentifizierungsumgehung beweist.
Der Zugriff auf andere geschützte Endpunkte wie http://localhost:8080/info erfordert eine Anmeldung.
.requestMatchers(EndpointRequest.to("health")).permitAll() // 漏洞触发点
.requestMatchers("/null").authenticated() // 应该受保护但被绕过
@GetMapping("/null")
public String sensitiveEndpoint() {
return "未登录看到此页面,说明存在CVE-2025-22235认证绕过漏洞!";
}
Upgrade auf folgende behobene Versionen:
EndpointRequest.to() referenzierte Endpunkt aktiviert und über das Web exponiert ist/nullDie Grundursache der Schwachstelle liegt darin, dass die Methode EndpointRequest.to() bei der Verarbeitung nicht exponierter Endpunkte einen fehlerhaften Pfad-Matcher erzeugt. Wenn der Endpunktname nicht in management.endpoints.web.exposure.include konfiguriert ist, erstellt Spring Boot ein Pfadmuster, das null enthält, wodurch die Sicherheitsregeln unwirksam werden.
Dieses Demonstrationsprojekt dient ausschließlich Sicherheitsforschungs- und Bildungszwecken. Bitte nicht in Produktionsumgebungen verwenden. Die Verwendung dieses Projekts erfolgt auf eigenes Risiko.