Log4j 보안 이슈와 스프링 부트와의 상관 관계
사내에 갑자기 기사 내용을 공유하면서, log4j2에 대한 보안 이슈가 있다며, 모든 프로젝트에 대한 버전업을 진행해야 된다라는 메시지를 봤다.
기사 내용에는 log4j2를 사용하면 제로데이 공격 가능성이 있다라는 내용이었다.
(기사 내용)
하지만 우리는 스프링 부트를 이용해서 프로젝트를 만들고있다.
spring-boot-start-logging은 slf4j라는 로깅 인터페이스를 이용해서 로그를 찍는데, 구현체인 log4j2랑 logback을 라이브러리로 다운받는다.
그리고 구현체는 기본적으로 Logback을 이용한다.
스프링 공식 문서에도 해당 내용은 언급되어있다.
By default, if you use the “Starters”, Logback is used for logging. Appropriate Logback routing is also included to ensure that dependent libraries that use Java Util Logging, Commons Logging, Log4J, or SLF4J all work correctly.
개발쪽 커뮤니티 반응을 보면, 로깅 프레임워크의 관계에 대해 잘 인지하고 있지 못하는 분위기였다.
요즘은 대부분 스프링 부트를 이용하고 logback을 기본적으로 이용하지 않을까싶다.
라이브러리만 다운받아도 공격 대상이 된다라는 건가...?
그래도 우선 보안상 문제가 있는 버전이니, log4j2의 버전을 업그레이드하고 동료들에게 공유했다.
우리는 log4j2를 사용하지 않아서 문제가 없겠지만, 동료님의 얘기대로 혹시 모르니 (log4j를 사용한다던가), 일괄적으로 버전을 변경해야되는 것은 매우 좋은 판단인 거 같다.
추후 스프링 공식 문서에 이번 log4j2 보안 관련 내용이 있길래 읽어보니, 내가 언급한 내용이 있었다.
Spring Boot users are only affected by this vulnerability if they have switched the default logging system to Log4J2
해석: 스프링 부트 유저는 기본 로깅시스템을 log4j2로 변경했을 때만 이 취약점에 영향을 받습니다.
이번 사태에 대한 나의 결론
- 스프링 부트는 기본적으로 Logback을 사용한다.
- log4j2로 변경하지 않는한, 보안 이슈는 없다. 지금 당장 급하게 변경할 필요는 없다.
- 추후 혹시 모를 상황에 대비해서 반드시 빠른 시일내에 버전업을 해두자.
'Spring' 카테고리의 다른 글
Transactional REQUIRES_NEW에 대한 오해 (7) | 2021.12.21 |
---|---|
@Async는 어떤식으로 실행될까? (0) | 2021.08.23 |
Spring AOP self-invocation이 발생하는 이유와 @Transaction 사용시 주의사항 (0) | 2021.08.11 |
EventLister를 활용한 느슨한 결합 및 이벤트 처리. (0) | 2021.07.21 |
ResponseEntity는 왜 사용하는 것이며 @RestControllerAdvice는 무엇일까. (2) | 2021.05.02 |