일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kotlin spring
- APM
- Kubernetes
- Linux
- IntelliJ
- kotlin querydsl
- Spring
- 티스토리챌린지
- AI
- CloudWatch
- CKA
- 공부
- kotlin coroutine
- 코틀린 코루틴의 정석
- MySQL
- 오블완
- Elasticsearch
- 정보처리기사 실기
- 정보처리기사 실기 기출문제
- 정보처리기사실기 기출문제
- CKA 기출문제
- 기록으로 실력을 쌓자
- minikube
- Pinpoint
- PETERICA
- mysql 튜닝
- kotlin
- aws
- AWS EKS
- Java
- Today
- Total
피터의 개발이야기
Apache Log4j 보안이슈 대응 본문
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 코드 레벨 점검 도구
'Programming > Spring' 카테고리의 다른 글
[SpringBoot] SpringBoot에 Graceful Shutdown 적용하기 (2) | 2022.06.27 |
---|---|
[SpringBoot] SpringBoot-Tomcat GracefulShutdown 구현 (0) | 2022.06.26 |
[Spring] DTO 깔끔하게 정리하는 법, Inner Class (0) | 2021.03.02 |
[Spring] 항상 동일한 데이터를 DB 호출하는 경우 Bean으로 데이터 생성하여 사용하기 (0) | 2021.02.01 |
[Spring] Spring에서 환경변수를 배열로 가져오기 (0) | 2021.01.28 |