[log4j 개요] log4j 소개

이상·2022년 9월 15일
0

log4j 총정리보고서

목록 보기
1/6
post-thumbnail

본 보고서의 목적

본 보고서의 목적은 log4j의 개념적 이해보다는 코드이해, POC 실습을 위한 가이드로써 log4j에 대한 수많은 뉴스기사, 보고서들을 보며 '기술적인 이해를 해보고싶다.' '직접 취약점 발생원리를 이해해보고싶다.' 라는 마음을 가진 사람들을 위한 목적으로 제작되었다.

log4j 취약점에 대한 개념적인 이해를 원하는 독자들은 본 보고서보다 훨씬 더 뛰어난 자료들이 KISA 공식 보고서, 구글 등에 즐비해있으니 참고를 바란다.

서론

2021년 12월, Log4j 취약점을 통한 사이버 보안 위협이 전세계를 덮쳤다. 반년이 지난 지금까지도 Log4j에 대한 새로운 취약점이 계속해서 발견되고 있으며, Log4j 취약점을 이용해 원격코드를 실행하거나 DoS 공격으로 이어질 수 있는 등 위험도가 매우높다.

1. Log4j

Log4j가 대체 무엇일까?

Log4j는 Apache Software Foundation에서 개발한 프로그램의 로그를 남기기 위해 사용되는 대표적인 오픈소스 로깅 라이브러리로, 전세계의 수많은 JAVA 기반 어플리케이션에서 사용되고 있다. Log4j로 사용자의 입력 값을 로그에 저장할 때 특정 기능에 대한 검증과정이 없어 JAVA의 객체를 실행 시킬 수 있게 된 것이다.

2. Log4j 취약점

Log4j 취약점(CVE-2021-44228)은 Log4Shell라고도 불리며, Log4j에서 특정 자바 객체를 참조할 수 있는 검색(Lookups) 기능에 의해 발생하였다. CVE-2021-44228 취약점은 Lookups 기능 중에서도 JDNI(Java Naming and Directory Interface) Lookups를 이용한 JNDI-Injection 공격이 가능하다고 알려져 있다. 공격자는 공격 대상 서비스에 로그를 남기게 하기 위하여 Request의 Header 중 User-Agent 및 X-Api-Version에 공격구문(‘${jndi:ldap://자바객체 URL}’ 형식의 문자열)을 넣어 전송할 수 있으며, 이에 대한 로깅 과정에서 별도의 검증 없이 원격의 자바 객체가 서비스에서 실행되게 된다. 이 때, 원격의 자바객체는 공격자가 구축해둔 LDAP 서버에서 구동중인 악성 자바객체이다.

3. Log4j 취약점 공격 과정

해당 취약점을 이용한 공격 과정은 아래와 같다.

Log4j 취약점 공격 과정 (출처: 안랩)

4. Log4j 취약점 목록

2022.7.10. 기준, CVE-2021-44228 취약점을 포함해 총 11개의 Log4j 관련 취약점이 CVE로 등록되어 있다. (nvd에서 Log4j 검색)

CVE는 미국 국토안보국 CISA에서 정하는 기준으로, Common Vulnerabilities and Exposures(공개된 보안 결함 목록)의 준말이다.

  • Log4j 2.x 버전에서 로그 메시지를 통해 원격 코드 실행(RCE)이 가능한 취약점 (CVE-2021-44228, CVSS 10.0)
  • Log4j 1.2.x 버전에서 로그 메시지를 통해 원격 코드 실행(RCE)이 가능한 취약점 (CVE-2021-4104, CVSS 7.5)
  • Log4j 2.x 버전에서 로그 메시지를 통해 로컬 코드 실행(LCE)이 가능하며, 일부 환경에서는 정보 누출 및 원격 코드 실행(RCE)이 가능한 취약점 (CVE-2021-45046, CVSS 3.7)
  • Log4j 2.x 버전에서 로그 메시지를 통해 서비스 거부 오류(DoS)를 발생시킬 수 있는 취약점 (CVE-2021-45105, CVSS 5.9)
  • Log4j 2.x 버전에서 공격자가 LDAP 서버를 제어할 수 있는 취약점 (CVE-2021-44832, CVSS 6.6)
  • Log4j 1.x 버전에서 로그 메세지를 통해 원격 코드 실행(RCE)가 가능한 취약점 (CVE-2022-23302, CVSS 8.8)
  • Log4j 1.2.x 버전에서 로그 메시지를 통해 SQL Injection이 가능한 취약점 (CVE-2022-23305, CVSS 9.8)
  • Log4j의 Chainsaw를 통한 역직렬화 취약점 (CVE-2022-23307, CVSS 8.8)
  • CVE-2021-44228 핫패치 이전의 Log4j 핫패치 패키지에서 권한 상승이 가능한 취약점 (CVE-2021-3100, CVSS 8.8)
  • CVE-2021-3100에 대한 불완전한 패치로 인한 취약점 (CVE-2022-0070, CVSS 8.8)
  • CVE-2021-44228 핫패치 이전의 AWS의 Log4j 핫패치 패키지에서 권한 상승이 가능한 취약점 (CVE-2022-33915, CVSS 7.0)

참고

https://nvd.nist.gov/vuln

https://nhj12311.tistory.com/575

https://cselabnotes.com/kr/2021/12/12/210/

https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?seq=31133

https://eliez3r.github.io/post/2021/12/13/study-vuln-log4j_CVE_2021_44228.html

profile
중앙대학교 산업보안학과 정보보호동아리 이상입니다.

0개의 댓글