RHSB-2021-009 Log4Shell - 원격 코드 실행 취약점 - log4j (CVE-2021-44228)

Public Date: December 10, 2021, 02:24
Updated June 16, 2022, 21:12 - Chinese, Simplified 영어 (English) French Japanese
Resolved 상태
Critical Impact

Apache Log4j는 Java 기반 애플리케이션에서 로그 기능과 관련된 라이브러리입니다. 

Apache Log4j v2 (Log4j로 업그레이드)에서 취약점이 발견되었으며, 이를 통해 시스템이 공격자의 JSDI(Java Naming and Directory Interface™) LDAP(Lightweight Directory Access Protocol) 서버 조회를 사용하여 공격자가 제어하는 문자열 값을 기록하는 경우 원격 공격자가 서버에서 코드를 실행할 수 있도록 합니다. 이 취약점을 통해 원격 공격자는 Apache Log4j v2를 호출한 Java 기반 애플리케이션과 동일한 권한으로 대상 시스템에서 코드를 실행할 수 있습니다. 

이 문제는 CVE-2021-44228로 지정되어 있으며 심각한 영향을 미치는 것으로 평가되고 있습니다.

다음 제품은 이 취약점의 영향을 받지 않으며 고객의 이익을 위해 여기에 명시적으로 나열되어 있습니다.

  • Red Hat Enterprise Linux

  • Red Hat Advanced Cluster Management for Kubernetes 

  • Red Hat Advanced Cluster Security for Kubernetes

  • Red Hat Ansible Automation Platform (Engine and Tower)

  • Red Hat Certificate System

  • Red Hat Directory Server

  • Red Hat Identity Management

  • Red Hat CloudForms 

  • Red Hat Update Infrastructure

  • Red Hat Satellite

  • Red Hat Ceph Storage

  • Red Hat Gluster Storage

  • Red Hat OpenShift Data Foundation

  • Red Hat OpenStack Platform

  • Red Hat Virtualization

  • Red Hat Single Sign-On

  • Red Hat 3scale API Management

2.0.0 버전 및 2.15.0 이전 버전의 Apache Log4j Java 로깅 라이브러리에서 보안 취약점이 발견되었습니다. 로그 메시지 또는 로그 메시지 매개변수를 제어할 수 있는 원격 공격자는 JNDI LDAP 엔드포인트를 통해 서버에서 임의의 코드를 실행할 수 있습니다. 자세한 내용은 CVE-2021-44228을 참조하십시오.

Log4j 버전 2.10 이상의 경우:

  • 시스템 속성 log4j2.formatMsgNoLookups 또는 환경 변수 LOG4J_FORMAT_MSG_NO_LOOKUPS를 true로 설정합니다.

Log4j 버전 2.7~ 2.14.1 사이의 경우:

  • 모든 PatternLayout 패턴을 수정하여 메세지 변환기를 %m이 아닌 %m{nolookups}로 지정할 수 있습니다.

Log4j 버전 2.0-beta9 ~ 2.10.0 사이의 경우:

  • classpath에서 JndiLookup 클래스를 제거합니다. 예를 들면 다음과 같습니다. 

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



OpenShift 4 및 OpenShift Logging에서 다음 문서를 참조하여 위의 완화 조치를 적용할 수 있습니다: https://access.redhat.com/solutions/6578421

OpenShift 3.11에서 영향을 받는 Elasticsearch 구성 요소에 대한 완화 조치를 적용하려면 다음 문서를 참조하십시오: https://access.redhat.com/solutions/6578441

2.0.0 버전 및 2.15.0 이전 버전의 Apache Log4j Java 로깅 라이브러리에서 보안 취약점이 발견되었습니다. 로그 메시지 또는 로그 메시지 매개변수를 제어할 수 있는 원격 공격자는 JNDI LDAP 엔드포인트를 통해 서버에서 임의의 코드를 실행할 수 있습니다.

이 문제는 2.0에서 2.14.1 사이의 log4j 버전에만 영향을 미칩니다. 이 취약점을 악용하려면 다음이 필요합니다.

  • 공격자가 임의의 데이터를 전송할 수 있는 모든 프로토콜(HTTP, TCP 등)을 사용하여 원격으로 액세스할 수 있는 엔드포인트

  • 공격자가 제어하는 데이터를 기록하는 엔드포인트의 로그문

지금까지 공개된 CVE-2021-44228 및 관련 log4j 취약점의 영향은 모든 클라우드 서비스에 대해 평가되었습니다.  잠재적으로 영향을 받는 것으로 확인된 대상은 즉시 해결되었습니다. 취약한 구성 요소의 사용 및 잠재적 노출은 서비스에 따라 다릅니다. Red Hat은 완화 조치 (위 참조), 패치를 적용하고 일부 경우에 따라 취약한 구성 요소를 제거하여 위험을 적시에 해결했습니다.

Red Hat은 이러한 취약점이 Red Hat 클라우드 서비스에 미치는 영향을 지속적으로 모니터링하고 필요에 따라 타사와 협력하여 서비스에 대한 보안을 제공합니다.  필요에 따라 추가 보안 공지가 발행될 것입니다.

영향을 받는 Red Hat 제품 버전을 실행 중인 모든 Red Hat 고객은 에라타를 사용할 수 있는 즉시 해당 제품을 업데이트할 것을 권장합니다. 사용 가능한 업데이트를 즉시 적용하고 필요에 따라 완화 조치를 활성화하십시오.  

제품

구성 요소

권고 / 업데이트

Red Hat CodeReady Studio 12

log4j-core

CodeReady Studio Download

Red Hat Enterprise Application Platform 7

log4j-core

EAP 7.4 Patches

Red Hat Integration Camel K

log4j-core

RHSA-2021:5130

Red Hat Integration Camel Quarkus

log4j-core

RHSA-2021:5126

Red Hat OpenShift Application Runtimes Vert.X 4

log4j-core

RHSA-2021:5093

Red Hat Fuse 7

log4j-core

RHSA-2021:5134

Red Hat OpenShift 4

hive-container

presto-container

logging-elasticsearch6-container 

RHSA-2021:5108

RHSA-2021:5107

RHSA-2021:5106

RHSA-2021:5183

RHSA-2021:5184

RHSA-2021:5186

RHSA-2021:5148

RHSA-2021:5107

RHSA-2021:5141

RHSA-2021:5106

Red Hat OpenShift 3.11

logging-elasticsearch5-container

RHSA-2021:5094

Red Hat OpenShift Logging

logging-elasticsearch6-container

RHSA-2021:5127

RHSA-2021:5128

RHSA-2021:5129

RHSA-2021:5137

Red Hat Data Grid 8

log4j-core

RHSA-2021:5132

Red Hat AMQ Streams

log4j-core

RHSA-2021:5133

RHSA-2021:5138

Red Hat OpenStack Platform 13

opendaylight

종료일

Red Hat Process Automation Manager

log4j-core

RHPAM Patch


[1] 업데이트가 릴리스된 후 권고/업데이트 링크가 추가됩니다.

진단 스크립트를 사용하여 현재 사용 중인 시스템에 보안 취약점이 있는지 확인합니다. 정규 스크립트임을 확인하려면 GPG 서명을 다운로드합니다. GPG 서명을 확인하는 방법은 고객 포털에서 확인할 수 있습니다.

현재 버전: 1.3

또한 Ansible Playbook을 사용하여 한 번에 여러 호스트에서 진단 스크립트를 실행할 수 있습니다. Playbook에는 작업을 제어하는 추가 vars 파일이 필요합니다. 분리된 GPG 서명은 Playbook해당 vars 파일에서 사용할 수 있습니다. Playbook 및 관련 vars 파일을 다운로드한 후 vars 파일을 편집하여 환경에 맞게 조정합니다. 

다음을 지정해야 합니다.

detect_path: 진단 스크립트가 취약한 아카이브에 대해 스캔하는 경로입니다.

detect_dir: Playbook은 진단 스크립트를 원격 호스트의 이 디렉터리에 복사합니다.

detect_run_dir: 진단 스크립트가 임시 저장에 사용하는 경로입니다.


Playbook을 실행하려면 명령줄에서 두 개의 추가 변수를 지정해야 합니다.

HOSTS: Ansible 인벤토리에 정의된 대로 스캔할 호스트 또는 그룹입니다.

vars_file: vars 파일의 경로입니다.

예를 들면 다음과 같습니다.

# ansible-playbook -e HOSTS=all -e vars_file=log4j-cve-2021-44228-vars.yml log4j-cve-2021-44228.yml


질문: 보안 수정이나 완화 기능을 적용한 후 서비스 또는 애플리케이션을 다시 시작해야 합니까? 만약 그렇다면 어떤 것을 시작해야 합니까?  

A: 서비스 또는 애플리케이션을 다시 시작하는 것이 좋지만 애플리케이션 배포 전략에 따라 다릅니다. 예를 들면 다음과 같습니다. 

  • Java 기반 애플리케이션에서의 경우 보안 수정 사항을 적용한 후 애플리케이션 서버를 다시 시작해야 합니다.


Q. Red Hat OpenShift 제품(OpenShift Logging 포함)에서 업데이트를 사용할 수 있는 경우 업데이트를 수락해야 합니까? 

  1. OpenShift Container Platform 및 OpenShift Logging 업데이트 프로세스에 대한 자세한 내용은 다음 가이드를 참조하십시오.


질문: ARO/OSD/ROSA와 같은 서비스는 취약합니까? 

답변: 아니요. 해당 이유는 다음에서 참조하십시오. 

Apache log4j2 Remote Code Execution (RCE) 취약점


Q: 위에서 언급한 Log4j v2 업데이트를 적용한 후에도 CVE-2021-45046, CVE-2021-45105 및 CVE-2021-44832에서 보안 에라타가 릴리스될 때까지 기다려야 합니까?

A: 아니요. CVE-2021-45046CVE-2021-45105 및 CVE-2021-44832의 새로운 릴리스를 기다릴 필요가 없습니다. 이러한 CVE 모두 보통 (MODERATE) 심각도 보안 등급으로 분류되어 있습니다. 제품의 Log4J 구성에서 컨텍스트 조회(예: $${ctx:loginId})에서 기본이 아닌 패턴 레이아웃을 사용하지 않는 경우(Red Hat 제품에서 기본으로 설정되지 않고 즉시 사용 가능한 설정이 아닌 경우) 이러한 문제에 취약하지 않습니다.


Q: 일부 Red Hat 제품은 Log4j v1을 제공합니다. 이 보안 공지에 언급된 업데이트를 수행하면 Log4j v1의 취약점도 수정됩니까?

A: Log4j 버전 1.x는 CVE-2021-44228 (Log4Shell)의 영향을 받지 않습니다. Log4j v1.x의 경우 아래 언급된 영향을 받는 라이브러리 또는 구성 요소에 따라 다른 알려진 문제가 있지만 기본 설정으로 사용하면 이러한 구성의 대부분은 영향을 받지 않습니다.

  • CVE-2021-4104 (Log4j v1.x JMSAppender)는 심각도 등급 보통으로 분류되어 있습니다. Log4j v1.2는 공격자가 Log4j 구성에 대한 쓰기 액세스 권한이 있거나 기본 구성이 아닌 특정 옵션이 활성화된 JMSAppender를 사용하도록 구성된 경우 신뢰할 수 없는 데이터의 역직렬화에 취약합니다. 

  • CVE-2022-23302 (Log4j v1.x JMSSink)는 보안 심각도 등급은 보통입니다. Log4j v1.x는 신뢰할 수 없는 데이터를 역직렬화(deserialization)하는 과정에서 보안 취약점이 있습니다. 이 취약점은 기본값이 아닌 JMSSink를 사용하도록 특별히 구성된 애플리케이션 또는 공격자의 JNDI LDAP 엔드포인트에 JMSSink를 추가하기 위해 공격자에게 Log4j 구성에 대한 쓰기 액세스 권한이 있는 경우에만 영향을 미칩니다.

  • CVE-2022-23305 (Log4j v1.x JDBCAppender)는 보안 심각도 등급 중요로 분류되어 있습니다. Log4j v1.x의 JDBCAppender는 신뢰할 수 없는 데이터에서 SQL 인젝션에 취약합니다. 이 문제는 기본값이 아닌 JDBCAppender를 사용하도록 특별히 구성된 경우에만 Log4j v1.x에 영향을 미칩니다.

  • CVE-2022-23307 (Log4j v1.x Chainsaw)은 보안 심각도 등급 중요로 분류되어 있습니다. 특정 로그 항목의 콘텐츠가 역직렬화되고 코드 실행을 허용하는 log4j v1.x chainaw 구성 요소에서 취약점이 발견되었습니다. Chainsaw는 log4j에서 로그 항목을 표시하는 독립형 그래픽 사용자 인터페이스입니다. 이 취약점은 사용 가능한 다른 방법을 사용하여 로그 항목에 액세스하면 이 문제를 방지할 수 있습니다.

자세한 내용은 개별 CVE 페이지를 참조하십시오. 


Comments