원문 : 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 30128
97 [Shell] 시작한지 1시간 이상 경과한 프로세스 kill 하기 update ischo 2022.06.16 30
» apache log4j 취약점 제거조치 CVE-2021-44228 CVE-2021-45046 CVE-2021-41045 CVE-2021-4104 ischo 2021.12.23 378
95 Multi Putty Manager file ischo 2020.10.08 726
94 CentOS 7에 Apache2, php7.3, MariaDB 설치하기 ischo 2019.09.02 1747
93 리눅스에서 Windows Filesystem(NTFS) 마운트하기 ischo 2018.12.20 2518
92 SFTP로 자동 업로드/다운로드 스크립트 ischo 2018.04.04 6686
91 CIDR Conversion Table ischo 2018.03.08 2821
90 (스크립트) 오라클 DB서버에서 매일 원격지 FTP로 export 파일 업로드 하기 ischo 2017.11.04 4024
89 shell script를 cron으로 동작시킬때 .bashrc .bash_profile의 변수가 적용되지 않는다 ischo 2017.09.08 13101
88 재부팅 없이 SCSI device를 rescan하기 ischo 2017.03.16 15647
87 apache 404 에러에 OS 또는 apache버전을 표시하는 취약점 없애기 ischo 2016.10.25 7420
86 RHEL/CentOS 7 환경에서 자동업데이트 disable 시키기 ischo 2016.07.02 9713
85 NTP 서버 설정 ischo 2016.03.03 10536
84 read/write test of Storage Filesystem ischo 2015.12.16 10034
83 RHEL/CentOS 7 에서 Network 설정하기 ischo 2015.08.31 16996
82 RHEL 6.x 에서 multipath 설정 ischo 2015.07.31 26529
81 copy 시 I/O error 발생한 파일을 dd로 복사하기 ischo 2015.07.27 9672
80 OpenSSL 다중취약점 보안업데이트 ischo 2015.04.02 12874
79 HP DL/ML 시리즈용 SmartArray CLI 유틸리티 사용 설명서 ischo 2015.02.11 10441
78 XDMCP 연결시 필요한 port 번호 ischo 2014.12.24 17232
서버에 요청 중입니다. 잠시만 기다려 주십시오...