Log4Shell문제와 Spring Boot

CID.Y·2021년 12월 13일
0

트러블슈팅

목록 보기
1/1

주말동안 Log4Shell 문제로 여러 커뮤니티에서 이슈가 되었고 이를 기록하는 차원에서 기록합니다

문제 발생

Log4Shell 이슈는 이미 너무 많은 곳에서 이야기 해 주고 있으니 아래 링크를 참고
Apache Log4j 2 원격코드 실행(RCE) 취약점 주의! (CVE-2021-44228)

해당 이슈에 영향받는 log4j 버전

- 2.0 ~ 2.14.1 (2.15.0 미만 버전)
 + org.apache.logging.log4j:log4j-api < 2.15.0
 + org.apache.logging.log4j:log4j-core < 2.15.0

결론

결과적으로 스프링 부트를 사용하는 경우 기본 로그 서비스 사용 + 사용자 입력을 통한 log4j-core를 사용하지 않는 경우라면 별도의 조치는 필요 없음 이라고 하며 spring.io에 올라온 글을 참조하시면 됩니다
log4j2-vulnerability-and-spring-boot

별다른 조치가 필요 없지만 강제 버전업이 필요하다면 아래와 같이 진행하면 됩니다

gradle
// log4shell 문제 예방용 강제 업데이트
// https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot
ext['log4j2.version'] = '2.15.0'

작업 진행 과정 정리

현재 상황

현재 개발중인 프로젝트는 스프링 부트를 사용하고 있으며 기본 로그 시스템(spring-boot-starter-logging)을 사용하고 있습니다(spring boot 2.2.x)

간략하게 스프링 부트는 slf4j어댑터를 통해 로그를 기록하고 해당 인터페이스의 구현체로 logback을 사용
SLF4J
스프링 부트 종속성

종속성 그래프 조회

별도의 변경(구현체 교체)이 없었기에 연관 문제 없을것이라 생각했지만 종속성 그래프에서 log4j가 발견되었고 이는 해당 취약점 공격을 받을 수 있는 버전으로 확인

영향받는 버전
- 2.0 ~ 2.14.1 (2.15.0 미만 버전)
 + org.apache.logging.log4j:log4j-api < 2.15.0
 + org.apache.logging.log4j:log4j-core < 2.15.0

버전업을 해야 하나? 고민했지만 검색을 통해 스프링 공홈에서 다음과 같이 어떻게 대응할지 가르쳐 주고 있습니다

Spring Boot users are only affected by this vulnerability if they have switched the default logging system to Log4J2. The log4j-to-slf4j and log4j-api jars that we include in spring-boot-starter-logging cannot be exploited on their own. Only applications using log4j-core and including user input in log messages are vulnerable.

정리 & 조치

기본 로그 서비스 사용 + 사용자 입력을 통해 log4j-core를 사용하지 않는 경우라면 별도의 조치는 필요 없음

log4j2-vulnerability-and-spring-boot

profile
Do Infinity And Beyond

0개의 댓글