log4j 설명부터 사용여부 확인 및 조치방법, 나아가 취약점 탐지 패턴 작성법까지 담아
[보안뉴스 원병철 기자] 전 세계가 log4j 취약점 문제로 몸살을 앓고 있는 가운데, 한국인터넷진흥원이 Q&A 형식의 ‘log4j 취약점 대응 가이드’를 만들어 공개해 관심이 모아지고 있다.
▲log4j 취약점 개요도[자료=KISA]
‘Q&A 형식으로 알아보는 Apache log4j 취약점 대응 가이드(이하 가이드)’는 총 8개의 질의응답 형식으로 만들어졌으며, log4j 설명부터 사용여부 확인 및 조치방법, 나아가 취약점 탐지 패턴 작성법까지 담고 있다. 특히 관련 이미지까지 첨부해 개발자가 아니더라도 쉽게 따라할 수 있도록 한 것이 특징이다.
Q. log4j란 무엇인가?
먼저 가이드는 log4j가 무엇인지부터 설명해주고 있다. log4j의 기능은 서비스 동작 과정에서 일어나는 일련의 모든 기록을 남겨 침해사고 발생 및 이상징후를 점검하기 위해 필수적으로 필요한 기능이다. 무료로 제공되는 오픈소스 프로그램으로 Java 기반의 모든 어플리케이션에서 사용할 수 있다.
Q. log4j 1.x 버전에서도 영향을 미치나?
아울러 이번 문제는 log4j 2.×버전부터 발생하지만 1.×버전은 이미 2015년에 기술지원이 종료되었기 때문에 최신 버전으로 업데이트 하는 것이 좋다고 권고했다.
Q. 취약한 log4j를 사용하는지 확인할 수 있는 방법은?
log4j를 사용하는 상용제품의 경우 깃허브(https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592)에 정리가 되어 있으므로 제조사를 찾아 제조사가 안내하는 방법으로 확인하면 된다. 이곳에는 한국기업이 보이지 않지만, 현재 LG CNS와 더존비즈온이 각각 헬프데스크를 운영하고 있다.
log4j 설치 여부를 확인하기 위해서는 리눅스와 윈도우 2가지 방법이 있다. 우선 리눅스에서는 다음 명령어를 사용한다.
- dpkg –l | grep log4j
- find / -name ‘log4j*’
▲리눅스에서 log4j 설치 여부 확인[자료=KISA]
윈도우는 기본 검색기능인 ‘window explorer’에 직접 log4j를 검색하는 것과 개발도구인 ‘Eclipse’의 찾기 기능을 이용해 검색하는 방법이 있다.
▲windows explorer의 검색기능을 이용하여 검색[자료=KISA]
▲eclipse 도구의 ‘찾기’ 기능을 이용하여 검색[자료=KISA]
또한, 공개되어 있는 도구를 사용하는 방법도 있는데, 가이드에는 ‘Syft’와 ‘Grype’, 그리고 취약점 스캐너를 사용하는 방법이 소개되어 있다.
Q. log4j 버전 확인 방법과 조치방법은?
log4j 설치 여부를 확인했다면 이제는 버전을 확인해야 한다. 리눅스에서 log4j를 검색하거나 ‘Java Spring Framework Maven’ 사용 시 log4j가 설치된 경로의 pom.xml 파일을 열어 ‘log4j-core’로 검색하면 버전을 확인할 수 있다.
중요한 것은 가이드에서는 ‘log4j 2.15’ 버전 이상으로 업데이트를 수행하거나 아예 제거하라고 안내하고 있는데, 현재 아파치재단에서 ‘log4j 2.16’버전을 업데이트했기 때문에 반드시 2.16 버전으로 업데이트해야 한다는 점이다. 아파치재단 역시 2.15버전으로 업데이트 한 사람도 2.16버전으로 업데이트하라고 안내하고 있다. 업데이트된 다운로드 주소는 다음(https://logging.apache.org/log4j/2.x/download.html)과 같다.
Q. 보안 업데이트는 어떻게 하나?
먼저 보고서는 시스템 환경에 따라 다양한 라이브러리가 추가로 적용되어 있을 수 있으므로 테스트 후 적용해야 한다고 권고하고 있다.
업데이트 방법은 우선 log4j-core.jar 파일 위치 및 파일 백업 후 jar 파일을 다운로드받아야 한다. 또한, Java Spring Framework Maven을 사용하고 있는 경우 버전 정보 수정 후 재설치, 버전 재확인을 거쳐야 한다.
① pom.xml을 다음과 같이 수정
▲가이드 이후 2.16버전이 나왔다[자료=KISA]
② mvn install
③ ./mvnw dependency:list | grep log4j or sudo find / -name ‘log4j*’로 버전 2.15.0 이상 여부 재확인
gradle을 사용하고 있는 경우 버전 정보 수정 후 재설치, 버전 재확인
①-1) build.gradle에서 log4j2.version 업데이트
ext[‘log4j2.version’] = ‘2.15.0’
①-2) Gradle 플랫폼 지원을 사용하는 경우
implementation(platform(“org.apache.logging.log4j:log4j-bom:2.15.0”))
② ./gradlew dependencyInsight —dependendy log4j-core로 버전 2.15.0 이상 여부 재확인
Q. 보안 업데이트를 하지 않으면 어떻게 되나?
한편, 보고서는 보안 업데이트를 하지 않으면 원격의 공격자가 이 취약점을 이용해 악성코드 유포, 중요 데이터 탈취, 임의의 파일 다운로드 및 실행 등이 가능하다면서 반드시 업데이트할 것을 강조했다.
[원병철 기자(boanone@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>