아래는 전자정부프레임워크 홈페이지에서의 Apache Log4j 보안이슈 대응에 대한 문의입니다.
아래글을 잘 모르시는 분들이 많아서 좀 많은 분들에게 알리기 위해 포스팅하였습니다.
계속해서 버전이 업데이트되고 있으니 전자전부 프레임워크홈페이지와 메이븐리포지토리 사이트에
수시로 방문하셔서 확인 바라겠습니다!
(글 하단에 홈페이지 링크가 있습니다.)
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. 표준프레임워크 v3.5 ~ v3.10을 사용하는경우 패치 방법이 어떻게 되나요?
※ JDK7 사용하는 경우
표준프레임워크 개발환경에서
로컬 메이븐 레포지토리 "/egovframework/" 하위 디렉토리 삭제후
프로젝트 우클릭후
Maven > Update Project를 선택하여 업데이트 합니다.
pom.xml 파일을 오픈후 Dependency Hierarchy 탭을 클릭한 후
Filter "log4j"를 입력합니다.
우측 "Resolved Dependency" 목록에서 log4j-core : 2.12.2가 적용되었는지 확인합니다.
※ JDK8의 경우
pom.xml에 다음을 추가합니다.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
</dependency>
* 아파치 재단 Log4j-core 배포 최신버전 확인 ( 새로운 버전 지속적 업데이트 중)
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
4. 표준프레임워크 v3.0 ~ v3.1을 사용하고 있고 JDK7또는 JDK8에서 보안이슈가 패치된 Log4j2 최신버전으로 pom.xml에 적용하는 방법은 어떻게 되나요?
※ JDK8은 Log4j-core 2.17.0 이상 최신버전을 적용합니다.
pom.xml에 다음을 추가합니다.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
</dependency>
배포시 대상서버에 WEB-INF/lib 디렉토리에
log4j-core-2.17.0.jar 이상 최신버전의 파일이 배포되었는지 확인합니다.
※ JDK7은 현재 <version>2.12.2</version>로 변경하여 Log4j-core 2.12.2를 적용합니다. ( 기존 취약점 보완한 v2.12.3 출시예정 )
* 아파치 재단 Log4j-core 배포 최신버전 확인 ( 새로운 버전 지속적 업데이트 중)
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
5. 표준프레임워크 v1.0 ~ v2.x에서 JMSAppender를 사용하고 있는데 어떻게 해야 하나요?
임시조치로 JMSAppender를 삭제합니다.
JDK7 이상인경우 Log4j-core 최신버전으로 업데이트 하기위해 표준프레임워크 버전을 최신버전으로 업그레이드 합니다.
* 다음 업그레이드 가이드를 참조하여 표준프레임워크를 최신버전으로 업그레이드 합니다.
https://www.egovframe.go.kr/home/ntt/nttRead.do?pagerOffset=0&searchKey=&searchValue=&menuNo=75&bbsId=3&nttId=1778
6. 표준프레임워크 v3.0 ~ 3.1 사용하고 있고, 저희 시스템은 JDK7 또는 JDK8로 업그레이드할 수 있는 상황이 아니예요. 어떻게 해야할까요?
o JndiLookup 클래스를 경로에서 제거 :
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
* 해당 명령이 수행되지 않는 경우 다른 압축해제 툴을 사용하여 압축을 해제한후 "JndiLookup.class"를 삭제후 동일한 파일명으로 다시 압축을 합니다.
o 다음 설정을 사용하는 경우 아래의 조치방안으로 조치 적용
- PatternLayout에서 ${ctx:loginId} 또는 $${ctx:loginId}를 (%X, %mdc, or %MDC)로 변경
- ${ctx:loginId} 또는 $${ctx:loginId}를 제거
※ 본 방법은 임시조치 방법이며 향후 운영서버 JDK7이상으로 업그레이드 하고 표준프레임워크 및 Log4j-core 최신 버전을 적용하셔야 합니다.
7. log4j 1.x에서 보안이슈에 해당사항이 없는 경우는 아무런 조치를 안 해도 되나요?
log4j 1.x버전의 경우 Apache 재단의 추가적인 업그레이드 지원 중지로 인해 다른 보안위협에 노출될 가능성이 높아
향후 JDK7 이상으로 업그레이드 후 프레임워크 및 Log4j-core 최신 버전 적용을 권고 합니다.
8. 로그처리 라이브러리로 보안이슈가 있는 Log4j가 아닌 Logback을 쓰면 되나요?
Logback은 log4j 1.x 버전을 기반으로 개발한 로깅 라이브러리로서
취약점이 존재하여 v1.2.9 이상으로 업데이트 하여야 합니다.
9. Log4j 보안이슈는 표준프레임워크를 적용하고 있지 않은 JVM기반 웹서비스인데 대상이 되나요?
Java 기반 JVM 환경을 사용하는 모든 서비스에서
아파치 재단에서 배포하는 Log4j2를 사용하는 시스템은 모두 조치 대상입니다.
10. 개발환경에서 테스트 없이 운영서버에 바로 반영해도 문제가 없나요?
개발시 다양한 라이브러리가 추가로 적용되어 있을수 있으므로
반드시 개발환경이나 테스트베드 환경에서 확인 후 운영서버에 반영해야 합니다.
https://www.egovframe.go.kr/home/main.do
'JAVA' 카테고리의 다른 글
[JAVA] 브라우저 및 OS정보 얻는 방법!! (0) | 2022.01.13 |
---|---|
[JAVA] String날짜 형태 비교 방법!! (compareTo 사용법) (2) | 2021.12.27 |
JMSAppender 사용여부 확인 방법!! (+2.x 버전 조치사항 방법!!) (0) | 2021.12.21 |
[JAVA] 객체지향 특징 및 Solid 원칙 정리!! (0) | 2021.12.08 |
[Java] 엑셀 다운로드 기능 구현!! (영상 有) (6) | 2021.11.27 |
댓글