원문 : 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 30736
104 리눅스에서 HBA카드의 WWN확인 방법 조인상 2010.05.12 54453
103 ssh 자동로그아웃 설정방법 조인상 2010.05.12 41513
102 LVM 사용하여 추가한 디스크로 볼륨 늘리기 ischo 2010.05.19 35789
101 리눅스 커널이 64bit 인지 확인방법 ischo 2012.02.24 34978
100 리눅스 가상 IP 설정 조인상 2010.05.12 30751
99 랜카드 동작속도 확인/수정 방법 조인상 2010.05.12 29466
98 Linux용 nmon 설치 및 구성 file ischo 2013.01.17 29131
97 리눅스에서 hostid 란? ischo 2013.06.25 29114
96 TCP TIME_WAIT이 많이 발생하여 문제가 되는 경우 ischo 2011.08.18 28326
95 RHEL 6.x 에서 multipath 설정 ischo 2015.07.31 27169
94 리눅스 mdadm 을 이용한 S/W RAID 구성 [1] ischo 2011.07.20 25432
93 static routing 정보 저장하여 재부팅시에도 자동 적용 ischo 2013.07.23 25316
92 삼바 세팅 및 사용법 [1] 조인상 2010.05.12 25115
91 백스페이스 눌러서 지우려고 할때 ^H 표시될때 조치법 조인상 2010.05.12 24507
90 아파치 SSL 적용된 경우 startup 시에 SSL 패스워드 자동입력시키기 ischo 2011.06.02 24244
89 file descriptor 설정하기 ischo 2013.07.10 24047
88 리눅스 Services 설명 ischo 2011.07.08 23634
87 ssh 접속시 로그인 속도가 느릴경우 속도 향상법 ischo 2011.08.30 22993
86 리눅스에서 디스크 덤프하기 ischo 2011.12.22 21865
85 리눅스에 Qlogic2300 HBA카드로 어레이 붙이기 file 조인상 2010.05.12 20195
서버에 요청 중입니다. 잠시만 기다려 주십시오...