최근 아파치재단에서 배포하여 스프링, 전자정부 및 스프링부트 등 Java 기반의 어플리케이션 서버에서 범용적으로 쓰이는 로깅 라이브러리인 log4j 취약점이 발생했다는 소식이 들려 왔습니다.
또한 한국인터넷진흥원에서 아래와 같은 공지사항을 안내하였습니다.
https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389
아파치 log4j에 대한 아파치 웹 페이지에서도 해당 이슈에 대해서 설명하고 있습니다.
* 해당 사이트를 등록하셔서 바뀌는 버전과 이슈를 자주 확인하셔야 합니다. 한국인터넷진흥원보다 소식이 더 빠릅니다.
https://logging.apache.org/log4j/2.x/
이러한 이슈를 간략하게 정리하여보면,
log4j에서 사용하는 라이브러리가 LDAP 취약점이 발견이 되어 해커가 이를 탈취할 경우에는 서버에 대한 정보를 획득하여 임의로 데이터를 위변조 하거나 탈취 할 수 있다라는 내용 입니다.
* org.apache.logging.log4j 패키지의 라이브러리 뿐만 아니라 org.slf4j 패키지에서 사용하는 로거도 대상입니다.
이에 대한 조치방법은 매우 간단합니다.
log4j 라이브러리 버전을 가장 최신버전인 2.15.0 버전으로 상향시키면 됩니다 * 2021-12기준 입니다.
log4j 라이브러리 버전을 가장 최신버전인 2.17.0 버전으로 상향시키면 됩니다
* 2021-12-28 기준 입니다. 버전이 계속 바뀔 수 있습니다.
샘플로 pom.xml에서 버전을 올리는 모습 입니다.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
그러나 해당 라이브러리는 java 8 이하에서는 동작하지 않으므로 자바 7이하의 모든 프로젝트는 적용 할 수가 없습니다.
이럴 때는 눈물을 머금고 아래처럼 클래스를 제거 하거나 설정파일의 값을 변경 합니다.
- (조치방법) 2.0-beta9 ~ 2.10.0
※ JndiLookup 클래스를 경로에서 제거 : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
- (조치방법) 2.10 ~ 2.14.1
※ log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정
#환경변수를 변경하는 방법 (대상 버전 : 2.10 ~ 2.14.1)
아래 3가지 방법 중 1가지를 선택 합니다.
아무래도 가장 쉬운 2번과 3번을 주로 하겠네요.
# 3가지 방법 중 1가지를 선택 합니다.
1) Java 실행 값에 Arguments 에 시스템 속성을 추가한다. -Dlog4j2.formatMsgNoLookups=true
2) java 명령어를 통하여 아래 변수값을 변경한다
* 명령어 : java -Dlog4j2.formatMsgNoLookups=true -jar log4j.버전.버전.jar
3) Java 실행 계정의 환경 변수 혹은 시스템 변수로 LOG4J_FORMAT_MSG_NO_LOOKUPS=true를 설정한다.
#클래스 제거 방법 설명 (대상 버전 : 2.0.x ~ 2.10.0)
클래스를 제거하는 방법을 간단하게 소개 합니다.
1) 제거할 lib 디렉토리 까지 이동 합니다.
그리고 대상 파일을 복사하여 임의의 디렉토리를 만들어 복사 붙여넣기 한 다음 아래 명령어를 입력 합니다.
jar -xvf log4j-core-2.버전.버전.jar
2) 그리고 JndiLookup.class를 삭제 합니다.
3) 삭제를 하였으니 해당 파일을 다시 압축 합니다.
아래 명령어를 입력 합니다.
jar -cvf log4j-core-2.버전.버전.jar ./
이상으로 아파치 로그4j2 취약점(log4j LDAP, Apache Log4j 2)에 대해서 살펴보았습니다.
빠른 조치를 통해 피해가 없으시길 바랍니다.
틀린부분 또는 궁금한 점은 언제든 연락주세요! 👻
'웹 취약점(Web vulnerability)' 카테고리의 다른 글
취약한 printStackTrace 메소드(CWE-497) (0) | 2022.01.17 |
---|---|
웹 표준 취약점 대비 후기 (0) | 2021.12.11 |
28. 쿠키변조(CC) (0) | 2021.12.10 |
27. 데이터 평문전송(SN) (0) | 2021.12.10 |
26. 위치공개(PL) (0) | 2021.12.10 |
댓글