관리 메뉴

피터의 개발이야기

Apache Log4j 보안이슈 대응 본문

Programming/Spring

Apache Log4j 보안이슈 대응

기록하는 백앤드개발자 2021. 12. 13. 23:30
반응형

Apache Log4j 보안이슈를 대응했던 히스토리를 남깁니다.

 

 

□ 개요
 o Apache 소프트웨어 재단은 자사의 Log4j 2에서 발생하는 취약점을 해결한 보안 업데이트 권고[1]
 o 공격자는 해당 취약점을 이용하여 악성코드 감염 등의 피해를 발생시킬수 있으므로, 최신 버전으로 업데이트 권고

 
□ 주요 내용
 o Apache Log4j 2*에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)[2]
   * 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티

□ 영향을 받는 버전
 o 2.0-beta9 ~ 2.14.1 모든버전
 
□ 해결방안
 1)  2.0-beta9 ~ 2.10.0
   - JndLookup 클래스를 경로에서 제거 : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

 2) 2.10 ~ 2.14.1
   - log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정

 3) 제조사 홈페이지를 통해 최신버전(2.15.0)으로 업데이트 적용

      build.gradle에 다음 코드를 추가하였다.

ext['log4j2.version'] = '2.15.0'


□ 적용 테스트 방법

 1) gradle 적용 후 IDE에서 수기로 확인

 2) Log4Shell 테스트 사용

  Log4Shell Detector는 패키지 매니저와 jar 파일 분석을 통해 CVE-2021-44228이 발견된 log4j를 사용 중인

프로젝트를 탐지해 주고 유무에 따라 업데이트를 안내해준다.
분석방법은 첫번째로
패키지 매니저 분석를 분석한다. java 패키지 매니저 파일인 pom.xml이나 build.gradle 를 분석하여 취약한 버전의 log4j-core 사용 유무를 확인한다. 둘째 jar 파일을 분석하여 jar 파일을 직접 링크하여 사용하는 경우를 탐지한다.

 

Step1과 Step2에 대한 분석결과 2.11.2를 확인할 수 있다. 

3) 운영적용 후 테스트

 운영배포 후 검증 단계에서 테스트 방법을 고민하게 되었다. 모의 해킹이 베스트이겠지만 능력이 부족하여, 운영배포된 Jar의 Lib를 확인하기로 하였다. Pod에 저장된 Jar을 호스트 서버로 옮긴 후에 unzip을 하였다. BOOT-INF/lib 폴더에 Jar들을 확인 할 수 있다. 


□ 아파치 홈페이지 및 위키
- https://logging.apache.org/

- 위키 링크
- 취약점 도구 : Labrador Log4Shell 코드 레벨 점검 도구

 

반응형
Comments