개발/Java

Log4j 라이브러리 보안 이슈(CVE-2021-44228). 영향 받는 버전 및 해결 방안

IT하는 문과생 2021. 12. 13.

로그를 남기기 위한 라이브러리 가운데 Log4j라는 오픈 소스가 있다.
오픈 소스이면서도 로그 저장에 있어 유용한 기능들이 많아 JAVA 프로그래밍을 하는 대부분의 개발사에서 사용 중인 라이브러리인데, 이번에 문제가 조금 생겼다. 아니 좀 크게 생겼다. 문제가 된 것은 Log4j 라이브러리의 취약점(명령어를 실행시킬 수 있다는) 때문인데, 앞서 말했듯이 JAVA 프로그래밍된 대부분의 사이트 및 프로그램에서 Log4j를 사용 중이기 때문에 더 문제점이 크다고 볼 수 있다. 덧붙여 이 이슈가 문제가 되는 것은 서버에 로그인한 것 만으로 해커가 사용자의 컴퓨터를 사실상 원격 조종할 수 있는 것이기 때문이다. 단순히 원격 조종이라고 하면 실감이 안날 수도 있는데, 구체적으로 설명하자면 비밀번호도 없이 서버를 통해 내부망에 접근해 데이터를 약탈하거나 악성 프로그램을 심어 실행시키고, 심지어는 자료까지도 삭제할 수 있는 이슈다.
KISA에서도 이 문제점에 대해 다음과 같이 해결 방안을 제공하고 있다. 혹시 JAVA 관련 개발을 하고 있다면 아래의 내용을 참고해서 빠르게 보안 패치를 진행할 수 있도록 하자.

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

□ 영향을 받는 버전
o CVE-2021-44228
- 2.0-beta9 ~ 2.14.1 버전 (Log4j 2.12.2 제외)
o CVE-2021-45046
- 2.0-beta9 ~ 2.12.1 및 2.13.0 ~ 2.15.0 버전
o CVE-2021-4104
- 1.2.x 버전
※ JMSAppender를 사용하지 않는 경우 취약점 영향 없음
※ log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안위협에 노출될 가능성이 높아 최신버전 업데이트 적용 권고
o 별도 프로그램을 통해 취약점 대상 파일인지 확인하기(출처: Github/국내 개발)

logpresso-log4j2-scan-1.1
0.01MB
logpresso-log4j2-scan-1.1
2.92MB
logpresso-log4j2-scan-1.1
2.81MB


o 취약점 검출 프로그램 사용 방법(각 시스템 별 맞는 파일을 다운로드 하여 사용하면 되고 긴급 fix도 가능하나 임시조치일 뿐이다. 버전 업데이트는 필요하다.)
대상 디렉토리 경로에서 log4j2-scan.exe 또는 log4j2-scan을 아래와 같이 실행

  • Windows : log4j2-scan [--fix] target_path
  • Linux : ./log4j2-scan [--fix] target_path
  • UNIX(AIX, Solaris 등): Java -jar logpresso-log4j2-scan-1.1.0.jar [--fix] target_path


덧붙여 위 프로그램 실행 시 --Fix 옵션을 추가하면, 이 프로그램은 취약한 원본 JAR 파일을 .bak 파일에 복사하고 org/apache/logging/log4j/core/lookup/JndiLookup.class 항목 없이 새 JAR 파일을 만드는 작업을 진행한다. 위 옵션으로 실행 하면 지금 문제가 되는 JNDI lookUp 기능이 비활성화 처리 되는데, 보안 문제라고 하더라도 특정 기능을 비활성화 처리하는 작업이다. 엔터프라이즈 환경이라면 영향도 검토 및 내부 결제 라인의 승인을 받은 다음 진행하길 권고 한다. 그리고 만약 패치를 적용하기로 결정했다면 실행 중인 JVM 프로세스를 종료하고, 패치 적용 후 JVM 프로세스를 시작하면 된다.

□대응방안
o 제조사 홈페이지를 통해 최신버전으로 업데이트 적용
※ 제조사 홈페이지에 신규버전이 계속 업데이트되고 있어 확인 후 업데이트 적용 필요
※ 신규 업데이트가 불가할 경우 임시조치방안 적용 권고
- CVE-2021-44228, CVE-2021-45046
· Java 8 : Log4j 2.16.0으로 업데이트
· Java 7 : Log4j 2.12.2으로 업데이트
· 임시조치방안 : JndiLookup 클래스를 경로에서 제거 : zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
· 위 프로그램을 통한 패치(임시조치로 버전 업데이트는 반드시 필요) 혹은 제조사 홈페이지를 통해 최신 버전(2.15.0)으로 업데이트 적용(링크: Apache Log4j 공식 패치 사이트)
※ 임시조치방안은 게시된 취약점에 대한 임시적 조치로 신규 버전으로 업그레이드를 권장함
※ log4j-core JAR 파일 없이 log4j-api JAR 파일만 사용하는 경우 위 취약점의 영향을 받지 않음

- CVE-2021-4104
· Java 8 : Log4j 2.16.0으로 업데이트
· Java 7 : Log4j 2.12.2으로 업데이트


반응형

댓글