전자정부측 log4j 관련 FAQ 자료 공유(2.15 버전 업그레이드)

2021. 12. 14. 11:17IT개발/Java

반응형

[BEFORE] 전자정부 pom.xml 의 Dependency Hierarchy 탭

[AFTER] 전자정부 pom.xml 의 Dependency Hierarchy 탭


원본 글 : https://www.egovframe.go.kr/home/faqinfo/faqinfoRead.do?pagerOffset=0&searchKey=&searchValue=&menuNo=68&faqId=FAQ_0000000000000812 

 

자주 묻는 질문 | 표준프레임워크 포털 eGovFrame

처리중입니다. 잠시만 기다려주십시오.

www.egovframe.go.kr

1. Log4 jdbc v1.2를 적용하고 있는데 이런경우는 보안패치 해당사항이 없는건가요?
보안패치 대상은 Log4 jdbc가 아닌
Log4j-core입니다. 다음 2번을 참고하여 대상인지 필히 확인을 하셔야 합니다.

2. Log4j2 패치를 해야하는 대상인지 잘 모르겠어요.
* 개발환경에서 확인
이클립스 개발환경에서는 pom.xml파일을 오픈한후
Dependency Hierarchy 탭을 오픈한후 목록에서 log4j-core : 2.X.X가 있는지 확인합니다.
최종적으로 적용되는 버전은 "Resolved Dependency"목록에서 확인 가능합니다.
또는 이클립스 개발환경에서 Maven Dependency 항목의 목록에서
log4j-core-2.X.X.jar 파일이 있는지 확인 합니다.

* 운영환경에서 확인
WAS 서버에서 웹프로젝트가 배포된 디렉토리에서
WEB-INF/lib 디렉토리에서 log4j-core-2.X.X.jar 파일이 있는지 확인 합니다.


3. Log4j 1.x를 사용하는데 패치를 해야 하나요?
apache log4j 2.0-beta9 ~ 2.14.1 모든버전이 해당되며, 1.x버전은 해당사항이 없습니다.


4. Log4j2 2.15.0을 pom.xml에 적용하는 방법은 어떻게 되나요?
pom.xml에 다음을 추가합니다.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
배포시 대상서버에 WEB-INF/lib 디렉토리에
log4j-core-2.15.0.jar파일이 배포되었는지 확인합니다.

표준프레임워크 v3.6 및 v3.7에서는 다음 설정이 추가로 필요할수 있습니다.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.15.0</version>
</dependency>


5. Java 8 이상으로 업그레이드 후 Log4j 2.15.0을 패치하는 것이 가장 권장되는 방법인데, 저희 시스템은 Java 8으로 업그레이드할 수 있는 상황이 아니예요. 어떻게 해야할까요?
다음 Apache Log4j 버전별로 조치 합니다.
o Log4j 2.0-beta9 ~ 2.10.0
- JndiLookup 클래스를 경로에서 제거 :
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
* 해당 명령이 수행되지 않는경우 다른 압축해제 툴을 사용하여 압축을 해제한후 "JndiLookup.class"를 삭제후 동일한 파일명으로 다시 압축을 합니다.

o Log4j 2.10 ~ 2.14.1
- JVM 환경변수에서 다음을 추가 합니다.
-Dlog4j2.formatMsgNoLookups=true
- OS 환경변수에서 다음을 추가 합니다.
LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정

o OS 환경변수 확인방법
- Linux 및 Unix 계열
export 명령으로 목록 확인 가능
echo $환경변수
- Windows
set 명령으로 목록 확인가능
echo %환경변수%

o JVM 환경변수 확인방법
- Linux 및 Unix 명령으로 확인
ps -ef grep log4j2.formatMsgNoLookups
- java 코드에서 확인하는 방법
System.getProperty("log4j2.formatMsgNoLookups")


6. 표준프레임워크를 적용하고 있지 않은 JVM기반 웹서비스인데 대상이 되나요?
Java 기반 JVM 환경을 사용하는 모든 서비스에서
Apache Log4j2를 사용하는 시스템은 모두 조치 대상입니다.


7. 개발환경에서 테스트 없이 운영서버에 바로 반영해도 문제가 없나요?
개발시 다양한 라이브러리가 추가로 적용되어 있을수 있으므로
반드시 개발환경이나 테스트베드환경에서 확인후 운영서버에 반영해야 합니다.

반응형