-
Log4j 취약점 및 대응방안; CVE-2021-44228(Log4Shell 혹은 LogJam 명명)카테고리 없음 2021. 12. 15. 09:45728x90반응형
0.why
- 테나블(Tenable)에서는 이 사태를 '하트블리드와 CPU 게이트 따위는 비교도 안 될 만큼, 컴퓨터 인터넷 역사를 통틀어 사상 최악의 보안 결함일 수도 있다'고 경고
- 국내에서도 아주 많은 수의 시스템이 Log4j를 사용중
1.개요
- 아파치 소프트웨어 재단의 Java 프로그래밍 언어로 제작된 Log4j 라이브러리를 사용하는 대부분의 인터넷 서비스에서 매우 중대한 보안 취약점이 발견된 사건
2.심각성
- 아파치 소프트웨어 재단에서 이 취약점을 보안 위협 수준, CVSS 스코어를 1~10 단계 중 최고 등급인 '10단계'로 평가
- 보안 업체 '텐에이블'의 CEO는 "최근 10년간 가장 치명적이고 거대한 취약점으로, 현대 컴퓨터 역사를 통틀어 최악의 보안 결함일 수 있다"라는 말함.
- Log4j2 중에 존재하는 'JNDI(Java Naming and Directory Interface)' 인젝션 취약점을 악용, 해커들이 목표 대상 컴퓨터의 모든 권한을 취득, 비밀번호 없이 서버를 통해 내부망에 접근 데이터를 탈취, 삭제, 악성 프로그램을 실행 가능.
3.원리
- JNDI와 LDAP을 이용하여 관리자 권한으로 원격으로 프로그램 실행이 가능한 취약점
* JNDI(Java Naming and Directory Interface) : Java 프로그램이 디렉토리를 통해 데이터(Java 객체 형태)를 찾을 수 있도록 하는 디렉토리 서비스
* JNDI는 이러한 디렉토리 서비스를 위해 다양한 인터페이스가 존재하는데 그 중 하나가 LDAP이며, 이 LDAP가 이번 취약점에 가장 중요한 포인트임.
* 예시로 URL ldap://localhost:389/o=JNDITutorial을 접속한다면 LDAP 서버에서 JNDITutorial 객체를 찾을 수 있음.
- '마인크래프트'에서 처음 확인되었고, 자바(Java) 언어로 개발된 마인크래프트 버전에서 프로그래밍 코드로 이루어진 특정 채팅 메시지를 입력하면 대상 컴퓨터에서 원격으로 프로그램을 실행 가능함.
- 해커가 로그에 기록되는 곳을 찾아 ${jndi:sndi:snd://example.com/a}과 같은 값을 추가하기만 하면 취약점을 이용할 수 있음. 이 값을 넣는 방법은 User-Agent와 같은 일반적인 HTTP 헤더일 수도 있고 여러가지 방법이 존재함.
4. 영향을 받는 버전 및 대응방안
- 영향을 받는 버전 : Apache Log4j 2(2.0-beta9 ~ 2.14.1 모든버전)
- 대응방안
(2.0-beta9 ~ 2.10.0) JndiLookup 클래스를 경로에서 제거 :
zip -q -d log4j-core-.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
* (2.10 ~ 2.14.1) log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정
* (2.7 ~ 2.14.1) 로그 출력 시 %m 대신 %m{nolookups} 포맷으로 수정 (patternLayout 패턴 수정)* KISA(한국인터넷진흥원) 보안공지 확인 및 대응
728x90반응형