내가 필요해서 내가 적는 블로그

JAVA 백엔드 개발자의 기록들

JAVA

Log4j 취약점 (긴급조치)

돌프 2021. 12. 21. 12:44
반응형

비상!!!!! 비상!!!!!

전세계 Log4j 취약점이 터졌다. 

아파치소프트웨어재단에서 보안위협단계 1~10단계중 10단계에 해당하는 긴급조치가

필요한 취약점이라고 발표가 나왔다.

 

13억개 이상의 Java로 된 어플리케이션이 돌아가고 있고, 현실적으로 이미 배포된 폐쇄망, 버려진 오래된 소스 등

버전업을 하여 재배포하기란 쉽지 않다. 어쩔수 없다면, 아래와 같이 보안취약점에 해당하는 class 파일을 제거하는

방법을 고려해보자. 

 

일단 내 로컬에 log4j-1.2.x 대 버전을 두고 

zip -d log4j-1.2.12.jar org/apache/log4j/net/JMSAppender.class 혹은 

zip -d log4j-1.2.*.jar org/apache/log4j/net/JMSAppender.class (* 모든버전일괄)

 

zip : 압축하는 리눅스 명령어

-d : 특정경로의 class를 delete 한다. 

위의 명령어를 실행하면 deleting : org/apache/log4j/net/JMSAppender.class 라고 출력메세지가 나온다. 

 

 

log4j-2.x 버전도 똑같다. 

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

 

위의 명령어를 실행하면 아무 메세지가 뜨지 않고 삭제가 된다. 

 -q 옵션이 메세지 출력 제한 옵션이다. 

 

삭제를 한뒤 Jar 파일을 압축해제하여 해당 경로에 문제가 되는 JndiLookup.class 를 확인해보니 잘 삭제가 되었고, 

Jar 파일 용량도 20KB 줄어 있었다. 

 

중요한 사실은 1.2.x 버전은 log4j.jar 안에 JMSAppender 가 문제가 되고,

2.x 버전은 log4j-core 안에 JndiLookup이 문제가 된다.  1버전과 2버전의 경로가 다르다. 

 

* Jar 파일을 압축해서 해당경로에 들어가 봄.

 

 

그래서 마지막으로 -q 옵션을 빼고 실행해보았다. 

폭풍 Warning..... 

 

 

아무튼 오늘은 버전업데이트 불가시 위협이 될 수 있는 Class 파일 삭제 조치를 하는 방법을 알아보았다.

누군가에게 도움이 되길 바란다.

 

 

 

* 참고자료

https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389 

 - KISA 한국인터넷진흥원 ([6] 취약점 대응 가이드)

 

 

 

 

본문 내용이 도움이 되셨다면, 아래의 공감버튼을 눌러주세요. 

정보 공유를 위한 포스팅에 큰 힘이 됩니다. 

만약 틀린 정보가 있으면 댓글 달아주세요. 수정하도록 하겠습니다. 

읽어주셔서 감사합니다. 오늘도 좋은 하루 보내세요. 

 

반응형