Log4j 취약점 막는 방법
2021년 11월 12일 Log4j 취약점이 공개됐다. 이로 인해 많은 보안 담당자와 보안 기업들이 긴급 대응을 하고 있는데, Log4j 취약점이 무엇이며, 대응방법, 공격 원리에 대해 알아보자.
최악의 취약점 Log4j
컴퓨터 역사상 최악의 발견이라고 불릴 정도이다. 아파치 S/W 재단의 Log4j에서 치명적 취약점이 발견된건데, 이는 자바 언어로 개발된 게임 마인크래프트 덕분에 찾을 수 있었다. 광범위하게 쓰느느 라이브러리라서 애플, 아파존, 사실상 모든 기업이 이 취약점에 대응해야함.
Apache Log4j 2 원격코드 실행 취약점에 대해서 살펴보면, 위험도를 파악하는 CVSS 점수는 가장 높은 10점으로 매우 심각하다. 따라서 최신 버전 2.15 업데이트가 필요함. 이름 때문에 아파치 취약점이라고 오해하는 사람들이 많은데 정확히는 JAVA에서 사용하는 라이브러리 취약점이 맞다.
즉, 대상이 아파치를 사용하는 서버로 한정되지 않음. Log4j라는 프로그램을 작성하는 도중 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티라는 점을 기억하자.
Log4j 대응 방법
영향을 받는 버전은 Apache Log4j 2 2.0~2.14.1 사이 모든 버전임. 기존에 Apache Log4j 2를 사용했으면 모든 버전이 대상임. 조치 권고는 당연히 2.15.0 버전으로 업데이트 해야함. 불가능하다면 아래와 같은 조치가 필요함.
2.0-beta9 ~ 2.10.0 (업데이트 불가한 경우)
JndLookup 클래스 경로에서 제거 : zip -q -d log4j-core-* .jar org/apache/logging/log4j/core/lookup/JndiLookup.class
2.10~2.14.1 (업데이트 불가한 경우)
log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수 true로 설정
패치 진행시 사이드 이펙트가 발생할 수 있으니 백업을 하고 진행하자. 그리고 공격 여부를 탐지하는 방법에는 여러가지가 있다. 대부분의 탐지방법에는 OGNL의 표현식이 싲가할 때 jndl 실행 문자열을 보고 있으며, ldap, rmi, DNS에 대한 질의를 모니터링 하고 있음. 탐지 방법은 계속 업데이트 중이니 깃허브나 블로그를 참고하자.
문제는 공격자들도 공격 패턴을 실시간으로 바꾸고 있음. 기존 탐지 패턴을 우회하는 방법들을 공유하고 있어 이에 따라 탐지 업데이트도 중요함. OGNL이란 Object Graph Navigation Language의 약자로 Struts2의 표현식임.
공격자들이 OGNL을 자주 쓰는 이유는 자바는 컴파일 언어로써 컴파일이 필요하지만 OGNL은 컴파일 없이 사용할 수 있어 이번 공격만 아니라 다른 공격에서도 자주 사용된다.
공격 시나리오를 보자면, 대상서버는 Log4j가 취약한 버전인 2.15 이하 버전이어야 한다. 또한 네트워크 소켓이 열려 있어야함. 그리고 외부로 통신이 가능해야한다. 원격코드 실행 취약점이지만 모든 코드가 실행 가능한 것이 아님. 원격에서 코드를 가져와 실행하는 것만 가능하기에 외부 통신을 통해 공격코드를 가져와야 하며, 이 과저에서 공격자들이 LDAP을 쓰는 것임.
물론 LDAP 이외 다른 프로토콜도 이용 가능함. 공격자는 Log4j 취약점을 이용해서 외부의 코드배포 서버에서 코드를 가져와 악성코드를 실행함. 이럴 경우 외부와 통신할 수 없는 DB서버는 안전하지 않나? 라고 생각할 수 있는데
이는 외부와 연결된 대상서버와 DB서버와의 통신이 불가능일 경우 비교적 안전하지만 대상서버를 통해서 DB서버와의 통신이 가능하다면 코드배포를 대상서버에서 직접 진행할 수 있어 위험함. 핵심은 이번 취약점을 공격자가 악용하기 위해서는 공격코드를 내려줄 서버가 필요한 점이다.
공격자들이 사용하는 ip, URL 등을 수집해 차단한다면 실제 공격코드 배포를 막을 수 있음. Log4j 취약점은 사실 며찰만에 대응이 불가능하다. 기업에서는 근본 해결을 위해 긴급하게 Apache Log4j 2 2.15.0 이상으로 업데이트해야한다.
또 공격자들이 쓰는 아이피와 URL 정보를 수집해 방화벽에 적용해야함. 모든 공격자 정보를 업데이트하는건 불가능하니 서버에 대한 In/Out 정책을 고도화해서 효과적으로 막아야함.
댓글
이 글 공유하기
다른 글
-
맥북에어 M2 존버할만한 이유와 출시일
맥북에어 M2 존버할만한 이유와 출시일
2022.01.08 -
아이폰 SE3 출시일과 유력한 디자인
아이폰 SE3 출시일과 유력한 디자인
2021.12.22 -
카톡 검열은 시작에 불과한 이유 중국몽?
카톡 검열은 시작에 불과한 이유 중국몽?
2021.12.10 -
미리보는 아이폰14 변화점 드디어 C타입?
미리보는 아이폰14 변화점 드디어 C타입?
2021.12.06