Log4j 버전 확인하는 방법(Log 4j 취약점 해결 방법)

Log4j 버전 확인하는 방법(Log 4j 취약점 해결 방법)

아파치(Apahce) 로그(Log)4j에서 컴퓨터 역사사상 최악의 치명적인 취약점(CVE-2021-44228)발견되어 주말부터 어제 그리고 오늘 전세계가 난리다.

과학기술정보통신부는 ‘아파치 로그4j 2’ 서비스에 대한 보안취약점이 발견됨에 따라 긴급 보안 업데이트를 권고했다


“공격자가 이번 취약점을 악용할 경우, 공격자의 목표가 된 컴퓨터나 서버에 대한 광범위한 해킹 및 조작이 가능하다”

 


□ 주요 내용
 o Apache Log4j 2*에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)[2]
   * 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티

□ 영향을 받는 버전
 o Apache Log4j 2
   – 2.0-beta9 ~ 2.14.1 모든버전
 o Apache Log4j 2를 사용하는 제품
    ※ 참고 사이트 [4]를 확인하여 해당 제품을 이용 중일 경우, 해당 제조사의 권고에 따라 패치 또는 대응 방안 적용
 

□ 전자정부 표준프레임워크(eGovFrame) 사용시 영향을 받는 버전 :
– apache log4j 2.0-beta9 ~ 2.14.1 모든버전
* 표준프레임에서 각 버전별 최초 배포되는 log4j의 버전은 다음과 같습니다.
—————————-
3.0 : Log4j 2.0
3.1 : Log4j 2.0
3.5 : Log4j 2.1
3.6 : Log4j 2.5
3.7 : Log4j 2.8.2
3.8 : Log4j 2.10.0
3.9 : Log4j 2.11.2
3.10 : Log4j 2.12.1
4.0(베타) : : Log4j 2.14.0
—————————-


□ 해결방안
 o 2.0-beta9 ~ 2.10.0
   – JndiLookup 클래스를 경로에서 제거 : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
 o 2.10 ~ 2.14.1
   – log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정
 o 제조사 홈페이지를 통해 최신버전(2.15.0)으로 업데이트 적용[3]

□ 탐지정책
o Log4j 취약점 관련 탐지정책(시그니처)
  – 참고사이트 [5]를 참고하여 Log4j로 검색하여 탐지정책 확인
     ※ 본 탐지정책은 내부 시스템 환경에 따라 다르게 동작할 수 있으며, 시스템 운영에 영향을 줄 수 있으므로 충분한 검
토 후 적용 바랍니다.
     ※ 공개된 탐지정책은 우회가능성이 있으므로 지속적인 업데이트가 필요함.

[참고사이트]
[1] apache 보안 업데이트 현황 : https://logging.apache.org/log4j/2.x/security.html
[2] 취약점 정보 : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
[3] 신규버전 다운로드 : https://logging.apache.org/log4j/2.x/download.html
[4] 제조사별 현황 : https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592

[5] 탐지정책 : https://rules.emergingthreatspro.com/open/suricata-5.0/rules/emerging-exploit.rules

 

 

Log4j 취약점 CVE-2021-44228 해결 방법

1. Log4j v2.15.0으로 업그레이드 한다.

프로젝트 경로중에 WEB-INF/lib 폴더안에 log4j파일을 최신 버전으로 업데이트하거나 Gradle파일을 수정하여 프로젝트를 재 빌드 진행하여 배포하거나 또는 pom.xml 파일을 열고 version 업그레이드를 한다.

2. Log4j v2.10 이상의 버전을 사용중이라면, 다음 속성값을 설정해준다.

log4j2.formatMsgNoLookups=true

또는 아래와 같이 동일한 영향을 받는 버전에 대해 환경 변수를 설정할 수 있다.

LOG4J_FORMAT_MSG_NO_LOOKUPS=true

3. 또 다른 방법으로 아래 명령어를 실행하여 클래스 경로에서 JndiLookup 클래스를 제거해야한다.

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

 

 

Log4J2 Vulnerability and Spring Boot

spring boot의 경우, 기본 설정을 그대로 사용했다면 문제가 없다고 한다.

 

 

 

스프링 의존성 확인

- Window
   ./mvnw dependency:list | findstr log4j

- Unix, Linux
    ./mvnw dependency:list | grep log4j

KISA 로그4J 취약점 공식 가이드

QnA 형식으로 알아보는 Apache log4j 취약점 대응 가이드2021.12.13
Q1. log4j가 무엇인가요?
Q2. log4j 1.x 버전에서도 영향을 미치나요?
Q3. 취약한 log4j 를 사용하고 있는지 어떻게 확인하나요?
Q4. log4j 의 버전 확인 방법은 무엇인가요?
Q5. 버전에 따라 어떻게 조치해야 하나요?
Q6. 보안 업데이트는 어떻게 하나요?
Q7. 보안 업데이트를 하지 않으면 어떻게 되나요?
Q8. 해당 취약점을 탐지할 수 있는 패턴은 어떻게 작성할 수 있을까요?
첨부파일QnA 형식으로 알아보는 Apache Log4j 취약점 대응 가이드.pdf

 

 

Log4j 취약점 아마존 AWS 대응방법

아마존 aws를 사용중이라면 아래 가이드를 참고해서 해결한다.

https://aws.amazon.com/ko/security/security-bulletins/AWS-2021-005/

 

 

Log4j 버전 확인하는 방법

1. 자바(JAVA) 스프링 프레임웍을 사용중인 경우 대부분 Maven 프로젝트로 구성되었을 것이다.

pom.xml 파일을 열고 “log4j”로 검색하여 설치된 버전 정보를 확인할 수 있다.

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> 
<dependency> 
  <groupId>org.apache.logging.log4j</groupId> 
  <artifactId>log4j-core</artifactId> 
  <version>2.12.1</version> 
</dependency>

 


log4j 설치 여부 확인(linux) 및 버전 확인

dpkg –l | grep log4j

find / -name ‘log4j*’

 

[REFERENCE]

 

 


카테고리의 다른 글
error: Content is protected !!