log4j2

마인크래프트 서버를 대상으로 대규모 악성코드 공격이 감지 되었는데, log4j2의 취약점을 이용 하였답니다.

역사상 최악의 취약점 이라고 할 만큼, 많이 사용 하는 아파치재단의 오픈소스 라이브러리인

log4j2의 취약점이기에 대대적으로 보도까지 되었네요.

이중에서 log4j2-core를 사용하는 어플리케이션에서 취약점 공격이 가능 하다고 하며,

log4j2-core v2.15.0 으로 긴급 패치가 되었다고 합니다.


log4j2를 사용하는 모든 서버는 log4j2를 2.15.0 으로 업데이트를 하길 권하는데, 

서버 개발자 분들은 아시겠지만, 디펜던시 수정 하기가 쉽지 않은 일입니다.

그리고 문제되는 버전은 2.0 >= Apache log4j <= 2.14.1 입니다.

즉, 1.x 버전대는 해당 되지 않습니다.


일단 이 글에서는, spring boot의 기본 logging을 사용 한다면 이 걱정을 안해도 된다는 것을 알려 드립니다.

spring.io 블로그의 포스팅에 의하면, 

Spring Boot 사용자는 기본 로깅 시스템을 Log4J2로 전환한 경우에만 이 취약점의 영향을 받습니다. 
spring-boot-starter-logging에 포함된 log4j-to-slf4j 및 log4j-api jar는 자체적으로 악용될 수 없습니다. 
log4j-core를 사용하고 로그 메시지에 사용자 입력을 포함하는 응용 프로그램만 취약합니다.


곧 출시될 v2.5.8 및 v2.6.2 릴리스(2021년 12월 23일 예정)는 Log4J v2.15.0을 선택하지만 이것은 심각한 취약점이므로 종속성 관리를 무시하고 Log4J2 종속성을 더 빨리 업그레이드하는 것이 좋습니다.

https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-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

 

한마디로, 기본 spring boot의 loggging 모듈은 문제되는 log4j-core를 사용 하지 않기 때문에 걱정 하지 않아도 된다는 이야기 이죠.

하지만 기본 logging을 빼버리고  log4j2를 직접 사용하도록 수정 한 경우, 보안 이슈가 발생 된다고 합니다.

2.0-beta9~2.10.0 버전의 경우 JndLookup 클래스를 경로에서 제거

( 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 로 설정 합니다.

java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar myapp.jar

 

+ Recent posts