상세 컨텐츠

본문 제목

스프링 로그 CVE-2021-44228 취약점 보안패치

JSP·자바·코틀린

by 김일국 2021. 12. 12. 13:49

본문

오늘 네이버 뉴스에 아파치 log4j 보안취약점에 대해서 나와서 긴급히 프로젝트 2개의 로그 모듈을 업데이트 했습니다.

- KISA 인터넷 보호나라 : https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389 

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

참고로, 스프링 부트는 기본으로 내장된 로그백 Logback 모듈을 사용하기 때문에 기본으로 사용하면 문제 없다.

 - 로그백이란? 자바 오픈소스 로깅 프레임워크,  SLF4J(Simple Logging Facade퍼사드 For Java)의 구현체
 - 스프링 부트의 기본으로 설정되어 있어서 사용시 별도로 라이브러리를 추가하지 않아도 된다.
 - log4j, log4j2 등과 성능을 비교했을 때에도 logback이 더 훌륭한 성능을 보여준다.
 - spring-boot-starter-web 안에 spring-boot-starter-logging에 구현체가 있다.
- 참고로, 스프링 부트에서 그래들 빌드를 사용시 log4j2 를 사용한다면 아래 처럼 설정한다

//그래들 사용시
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
...
}
configurations {
    all {
      exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    }
}

- 아래 스프링의 메이븐빌드사용 시 pom.xml 소스 추가(기존 log4j 태그부분은 주석처리)

<!-- CVE-2021-44228 취약점 보안패치ㅣlog4j-1.2.15에서 log4j2로 -->
		<dependency>
		  <groupId>org.apache.logging.log4j</groupId>
		  <artifactId>log4j-api</artifactId>
		  <version>2.15.0</version>
		</dependency>
		<dependency>
		  <groupId>org.apache.logging.log4j</groupId>
		  <artifactId>log4j-core</artifactId>
		  <version>2.15.0</version>
		</dependency>
		<dependency>
		  <groupId>org.apache.logging.log4j</groupId>
		  <artifactId>log4j-jcl</artifactId>
		  <version>2.15.0</version>
		</dependency>
		<dependency>
		  <groupId>org.apache.logging.log4j</groupId>
		  <artifactId>log4j-slf4j-impl</artifactId>
		  <version>2.15.0</version>
		</dependency>

- 아래 log4j2.xml 파일 추가(로그 출력 레벨-TRACE > DEBUG > INFO > WARN > ERROR > FATAL 정의파일, 기존파일명은 log4j.xml 임)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="org.apache.log4j.xml" level="info"/>
    <Root level="debug">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>

기술참조1: https://dailylifecoding.tistory.com/entry/Java-%EB%A1%9C%EA%B7%B8Log%EC%9D%84-%EC%9C%84%ED%95%9C-SLF4J-Logback

수정 전 소스: org.apache.log4j 1.2.15 (아래)

수정 후 소스: org.apache.logging.log4j 버전 2.15.0(아래)

작업소스1: https://github.com/miniplugin/kimilguk

결과URL: https://kimilguk.herokuapp.com/

작업소스2: https://github.com/miniplugin/kimilguk-spring5

결과URL: https://kimilguk-spring5.herokuapp.com/

기술참조1: https://deeplify.dev/back-end/spring/logging

기술참조2: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=writer0713&logNo=221449871510 

 

관련글 더보기

댓글 영역