개발/Backend

[Spring Boot] Log4J2 shell 취약점 대응하기

HuiYa 2021. 12. 13. 10:13

이 글을 보는 분들이라면 다들 알겠지만 Log4J2 라이브러리에 취약점이 보고되었다.

참고: CVE-2021-44228

 

스프링부트는 기본적으로 기본 로그 시스템을 Log4J2로 변경했을때만 해당이 된다고 한다.

 

취약점에 대한 뉴스를 접하자마자 github의 pom.xml부터 확인했었고,

해당사항이 없는 걸 보고 안심한채 주말내내 불구경하는 마음으로 구경했었는데...

 

출근 후 확인해보니 디펜던시 걸린 다른 라이브러리에서 Log4J2를 사용하고 있었다.

 

./mvnw dependency:list | select-string -pattern log4j

선생님 왜 거기 계세요
이것만큼 내 심정을 잘 표현하는 짤이 없다

나에게 사용하고 있는 라이브러리의 업데이트를 기다릴 시간따윈 없다.

강제로 버전을 올리는 방법을 알아보자

1. Maven 사용시

<properties>
    <log4j2.version>2.15.0</log4j2.version>
</properties>

pom.xml의 properties를 설정하여 강제로 버전을 올려주면 된다.

2. Gradle 사용시

ext['log4j2.version'] = '2.15.0'

대부분은 log4j2.version을 설정하는 것으로 충분하다고 한다.

3. 버전 업데이트가 불가능할 경우

 log4j2.formatMsgNoLookups=true

log4j2.properties에 위와 같은 옵션을 추가해도 된다고 한다.

java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar

혹은 프로젝트 실행시 위와 같은 옵션으로 실행하면 된다.

 

결과

빌드 후 확인해보니 Log4J2가 정상적으로 업데이트 된 모습을 볼 수 있다.

 

 

출처

https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot