본문 바로가기
웹 & 앱 개발

[보안] Apache Log4j 보안 이슈 및 해결 방안

by newstellar 2021. 12. 14.
반응형

1. Log4j란?

  • Log4j는 Java 기반 프로그램 작성 시 지정된 파일/포맷으로 로깅할 수 있는 Apache 오픈소스 라이브러리입니다. 이슈가 된 취약점은 CVE-2021-44228(또는 Log4Shell)로 명명되었으며, Log4j가 넘겨받은 변수만을 단순 출력하는 것이 아닌 로그 메시지에 담긴 구문을 실행하여 출력하는 Lookups 기능에서 발생했습니다.

 

  • 해커들이 개발자보다 먼저 취약점을 발견한 경우에 해당하는 0-데이 취약점으로서 Log4j 라이브러리를 사용한 서비스가 배포된 시점부터의 로그를 분석하여 악의적 공격 여부를 확인해야하는 24/7 비상 패치가 필요합니다.

 

  • Apache 측은 해당 취약점을 감지하여 2021년 12월 10일 GitHub PR을 통해 2.15.0 버전을 배포하였습니다.

 


2. Log4j 취약점이 위험한 이유

  • 해당 취약점은 Log4j를 사용하는 도중 JNDI를 통한 LDAP로의 접근 요청과 관련된 것으로서 JNDI의 파싱 기능이 원격 코드 실행 취약점을 야기하기 때문에 Log4j 2.15.0 버전의 긴급 패치가 일어났습니다.

 

  • 취약점 대상 및 버전
    • Apache Log4j 2.0-beta9 ~ 2.14.1의 모든 버전에 해당합니다.

 

  • 해당 취약점의 위험성
    • 해커가 임의의 Java 코드를 원격에서 실행시킬 수 있습니다.

    • 해당 버그에 취약한 시스템을 네트워크 스캔으로 찾을 수 있습니다.

 

  • 보안 이슈 해결의 중요성
    • Log4j는 Java 기반 SW에서 많이 사용하는 소프트웨어입니다.

    • 취약점을 활용한 공격 방법이 쉽고, 운영 중인 시스템이 공격 받았는지 여부를 확인하기 어렵습니다.

 

 


3. 해결 방안

 

  • Log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안 위협에 노출될 가능성이 높아 최신버전 업데이트 적용을 권고합니다.

 

  • Log4j 패치가 가능한 경우 
    • Apache Log4j 2.0-beta9 ~ 2.14.1 버전의 경우Log4j의 버전을 2.15.0 이상으로 패치 업그레이드합니다.

 

  • Log4j 패치가 어려운 경우
    • 2.0-beta9 ~ 2.10.0 버전의 경우

      JNDI Lookup 클래스 제거
      # zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
      # zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class


    • 2.10.x ~ 2.14.1 버전의 경우

      - 시스템 프로퍼티 log4j2.formatMsgNoLookups의 값을 TRUE로 변경

      - 또는 환경 변수 LOG4J_FORMAT_MSG_NO_LOOKUPS 의 값을 TRUE로 변경

 

반응형

댓글