Spring4Shell의 취약점 발견으로 스프링 core 버젼을 올려야 함.
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
1. gradlew upgrade
기존 gradlew 4.x로 낮은 버젼을 사용했다. 스프링부트 2.6.6(스프링 프레임워크 5.3.18)에서는 최소 gradle 6.x대 및 버젼 7을 요구함.
2. annotationProcessor 추가
what is annotationProcessor
gradle 버젼이 올라가면서 annotationProcessor이 등장. Annotation 기반 코드를 Compiler에게 알려줌으로써 처리하는데 도움을 줌.
RunTime annotation이 아님.
즉, Lombok을 컴파일 하는데 내주적으로 Annotation Proccessing을 통해서 컴파일을 하기때문에 다음과 같이 추가.
annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
3. errorController 변경, default-servlet 설정
defalut-servlet이란 앞서 작성된 servlet에서 받은 요청을 처리할 수 없을 경우, default-servlet으로 처리할 수 있음.
- 사내에서는 errorController로 별도 error 페이지를 보여줌.
버젼을 올리면서 default-servlet 설정을 별도로 해줘야 함.
application.properties
server.servlet.register-default-servlet=true
errorController 역시 버젼이 올라가면서 override 해야하는 getErrorPath가 사라졌다. 그래도 동작하는데는 문제가 없다.
4. objectMapper 변경
objectMapper가 defaultObjectMapper로 변경됨
5. gradle.build에서 war 작업 skip
Spring boot 2.5 이전에는 war or jar tasks are disabled이라고 명시 되어있음.
하지만 2.5 이후부터 별도의 설정이 없으면 war, jar 작업이 포함되어 plain-war 또는 plain-jar가 생성.
war {
enabled = false
}
REF
https://develop-im.tistory.com/9
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
'spring' 카테고리의 다른 글
[Gradle]Multi Application.properties 사용하기 (1) | 2024.03.23 |
---|---|
Static Dispatch, Dynamic Method Dispatch (0) | 2022.03.31 |
Post로 전달된 json Body 여러번 읽기 (0) | 2021.09.12 |
Spring-Kafka에서 읽은 Record 개수 알기 (0) | 2021.07.13 |