반응형
Spring Framework WebMVC는 Web Application을 개발하는데 사용되는 MVC(Model-View-Controller) 제공하는 Package 입니다.
해당 Package에서 경로 기반 인증 로직을 우회할 수 있는 취약점이 발견되었으며,해당 취약점은 CVE-2023-20860이라는 번호를 부여받았습니다.
취약점 상세 내용
Spring Security 설정에서 mvcRequestMatcher를 사용하여 경로 기반의 접근 제어를 수행할 수 있습니다.
아래의 예제 코드를 보면, mvcMatchers 메서드를 이용하여 admin/** 경로에 대한 접근 제어를 추가하고 있습니다.그런데 Spring Security와 Spring MVC에서 **를 해석하는 과정이 달라 경로를 기반으로한 접근 제어를 우회할 수 있습니다.
(정확한 내용은 아님)
더보기
Java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomUserDetailsService userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
// Vunlerabilty Point
.mvcMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
}
Kotlin
@Configuration
@EnableWebSecurity
class SecurityConfig(private val userDetailsService: CustomUserDetailsService) : WebSecurityConfigurerAdapter() {
@Throws(Exception::class)
override fun configure(http: HttpSecurity) {
http
.authorizeRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
// Vunlerability Point
.mvcMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.permitAll()
}
@Throws(Exception::class)
override fun configure(auth: AuthenticationManagerBuilder) {
auth.userDetailsService(userDetailsService)
}
취약점 영향 받는 버전
구분 | 취약 버전 | 패치 버전 |
6.x.x | 6.0.0 ~ 6.0.6 | 6.0.7 <= |
5.3.x | 5.3.0 ~ 5.3.25 <= | 5.3.26 <= |
※ 5.3 보다 이전 버전은 영향을 받지 않음
취약점 탐지 및 조치 방법
- Spring Framework의 버전 정보가 영향을 받는 버전인지 확인
- 만약 사용하고 있을 경우, 취약한 버전을 사용하고 있을 경우 mvcMatchers 메서드를 사용하고 있는 지 확인
- 만약 사용하고 있을 경우, mvcMatchers 대신 antMatchers 사용 또는 Spring Framework를 패치 버전으로 업데이트
참조 문서
반응형
'Hack > Web' 카테고리의 다른 글
[CVE-2023-0842] xml2js Prototype Pollution (0) | 2023.05.13 |
---|---|
BitB (Browser in the Browser) 공격 (1) | 2023.04.23 |
[Kotlin] Use-Site Target이 존재하지 않을 경우 검증 우회 가능 (0) | 2023.02.21 |
Click Jacking이란? (0) | 2023.02.12 |
npm 취약점 점검 도구 - npm audit (0) | 2022.11.16 |
댓글