
CVE-2025-22235 Spring Boot 인증 우회를 `EndpointRequest.to()` 설정 오류를 통해 시연합니다. 환경 설정, 재현 단계, 코드 분석, 보안 연구 및 교육을 위한 수정 지침을 포함합니다.
CVE-2025-22235는 Spring Boot 보안 취약점으로, EndpointRequest.to() 메서드가 보안 규칙을 구성할 때 잘못된 매처를 생성하여 노출되지 않은 액추에이터 엔드포인트 경로(예: /null/**)의 보안 보호가 무효화될 수 있습니다.
EndpointRequest.to("health")를 사용하여 보안 규칙을 구성할 때, health 엔드포인트가 management.endpoints.web.exposure.include에 구성되지 않은 경우 Spring Boot는 잘못된 경로 매처 /null/**를 생성하여 해당 경로 아래의 모든 요청이 인증 검사를 우회하게 됩니다.
management.endpoints.web.exposure.include=info (info 엔드포인트만 노출, health 엔드포인트는 노출되지 않음)EndpointRequest.to("health")를 사용하여 노출되지 않은 엔드포인트를 참조합니다.mvn spring-boot:run
http://localhost:8080/null에 직접 접근하면 로그인 없이 접근 가능하며, 인증 우회 취약점이 존재함을 증명합니다.
http://localhost:8080/info와 같은 다른 보호된 엔드포인트에 접근하면 로그인이 요구됩니다.
.requestMatchers(EndpointRequest.to("health")).permitAll() // 취약점 트리거 지점
.requestMatchers("/null").authenticated() // 보호되어야 하지만 우회됨
@GetMapping("/null")
public String sensitiveEndpoint() {
return "로그인하지 않고 이 페이지를 보았다면 CVE-2025-22235 인증 우회 취약점이 존재함을 의미합니다!";
}
다음 수정 버전으로 업그레이드:
EndpointRequest.to()가 참조하는 엔드포인트가 활성화되어 웹을 통해 공개되었는지 확인/null 경로로의 요청 처리 방지취약점의 근본 원인은 EndpointRequest.to() 메서드가 노출되지 않은 엔드포인트를 처리할 때 잘못된 경로 매처를 생성하기 때문입니다. 엔드포인트 이름이 management.endpoints.web.exposure.include에 구성되지 않은 경우 Spring Boot는 null이 포함된 경로 패턴을 생성하여 보안 규칙이 무효화됩니다.
본 데모 프로젝트는 보안 연구 및 교육 목적으로만 사용되며, 프로덕션 환경에서 사용하지 마십시오. 이 프로젝트 사용에 따른 위험은 사용자가 감수합니다.