최근 이슈가 되고있는 log4j 보안이슈에 관해서 적어보려고 한다.
log4j이슈는 마인크래프트에서부터 이슈가 된 심각한 보안 취약점이다.
log4g란?
Apache에서 만든 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티(Log for Java)
심지어 log4j는 자바 프로그램이라면 거의 대부분이 의존하고있는 라이브러리라서 이번 보안이슈는 더 충격적일 수 밖에 없다.
첫 번째로 log4j 버전을 올린다.
log4j 2.16.0의 경우는 아직 안정화된 버전이 아니다.
하지만 jndi를 사용해야 한다면, 버전을 올리는 방법을 선택해야 한다.
maven이나 gradle에서 세팅을 변경한다.
2.15.0이상으로 사용하면 보안이슈에 대해서 안전하다는 말이 있었는데 최근 2.15.0에서도 취약점이 발견되었다. 2.16.0으로 올릴 것.
두 번째 방법으로는 시스템 속성을 변경하는 방법이다.
log4j2.formatMsgNoLookups 시스템 속성을 true로 변경한다.
java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
세 번째로 log4j-core.jar에서 JndiLookup 클래스를 경로에서 제거 ( 전자정부프레임워크에서 제시한 해결방법 )
zip -q log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
1.2의 경우는 JMSAppender를 사용하는 경우만 해당된다.
JMSAppender의 경우는 log4jProperty파일에서 JMSAppender라고 명시된 부분이 없다면 사용하지 않는다고 봐도 무방하다.
JMSAppender를 사용하는 경우에는 log4j-core.jar와 마찬가지로 JMSAppender를 삭제한다.
위 방법도 안될 시는 버전 업그레이드를 생각해야한다.
1.2.x 버전
※ JMSAppender를 사용하지 않는 경우 취약점 영향 없음