[JAVA] Log4Shell 취약점 관련 정리

Woong·2021년 12월 13일
0

Java

목록 보기
5/21

개요

  • Log4j2 2.0-beta9 ~ 2.14.1 버전 이하에서 발견된 취약점
  • CVSS 스코어 10점으로 가장 높은 심각도
  • Log4Shell 이라는 별칭이 붙었다.
  • Log4j2 의 JNDI(Java Naming and Directory Interface) 인젝션 취약점으로, 원격으로 코드를 실행시키는 RCE(Remote Code Execution) 취약점에 해당한다.
  • Java, Scala, Kotlin 언어를 사용하는 여러 오픈소스에서도 사용하고 있기 때문에 취약점 점검이 반드시 필요
    • ex) Apache Hadoop, Spark, Kafka, Solr, ElasticSearch, ...

오픈소스에선.

  • 글 작성 시점인 2021.12.13 기준, 아래 오픈소스에선 log4j 1.x 버전을 사용하고 있어 해당하지 않는다. (단, 낮은 버전으로 인한 취약점이 존재하므로 개별 조치가 필요하다.)
    • Apache Hadoop
    • Apache Spark
    • Apache Solr
    • APache Kafka
      • ※ Kafka Connect ElasticSearch Sink Connector 의 경우 최신버전인 11.1.6 버전 사용시 log4j 2.15.0 버전 적용됨
  • Elastic ElasticSearch
    • ElasticSearch 7.16.0 버전에선 log4j 2.11.1 버전 사용

대응 방안

    1. Log4j 2.15.0 이상 버전으로 업데이트 (2.15.0에서 fix되었다.)
    • Log4j 1.x 버전은 EOL로 또다른 RCE 취약점이 존재하므로 다운그레이드는 권장하지 않는다.
    1. 2.0-beta9 ~ 2.10.0
    • JndiLookup 클래스를 경로에서 제거
      zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    1. 2.10 ~ 2.14.1 버전
    • log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정

내용 추가

2.15.0 버전에서 취약점 추가 발견

  • Log4j2 2.15.0 버전에서도 패치가 불완전하여 CVE-2021-45046 취약점이 발견되었다. referense

  • %X, %mdc, or %MDC 와 같은 thread context map pattern 을 사용시 공격자가 DoS 공격을 일으킬 수 있는 것으로 확인되었다.

대응방법

    1. log4j2 2.16.0 으로 업데이트
    1. 2.16.0 미만일 경우 JndiLookup 클래스 제거

0개의 댓글