log4j 보안이슈

종원유·2021년 12월 21일
0

Spring

목록 보기
3/10
post-thumbnail

최근 이슈가 되고있는 log4j 보안이슈에 관해서 적어보려고 한다.

log4j이슈는 마인크래프트에서부터 이슈가 된 심각한 보안 취약점이다.

log4g란?
Apache에서 만든 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티(Log for Java)

심지어 log4j는 자바 프로그램이라면 거의 대부분이 의존하고있는 라이브러리라서 이번 보안이슈는 더 충격적일 수 밖에 없다.

log4j 보안이슈를 해결하는 여러 방법들

첫 번째로 log4j 버전을 올린다.
log4j 2.16.0의 경우는 아직 안정화된 버전이 아니다.
하지만 jndi를 사용해야 한다면, 버전을 올리는 방법을 선택해야 한다.
maven이나 gradle에서 세팅을 변경한다.

2.15.0이상으로 사용하면 보안이슈에 대해서 안전하다는 말이 있었는데 최근 2.15.0에서도 취약점이 발견되었다. 2.16.0으로 올릴 것.

** log4j 2.15.0부터는 자바8 버전 이상이어야 한다. 즉, 첫 번째 방법은 jdk 1.8 이상부터

두 번째 방법으로는 시스템 속성을 변경하는 방법이다.
log4j2.formatMsgNoLookups 시스템 속성을 true로 변경한다.

java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar

**위 옵션은 log4j가 2.10.0이상이면 사용 가능하다.

세 번째로 log4j-core.jar에서 JndiLookup 클래스를 경로에서 제거 ( 전자정부프레임워크에서 제시한 해결방법 )

  • 시스템에서 JDK7 또는 JDK8로 업그레이드 할 수 있는 상황이 아니라면, JndiLookup 클래스를 경로에서 제거한다.
zip -q log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  • 해당 명령이 수행되지 않는 경우 압축해제 툴을 사용하여 압축을 해제한 후 JndiLookup.class 파일을 삭제한 후 동일한 파일명으로 다시 압축한다.
    그리고 제거한 log4j-core.jar를 lib 폴더에 덮어쓴다.

log4j 1.2

1.2의 경우는 JMSAppender를 사용하는 경우만 해당된다.
JMSAppender의 경우는 log4jProperty파일에서 JMSAppender라고 명시된 부분이 없다면 사용하지 않는다고 봐도 무방하다.
JMSAppender를 사용하는 경우에는 log4j-core.jar와 마찬가지로 JMSAppender를 삭제한다.
위 방법도 안될 시는 버전 업그레이드를 생각해야한다.

Log4j 관련 취약점 정보

(1) Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)

  • 2.0-beta9 ~ 2.14.1 버전 (Log4j 2.12.2 제외)

(2) Apache Log4j 2에서 발생하는 서비스 거부 취약점(CVE-2021-45046)

  • 2.0-beta9 ~ 2.12.1 및 2.13.0 ~ 2.15.0 버전

(3) CVE-2021-4104

  • 1.2.x 버전

    ※ JMSAppender를 사용하지 않는 경우 취약점 영향 없음

참고사이트 : https://www.egovframe.go.kr/home/faqinfo/faqinfoRead.do?pagerOffset=0&searchKey=&searchValue=&menuNo=68&faqId=FAQ_0000000000000812

참고 사이트 : https://velog.io/@composite/log4j-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%B0%9C%EA%B2%AC-%EB%B9%A8%EB%A6%AC-%ED%8C%A8%EC%B9%98%ED%95%98%EB%9D%BC

profile
개발자 호소인

0개의 댓글