log4j 취약점(CVE-2021-45105) 설명 및 대응 방법
가. 취약점 요약
항목 | 내용 | 비고 | |
CVE CODE | CVE-2021-45105 | ||
CVSS 점수 | 5.9 MEDIUM | ||
취약 대상 | log4j 2.0-alpha1 ~ 2.16.0 버전 이하 | Log4j 2.3.1, 2.12.3 버전 제외 | |
대응 방안 | JDK 8 이상 | log4j 2.17.1 이상으로 업데이트 | log4j 1.x 버전은 2015년에 EOS되었으므로, log4j 2.x 버전으로 업데이트 해야함 |
JDK 7 | log4j 2.12.4 이상으로 업데이트 | ||
JDK 6 | log4j 2.3.2 이상으로 업데이트 | ||
JDK 5 이하 | PatternLayout 변경 또는 삭제 |
나. 공격 원리
# curl server -H ‘X-Api-Version: ${${::-${::-$${::-$}}}}
공격자가 X-Api-Version 헤더에 위와 같은 페이로드를 포함한 요청을 서버에 전송하는 경우, 로그를 저장하는 과정에서 StackOverflowError가 발생하여 해당 프로세스가 종료될 수 있다
※ 해당 공격은 Log4j를 사용하는 응용 프로그램에서 'PatternLayout' 과 '쓰레드 컨텍스트 기능'이 사용되는 경우 발생
- 취약한 log4j.properties 설정
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = !${ctx:loginId}! %m%n
rootLogger.level = ALL
rootLogger.appenderRef.file.ref = console
- 취약한 소스코드
ThreadContext.put(“test”, “${::-${ctx:loginId}}”);
logger.error(“Test”);
다. 공격 영향
Log4j를 사용하는 응용 프로그램 또는 서비스가 종료되어 장애가 발생할 수 있음
라. 공격 대상
log4j 2.0-alpha1 ~ 2.16.0 버전 이하
※ 취약점이 해결된 버전 제외(Log4j 2.3.1, 2.12.3 및 이후 업데이트 버전 제외)
※ log4j-core-*.jar 파일 없이 log4j-api-*.jar 파일만 사용하는 경우 위 취약점의 영향을 받지 않음
※ log4j 1.x 버전은 이미 EOS되었으며, 다른 취약점이 존재하기 때문에 안전하지 않음
마. 대응 방안
Java 8 이상 : Log4j 2.17.1 이상 버전으로 업데이트
Java 7 : Log4j 2.12.4 이상 버전으로 업데이트
Java 6 : Log4j 2.3.2 이상 버전으로 업데이트
※ 버전 업데이트가 어려운 경우 아래의 방안으로 대응
- PatternLayout에서 ${ctx:loginId} 또는 $${ctx:loginId}를 (%X, %mdc, or %MDC)로 변경 또는 제거
- 소스코드 내에 ${ctx:loginId} 또는 $${ctx:loginId} 제거
바. 점검 도구(스캐너) 다운로드
2022.01.13 - [침해 사고 대응] - log4j 취약점 점검 도구(스캐너) 정리/다운로드
사. 참고 자료
KrCERT https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36397
CVE https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45105
NVD https://nvd.nist.gov/vuln/detail/CVE-2021-45105
보안뉴스 https://www.boannews.com/media/view.asp?idx=103443
'침해 사고 대응' 카테고리의 다른 글
logback 취약점(CVE-2021-42550) 설명 및 대응 방법 (0) | 2022.01.09 |
---|---|
log4j 취약점(CVE-2021-44832) 설명 및 대응 방법 (0) | 2022.01.09 |
log4j 취약점(CVE-2021-4104) 설명 및 대응 방법 (0) | 2022.01.09 |
log4j 취약점(CVE-2021-45046) 설명 및 대응 방법 (0) | 2022.01.09 |
log4j 취약점(CVE-2021-44228) 설명 및 대응 방법 (0) | 2022.01.09 |