log4j의 취약점이 발견되다
본문 바로가기

용어 정리, 이슈/과학&기술

log4j의 취약점이 발견되다

728x90

1. 사건의 전말

야, 야, 이거 최신 보안 인증된 프로그램이니까 이걸로 빨리 업데이트해라!

- 간부님이 정보통신대대에서 급히 받아온 긴급 USB를 들고 문을 박차며 하셨던 말

 

상황실의 문이 벌컥 열리며 간부님이 격양된 어조로 받아온 새로운 업데이트 프로그램을 빨리 깔라고 지시하셨다. 엥? 무슨 일 있었습니까?

 

 

 

2021년 11월 24일, 중국 알리바바 클라우드 보안팀은 Log4j 2의 원격 코드 실행이 가능한 Log4j의 제로 데이 임의 코드 실행 취약점인 Log4Shell(CVE-2021-44228)을 발견했고, 이를 해당 로그 저장 유틸리티 개발군인 아파치 소프트웨어 재단(ASF)에 비밀리에 보고했다.

 

12월 6일, 아파치 소프트웨어 재단은 해당 문제를 개선한 Log4j 버전 2.15.0-rc1.을 출시했다. 해당 버전은 여러 시스템 속성을 사용하여 구성할 수 있는 검색에 사용되는 서버 및 프로토콜을 제한하는 조치를 취했다.

 

12월 10일, 마인크래프트에서 서버를 지원하는 페이퍼MC(PaperMC)에서 배포한 업데이트된 새로운 파일을 다운하라긴급 공지를 각 서버 이용자들에게 보냈는데, 이로 인해 Log4j에 어떤 문제가 생겼다는 것이 세간에 널리 알려지게 되었다.

페이퍼MC가 Log4Shell에 대한 핫픽스(긴급 패치 프로그램)를 배포한지 약 4시간 뒤 여러 컴퓨터 전문가들이 모여 소프트웨어 버전을 관리하기 위해 사용하는 GitHub에 CVE-2021-44228 취약점이 게재되었다.

 

12월 11일, 미국 국토안보부 산하 CISA(사이버보안 및 인프라 보안국) 국장 젠 이스털리(Jen Easterly)는 '소프트웨어 업데이트'를 우선적으로 시행하라는 권고를 발표했으며, 한국인터넷진흥원(KISA)에서도 'Apache Log4j 보안 업데이트 권고'라는 보안공지를 발표했다.

 

12월 12일, 과학기술정보통신부는 KISA가 발표한 버전 업데이트 방법을 소개하며, 업데이트를 즉각적으로 해 각종 피해를 최소화할 것을 당부했다. 이날 아파치 소프트웨어 재단은 취약점의 위험도에 따라 0부터 10까지의 숫자를 매기는 공통 취약점 등급 체계(Common Vulnerability Scoring System, CVSS)에서 Log4j를 10점으로 평가했다.

 

 Apache Log4j 2 서비스 대한 보안취약점이 발견됨 따라 긴급 보안업데이트 권고한다. 관련 취약점을 공격자가  경우 악성코드 감염 등의 피해를 발생시킬  있으므로 아래 보호나라 보안공지 따라 긴급하게 보안조치 해주길 바란다.

- 211212, 과학기술정보통신부

 

2. 도대체 Log4Shell이 뭔데 큰 난리가 일어난거야?

Log4Shell에 대해 알기 전 Log4j에 대해 알 필요가 있다.

아파치 로그4j(Apache Log4j)는 2001년에 발표된 자바 기반 로그 저장 유틸리티다. 이 유틸리티는 웹 서비스 동작 과정에서 일어나는 일련의 모든 기록을 남겨 침해사고 발생이나 이상징후를 점검하기 위한 목적으로 만들어졌으며, 프로그램 자체도 무료이기 때문에 많은 곳에서 이 유틸리티를 사용하고 있었다.

 

그러던 중 2021년 11월에 중국 쇼핑몰 알리바바 클라우드 보안팀이 이 운용하기 쉽고 편한 Log4j 유틸리티가 LDAP와 JNDI 요청 검사를 하지 않아 공격자가 임의의 자바 코드를 서버나 컴퓨터에서 실행하거나 피해 서버 및 컴퓨터에서 정보를 유출할 수 있다는 문제가 발견되었고, 이를 Log4Shell이라고 명명했다.

 

여기서 경량 디렉터리 접근 프로토콜이라고도 불리는 LDAP는 통신규약 모음인 TCP/IP 프로토콜 상에서 운용되는 각종 컴퓨터 네트워크 상의 사용자와 네트워크 리소스(네트워크 상에서 사용되는 가상의 요소)에 대한 접근(조회 및 수정)을 하게 해주는 산업 표준 응용 프로토콜을 말하는데, 핸드폰의 전화번호부 어플에서 사용된다. 예를 들어서 Elsa의 핸드폰으로 전화를 걸고 싶으면, 전화번호부에 들어가 E로 시작하는 디렉터리를 찾고, 그 안에서 다시 Elsa라는 이름을 찾은 뒤, 그 Elsa에 등록된 전화번호 중 휴대전화에 저장된 번호를 터치하여 전화를 연결한다. 이런 식으로 정리된 내용에 대한 접근을 가능케 하는 프로토콜LDAP라고 부른다.

 

또 JNDI(Java Naming and Directory Interface)는 자바 소프트웨어 클라이언트에게 이름(name)을 통해 데이터와 리소스를 검색하고 찾을 수 있는 디렉터리 서비스용 API다. 여기서 디렉터리 서비스는 각종 컴퓨터 네트워크 상의 사용자와 네트워크 리소스(네트워크 상에서 사용되는 가상의 요소)에 대한 접근(조회 및 수정)을 하게 해주는 응용 소프트웨어를 말한다. 정의만 보면 LDAP와 JNDI는 같아보이지만, LDAP는 응용 계층에서 사용되는 프로토콜 종류이며, JNDI는 자바에서만 사용가능한 API(컴퓨터나 컴퓨터 프로그램 사이의 연결을 하는 인터페이스)이다. 또한 LDAP는 JNDI를 운용하기 위해 사용하는 프로토콜 중 하나일 뿐이다.

 

이 문제는 마인크래프트 자바 에디션, 스팀같은 게임뿐 아니라 아마존 웹 서비스(AWS), 아이클라우드, 클라우드플레어(Cloudflare), 텐센트 QQ 등 유명한서비스와 수많은 국가 기관이 운용하는 자바 기반 사이트까지도 영향을 받게 되었다.

 

상용 취약점 스캐너인 네서스(Nessus) 개발사로 유명한 미국의 사이버 보안 회사 테나블(Tenable)은 이번 취약점에 대해 이렇게 말했다.

 

지난 10년 동안 가장 크고 가장 치명적인 취약점

- 211211, 테나블

 

이 거대하고 치명적인 문제점을 개선하기 위해 아파치는 12월 6일 새 버전을 내놓았고, 또 해당 버전으로의 업데이트가 불가능한 곳에서는 코드를 수정하는 방식으로 바꿀 것을 권고했다. 생각보다 어두운 곳에서, 내가 알지 못하는 숫자와 영어, 기호로 이루어진 세계에서 많은 일들이 일어나고 있음을 다시금 느끼게 되었다. 이번 일련의 사건을 보고 나부터라도 내 정보는 지키려고 노력해야겠다고 다짐하게 되었다.

 

아래에 이번 글과 관련되어 한 번 읽어보면 좋은 내용들을 정리해봤다. 제가 비전공자라 이쪽 분야에 무지하기 때문에 직접 글을 보시는 편이 이해가 빠르실 거라 판단했기 때문이다.

 

KISA의 Log4Shell 보안공지 : https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389

KISA의 Log4Shell 가이드 및 메뉴얼 : https://www.boho.or.kr/data/guideView.do?bulletin_writing_sequence=36390

반응형