
Grails Spring Security Core 플러그인의 CVE-2022-41923 권한 관리 취약점에 대한 해결 방법 가이드로, Annotation, InterceptUrlMap 및 Requestmap 구성에 대한 패치된 필터 정의를 제공합니다.
패치되지 않은 Grails Spring Security Core (GSSC) 플러그인에서 발견된 취약점 CVE-2022-41923은 부적절한 권한 관리로 이어질 수 있습니다. 이 저장소는 이 문제를 해결하는 방법을 설명합니다.
패치되지 않은 버전의 플러그인을 사용 중인 경우, 패치된 버전으로 업그레이드할 것을 강력히 권장합니다. 즉시 업그레이드할 수 없는 경우, 이 문서에 설명된 해결 방법을 구현하는 것이 좋습니다. 이는 특히 GSSC 플러그인 버전 2.x를 사용하는 경우 중요합니다. 버전 2.x에는 패치를 사용할 수 없기 때문입니다.
해결 방법을 올바르게 구성하려면 다음을 알아야 합니다:
애플리케이션에서 사용하는 GSSC 플러그인의 버전. build.gradle 파일에서 버전 번호를 확인하세요. (Grails 2.x의 경우 BuildConfig.groovy 파일에서 확인).
사용 중인 보안 구성 유형: 즉, grails.plugin.springsecurity.securityConfigType의 구성 값
참고: 아래 모든 지침과 구성에서 demo 패키지가 사용됩니다. 이 패키지를 애플리케이션에 맞게 적절히 변경하고 패치된 소스 파일을 배치할 위치를 변경하세요.
보안 구성 유형에 따라 필요한 해결 방법 클래스를 결정하세요.
| 구성 값 | 해결 방법 클래스 |
|---|---|
Annotation | PatchedAnnotationFilterInvocationDefinition |
InterceptUrlMap | PatchedInterceptUrlMapFilterInvocationDefinition |
Requestmap |
해당 소스 파일을 src/main/groovy 소스 트리에 복사하세요.
마지막으로 application.groovy 구성 파일에 다음 구성을 추가하고, PatchedAnnotationFilterInvocationDefinition를 필요한 해결 방법 클래스로 대체하세요.
grails.plugin.springsecurity.objectDefinitionSourceBeanClass = 'demo.PatchedAnnotationFilterInvocationDefinition'
위와 같이 보안 구성 유형에 따라 필요한 해결 방법 클래스를 결정하세요. 해당 소스 파일을 src/groovy 소스 트리에 복사하세요. 그런 다음 애플리케이션의 보안 구성 유형에 따라 빈 구성을 편집하세요.
보안 구성 유형 Annotation을 사용하는 경우, grails-app/conf/spring/resources.groovy를 편집하여 다음을 포함하세요:
import demo.PatchedAnnotationFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedAnnotationFilterInvocationDefinition) {
application = ref('grailsApplication')
grailsUrlConverter = ref('grailsUrlConverter')
responseMimeTypesApi = ref('responseMimeTypesApi')
boolean lowercase = conf.controllerAnnotations.lowercase
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... 기존 빈 구성 ...
}
보안 구성 유형 InterceptUrlMap을 사용하는 경우, grails-app/conf/spring/resources.groovy를 편집하여 다음을 포함하세요:
import demo.PatchedInterceptUrlMapFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedInterceptUrlMapFilterInvocationDefinition) {
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... 기존 빈 구성 ...
}
보안 구성 유형 Requestmap을 사용하는 경우, grails-app/conf/spring/resources.groovy를 편집하여 다음을 포함하세요:
import demo.PatchedRequestmapFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedRequestmapFilterInvocationDefinition) {
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... 기존 빈 구성 ...
}
이 취약점에 대한 추가 정보는 Grails 블로그 게시물을 참조하세요.
토론 및 질문은 이 Grails Spring Security Core 플러그인의 GitHub 이슈로 보내주세요.
PatchedRequestmapFilterInvocationDefinition