Log4j 취약점 (CVE-2021-44228)
대응 방안
- 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로 설정
- 2021년 12월 14일을 기준으로 Apache log4j 2.15.0 버전이 일부 앱에서 잠재적인 취약점이 존재하는 것으로 확인됨 (CVE-2021-45046)
- 최신버전으로 업데이트 적용 권고
대응 방법
- Message formatting 을 통한 lookup 동작을 위해 ${protocol:~~~} 의 패턴을 갖는다. WAF(web application firewall) 에 룰을 설정하여 차단한다.
- Log4j2 의 message lookup 을 disable 한다. (2.10 <= current < 2.15.0)
JAVA 환경변수 -Dlog4j2.formatMsgNoLookups=true 또는
시스템 환경 변수 LOG4J_FORMAT_MSG_NO_LOOKUPS=true 설정 한다.
- Log4j2 를 2.15.0 이상 으로 업그레이드 한다.
- JNDI Lookup 을 disable 합니다. log4j-core artifact 에서 JndiLookup 클래스를 제거 하거나 Log4j2 를 2.16.0 으로 업그레이드 한다. (Disable JNDI by default)
- Remote codebase 를 disable 한다.
1. RMI 기반 설정은 com.sun.jndi.rmi.object.trustURLCodebase 와
com.sun.jndi.cosnaming.object.trustURLCodebase 를 false 로 셋팅 한다.
8u121 부터 false 가 default 로 변경 되었다.
(https://www.oracle.com/java/technologies/javase/8u121-relnotes.html)
2. LDAP 기반 설정은 com.sun.jndi.ldap.object.trustURLCodebase 를 false 로 셋팅 한다.
6u211, 7u201, 8u191, and 11.0.1 이상부터 false 가 default 이다.
출처
Zero-Day Exploit Targeting Popular Java Library Log4j
오픈 인프라 엔지니어 그룹
한국정보보호교육센터
sans