원문 : 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 Rocky 9+nginx1.20+php8+MariaDB 10.5 환경에서 wordpress 설치하기 ischo 2024.01.10 323
103 파일시스템 양방향 동기화하기 - rsync, lsyncd file ischo 2024.01.03 389
102 LVM 타입 swap 영역 용량 축소하기 ischo 2023.11.28 391
101 named 에서 DNS root 서버 리스트 갱신하기 ischo 2023.06.13 520
100 vi 에디터에서 복사,붙여넣기 하면 # 마크가 자동으로 앞에 붙을때 ischo 2023.04.19 476
99 구버전 Linux에서 Rocky Linux 9.1 버전으로 ssh 접속시 "no hostkey alg" 표시후 접속불가 ischo 2023.04.19 1177
98 파일시스템 사용량 추이를 http 전송으로 DB에 누적하기 file ischo 2022.08.29 753
97 [Shell] 시작한지 1시간 이상 경과한 프로세스 kill 하기 ischo 2022.06.16 245
» apache log4j 취약점 제거조치 CVE-2021-44228 CVE-2021-45046 CVE-2021-41045 CVE-2021-4104 ischo 2021.12.23 1053
95 Multi Putty Manager file ischo 2020.10.08 898
94 CentOS 7에 Apache2, php7.3, MariaDB 설치하기 ischo 2019.09.02 1930
93 리눅스에서 Windows Filesystem(NTFS) 마운트하기 ischo 2018.12.20 3470
92 SFTP로 자동 업로드/다운로드 스크립트 ischo 2018.04.04 7357
91 CIDR Conversion Table ischo 2018.03.08 2967
90 (스크립트) 오라클 DB서버에서 매일 원격지 FTP로 export 파일 업로드 하기 ischo 2017.11.04 4338
89 shell script를 cron으로 동작시킬때 .bashrc .bash_profile의 변수가 적용되지 않는다 ischo 2017.09.08 14745
88 재부팅 없이 SCSI device를 rescan하기 ischo 2017.03.16 16530
87 apache 404 에러에 OS 또는 apache버전을 표시하는 취약점 없애기 ischo 2016.10.25 7683
86 RHEL/CentOS 7 환경에서 자동업데이트 disable 시키기 ischo 2016.07.02 10198
85 NTP 서버 설정 ischo 2016.03.03 10779
서버에 요청 중입니다. 잠시만 기다려 주십시오...