목차
추가 업데이트 3(CVE-2021-44832)
Apache Log4j 2에서 발생하는 원격코드 실행 취약점 (CVE-2021-44832) 발견되었습니다.
2.17.1 버전으로 업데이트해야 합니다. 아래의 링크를 확인해주세요.
추가 업데이트 2(CVE-2021-45105)
Logj4 2.16.0 버전에서 JNDI Lookup pattern 취약점이 발견되었습니다.
2.17.0 버전으로 업데이트해야 합니다. 아래의 링크를 확인해주세요.
https://veneas.tistory.com/entry/Spring-Boot-스프링-부트-Log4J2-취약점-조치-CVE-2021-45105
추가 업데이트 1(CVE-2021-45046)
취약점(CVE-2021-44228)을 해결하기 위한 조치로 업데이트 된 2.15 버전이 불완전 한 것으로 나타나서 2.16 버전으로 업데이트해야 합니다. 아래의 링크를 확인 해주세요.
0. 조치 환경
- Spring Boot 2.5.6 (Gradle Project)
- JDK 11(Java 11)
- IntelliJ
[build.gradle = dependencies]
필자의 프로젝트의 dependencies는 다음과 같습니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-quartz'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
implementation 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
필자의 log4j2 사용중인 버전
1. 취약점 내용
- Apache Log4j 2*에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)
- Log4J2 라이브러리에 대해 해커(공격자)가 원격으로 코드를 실행할 수 있는 새로운 제로 데이 공격이 보고되었습니다.
2. 조치 방안
- 이 취약점은 Log4j-core jar에 대해 CVE-2021-44228에서 보고되었으며 Log4J v2.15.0에서 수정되었습니다.
- 여러 방안이 존재하지만 필자는 2.15 버전으로 업데이트 했습니다.
3. Log4j2 버전 업데이트
build.gradle 파일에 다음과 같이 log4j2 2.15와 관련 의존성을 추가해 줍니다.
dependencies {
// 추가
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.15.0'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32'
implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.32'
}
또는 log4j2 starter를 주석 처리하고 log4j2 2.15와 관련 의존성을 추가해 줍니다.
dependencies {
// implementation 'org.springframework.boot:spring-boot-starter-log4j2'
// 추가
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.15.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.15.0'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32'
implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.32'
}
4. 확인
- IntelliJ에서 gradle의존성을 확인해보면 log4j2의 버전이 2.15.0로 변경된 것을 알 수 있습니다.
- Spring Boot 프로젝트 실행 시 콘솔에 찍히는 로그도 버전이 바뀐 것을 확인 할 수 있습니다. (2.15
'Backend > Spring' 카테고리의 다른 글
[Spring Boot] 스프링 부트 Logback 취약점 조치 (CVE-2021-42550) (0) | 2021.12.18 |
---|---|
[Spring Boot] 스프링 부트 Log4J2 추가 취약점 조치 (CVE-2021-45046) (0) | 2021.12.15 |
[Spring Boot] Filter 를 이용하여 Request Body 핸들링 (HttpServletRequestWrapper) (0) | 2021.12.09 |
[Spring Boot] REST API 예외처리(Response Json) (0) | 2021.12.01 |
[Spring Boot] 윈도우 스프링 부트 Gradle 프로젝트 jar 빌드 방법 (0) | 2021.11.30 |