[긴급]log4j취약점대응하기
12월 14일
log4j 취약점 관련 기사들이 보도되면서,
IT 기업들이 진땀을 흘리고 있습니다.
자,
그러면 이번 사태에 대한 정보 및 취약점 대응 방법에
대해 알아보겠습니다.
log4j는 아파치에서 제공하는 오픈소스 프로그램이며,
어플리케이션 로깅 시 사용되는 모듈 중 하나입니다.
log4j 버전1은 2015년 이후 업데이트가 종료되어,
사용되는 곳이 거의 없을 것으로 생각됩니다.
로깅 모듈을 log4j로 사용하는 대부분의 기업에서는
현재 log4j 버전2를 사용 중 입니다.
취약점의 중심에는 log4j-core.jar에 결함이 있습니다.
(JNDI 파싱 기능이 원격 코드 실행 취약점을
불러일으키기 때문)
취약점에 노출 될 경우,
악성코드가 유포되거나 중요 데이터 탈취,
임의의 파일 다운로드 된 후 실행 등의
심각한 피해가 발생할 수 있습니다.
그러면, 서비스에서 log4j를 사용하고 있는지 확인
하는 방법은 다음과 같습니다.
○ 리눅스에서 :
# dpkg –l | grep log4j - find / -name ‘log4j*’
○ 윈도우에서 :
윈도우 탐색기에서 검색 기능 (log4j 검색)을 이용
log4j가 사용 중이라면, log4j 버전에 따른 대응 방법
은 다음과 같습니다.
가장 안전한 방법은 log4j를 2.15.0 버전 이상으로 올리는 것입니다.(전제 조건으로 Java 버전이 8이상 필요)
○ log4j 2.10.0 이상 사용시, 다음의 방법 중
한 가지 이상의 방법을 사용합니다.
- java 실행 인자(Args)에 시스템 속성을 추가
( -Dlog4j2.formatMsgNoLookups=true)
- java 실행 계정의 환경 변수 혹은 시스템 변수로
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
를 설정
○ log4j 2.7.0 이상 사용시 log4j 설정
(log4j.xml 등의 설정 파일)에
PatternLayout 속성에 있는 %m 부분을
%m{nolookups} 으로 교체
(2.16.0 이상에서는 %m이 자동으로
nolookups로 처리됨)
○ 이외의 버전일 경우, JndiLookup 클래스와
JndiManager 클래스를 읽지 못하도록
조치해야 합니다.
KISA에서 쉽게 대응할 수 있는 방안을 제공하니 반드
시 열람 필수!
○ log4j 외에 다른 로깅 모듈로 교체합니다.
(logback 등)
추가로,
○ 2.15.0 버전 이상에서도 설정에 따라 취약점에 노출
될 수 있는 데, 이 부분을 꼭 확인해보도록 합니다.
설정 중
-Dlog4j2.formatMsgNoLookups=false
-LOG4J_FORMAT_MSG_NO_LOOKUPS=false
명시된 설정은 모두 제거해야 합니다.
○ 2.16.0 버전 이상에서는 log4j.enableJndi 설정이
기본값 false로 추가되어 있습니다.
따라서, 다음 설정도 제거해야 합니다.
-Dlog4j.enableJndi=true
※ SPRING 공식 사이트에서 제공하는 log4j 취약점
관련 내용 링크:
※ 보다 상세한 정보를 원하시면 KISA 에서 제공하는
'QnA 형식으로 알아보는 Apache log4j 취약점 대응 가이드'를 참고하시면 됩니다. (하단 링크 참조)