원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

apache log4j 취약점 제거조치

 

 

1. Log4j 사용여부 및 버전 조회 방법

 

# find / -name "*log4j*jar" -type f
/usr/share/java/log4j.jar
/usr/share/java/slf4j/log4j-over-slf4j.jar
/usr/share/java/slf4j/slf4j-log4j12.jar
/data/webapp/webapp/WEB-INF/lib/log4j-1.2.14.jar
/data/webapp/webapp/WEB-INF/lib/log4j-1.2.14.jar
 

조회시 위와 같이 WEB-INF/ 하위 디렉토리에 log4j<버전명>.jar 파일이 있는 경우

해당 log4j 를 사용한다고 의심할 수 있다.

 

 

 

2. 버전별 취약점 내용

 

1) CVE-2021-44228 : Log4j 2 원격코드 실행 취약점

- 취약점 내용 : Log4j 2 에서 사용되는 JNDI(java naming and directory interface) 인젝션 취약점을 이용하여 원격코드 실행 가능

- 대상버전 : 2.0-beta9 ~ 2.14.1 (2.12.2 제외)

 

2) CVE-2021-45046 CVE-2021-41045 : 서비스 거부

- 취약점 내용 : JNDI 조회 데이터를 입력하여 ddos 공격 가능

- 대상버전 : 2.0-beta9 ~ 2.16.0 (2.12.3 제외)

 

3) CVE-2021-4104 : 원격코드 실행

- 취약점 내용 : 공격자가 log4j.properties에 쓰기 권한을 획득할 경우 원격코드 실행 가능

- 대상버전 : 1.2x 버전중 JMSAppender Class를 사용중인 소프트웨어

 

 

 

3. 취약점 조치 방법

 

1) log4j 버전 업그레이드

- JDK 8 : Log4j 2.17.0 으로 업데이트

- JDK 7 : Log4j 2.12.3 으로 업데이트

- JDK 6 : Log4j 2.3.1 로 업데이트

 

2) JNDI Class 파일 삭제 : JNDI 취약점을 이용하므로 Class 파일을 삭제하여 기능을 동작하지 못하게 하는 방법이다.

- JndiLookup.class 존재 유무 확인

# unzip -l log4j-<버전명>.jar | grep -i JndiLookup.class      // log4j-<버전명>.jar 의 압축을 풀지않고, jndilookup.class 파일 존재유무 확인방법

 

- JndiLookup.class 파일 삭제

# zip -q -d log4j-<버전명>.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

 

- JndiLookup.class 삭제 여부 확인

# unzip -l log4j-<버전명>.jar | grep -i JndiLookup.class

 

3) CVE-2021-4104 취약점 조치

- log4j.properties 찾기

# find / -name log4j.properties -type f    // 파일 찾기

- JMSAppender 적용여부 확인

log4j.appender.stdout=org.apache.log4j.ConsoleAppender        // 이와 같을 경우 JMSappender가 아닌 ConsoleAppender 사용중임.
log4j.appender.stdout.follow=true
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %p %C %t %c{1} - %m%n
- JMSAppender 사용중일 경우 제거

# zip –q –d log4j-<버전명>.jar org/apache/log4j/net/JMSAppender.class

# unzip -l log4j-<버전명>.jar | grep -i JndiLookup.class

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 게시자료 열람자유. 불펌금지입니다. 조인상 2010.12.07 30770
104 원격지에서 FTP이용 백업 조인상 2010.05.09 8691
103 ksh에서 자동완성기능 사용하기 조인상 2010.05.12 10326
102 iptables로 NAT + Portforwarding 구성하기 조인상 2010.05.12 8653
101 NAT로 서비스 받는 컴퓨터에서 MSN 파일 전송기능사용하기 조인상 2010.05.12 8906
100 리눅스 환경에서 Xmanager 사용법 조인상 2010.05.12 19188
99 NAT환경에서 넷미팅 사용하기 조인상 2010.05.12 9540
98 새로운 디스크를 ext3로 파일시스템 생성하기 조인상 2010.05.12 8757
97 APM 설치하기 조인상 2010.05.12 8062
96 mysql 4 버전 설치하기 조인상 2010.05.12 11671
95 터미널에서 한글을!! Unicon 소개/설치 조인상 2010.05.12 12369
94 내가 즐겨사용하는 프롬프트 변수(PS1) 설정치 조인상 2010.05.12 10352
93 NFS 관련 명령어 및 파일들 조인상 2010.05.12 14451
92 2G이상 파일 tar 로 생성 / 분할생성(복사) 조인상 2010.05.12 12998
91 리눅스 가상 IP 설정 조인상 2010.05.12 30764
90 리눅스에 Qlogic2300 HBA카드로 어레이 붙이기 file 조인상 2010.05.12 20215
89 HBA카드의 WWNN과 WWPN에 대한 포럼 내용 조인상 2010.05.12 17514
88 리눅스에서 HBA카드의 WWN확인 방법 조인상 2010.05.12 54483
87 리눅스에서 플로피 사용하기 조인상 2010.05.12 8949
86 LVM(Linux Volume Manager) 구축하기 조인상 2010.05.12 15329
85 삼바 세팅 및 사용법 [1] 조인상 2010.05.12 25139
서버에 요청 중입니다. 잠시만 기다려 주십시오...