Gradle] Log4J 2 이슈에 따른 spring-boot-starter-logging 제거 및...

Gradle] Log4J 2 이슈에 따른 spring-boot-starter-logging 제거 및...

- 실습 프로젝트 수준에서만 참고

- 실무 에서는 테스트 필요

최근 Apache Log4j 2 취약점이 발견되어 이슈가 되고 있습니다. 며칠 전만 해도 2.15.0버전으로 업데이트를 해야한다고 했는데, 2.15.0도 해당 취약점에 대해 특정 구성에서 불완전한 것으로 나타났다고 합니다. 그래서 2.16.0 버전으로 업데이트하면 가장 간단하게 해결이 된다고 하며, 검색해보면 Java 8의 경우 업데이트 외에도 다른 방법이 제공이 되고 있습니다.

[ 참고 ] https://nvd.nist.gov/vuln/detail/CVE-2021-45046

Spring Boot로 실습 프로젝트를 생성하는 도중

spring-boot-starter에 'logging > log4j:log4j-to-slf 4j:2.13.2' 가 생성되는 것을 보았고, 아직 Spring Boot는 익히고 있는 초기 단계라 이슈에 해당하는 부분인지는 모르겠지만, 버전 업을 해보기로 하였습니다.

build.gradle

1. build.gradle 파일의 dependencies에 2.16.0버전의 log4j를 추가하였습니다.

implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.16.0' implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.16.0' implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.16.0' implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.16.0'

그러나, 추가를 해서는 기존 버전의 log4j가 제거되지 않았습니다.

그렇기 때문에, 추가적으로 기존 버전을 제거해주어야 했습니다.

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' exclude module: 'spring-boot-starter-logging' implementation 'org.springframework.boot:spring-boot-starter-validation' exclude module: 'spring-boot-starter-logging' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' exclude module: 'spring-boot-starter-logging' implementation 'org.springframework.boot:spring-boot-starter-web' exclude module: 'spring-boot-starter-logging'

2. 이와 같이 exclude module을 통해서 logging 모듈을 제외하도록 설정하였는데, 처음에는 web에만 적용했다가 thymeleaf에도 logging이 있는 것을 확인하여, 전체에 동일한 설정을 추가하였습니다.

Gradle 탭

이를 통해서 기존 log4j 버전은 사라지고, 2.16.0버전의 log4j만 남는 것을 확인할 수 있었습니다.

- 버전 정보 -

IntelliJ IDEA 2021.3

Spring Boot 2.4.1

from http://devlifetestcase.tistory.com/4 by ccl(A) rewrite - 2021-12-15 18:01:23