본문 바로가기
기타

Apache log4j 취약점 Spring boot 패치 방법 gradle

by HmHjj 2021. 12. 14.
728x90
반응형

Sping Boot 에 apache log4j 적용

STS 에 프로젝트에 log4j 가 등록되어 있는지 확인 하자.

Project and External Dependencies 를 활성화하여 log4j 라이브러리를 확인한다. 

log4j-core-2.14.1.jar 파일이 확인 된다. 2.14 면 취약점이 발견 된 버전이다. 

Gradle인 경우 dependencies 에 등록 된 항목을 확인한다. 

안정된 버전을 dependencies 아래에 추가하여 변경해 보자. 

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

 

변경 후 Refresh Gradle Project 를 실행하여 반영해 보자. 

반영 후 변경된 log4j를 확인 한다. 

위 적용 방식 말고 실행 할 때 옵션을 주어 사용하는 방법도 있다.  아래와 같이 적용하면 취약점을 방지할 수 있다고 한다. 

java -Dlog4j2.formatMsgNoLookups=true -jar webserver

 

추가로 spring boot 에서 기본으로 사용하는 SLF4 인터페이스에서 log4j 를 사용하기는 하나 문제가 되는 라이브러리는 log4j-core 라이브러리이기에 slf4는 사용이 가능합니다. 

log4j-slf4j-impl-2.14.1 , log4j-to-slf4j-2.14 , log4j-api 라이브러리는 취약점과 무관합니다. 

 

위에 나온 내용들은 spring boot 블로그에 기재된 정리하여 적어 보았습니다. 자세한 내용은 아래 링크 참조 하세요. 

 

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

 

Log4J2 Vulnerability and Spring Boot

<p>As you may have seen in the news, a new zero-day exploit has been reported against the popular Log4J2 library which can allow an attacker to remotely execute code. The vulnerability has been reported with <a href="https://nvd.nist.gov/vuln/detail/CVE-20

spring.io


Log4j 취약점 검색기

추가로 log4j 가 있는지 확인하는 라이브러리도 있어서 테스트 해보았습니다. 

 

log4j 스캐너 제공 사이트

https://labrador.iotcube.com/

 

사이트에 접속하여 도구다운받기를 누릅니다. 

그럼 jar 파일 하나가 나오는데 이것을 프로젝트 폴더에 복사합니다. 

shell 하나를 띄워 써있는 명령어 대로 실행합니다. 

java -jar LabradorLog4ShellDetector.jar -project webserver

중간에 WARNING 메시지와 함께 취약점이 발견 되었다고 업그레이드 하라고 메시지가 뜹니다. 

 

패치 완료 후 메시지에서는 WARNING 메시지가 없습니다. 

 

728x90
반응형

댓글