Apache Log4j 보안 취약점
1. Log4J
- 자바 기반 로깅 유틸리티 / 디버그용 도구로 주로 사용.
- Logger : 로깅 메세지를 Appender 에 전달
- Appender : 로그의 출력 위치 결정
- Layout : 어떠한 형식으로 출력할것인지 결정
2. 주요내용
- Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44228)
- Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-45046)
- Apache Log4j 1.x에서 발생하는 원격코드 실행 취약점(CVE-2021-4104)
✱ Apache 소프트웨어 재단은 Log4j 2에서 발생하는 취약점 해결을 위한 보안 업데이트를 권고
3. Log4J 버전 별 영향
- CVE-2021-44228 : 2.0-beta9 ~ 2.14.1 이하 (2.3.1, 2.12.2, 2.12.3 제외)
- CVE-2021-45046 : 2.0-beta9 ~ 2.15.0 버전 (2.3.1, 2.12.2, 2.12.3 제외)
- CVE-2021-4104 : 1.x 버전
✱ JMSAppender를 사용하지 않는 경우 취약점 영향 없음
4. 대응방안
- 제조사 홈페이지를 통해 최신버전으로 업데이트 적용
- 제조사 홈페이지에 신규버전이 계속 업데이트되고 있어 확인 후 업데이트 적용 필요
- CVE-2021-44228, CVE-2021-45046
Java 8 이상 : Log4j 2.17.0으로 업데이트
Java 7 : Log4j 2.12.3으로 업데이트
Java 6 : Log4j 2.3.1으로 업데이트
✱ log4j-core-.jar 파일 없이 log4j-api-.jar 파일만 사용하는 경우 위 취약점의 영향을 받지 않음 - CVE-2021-4104
Java 8 : Log4j 2.17.0으로 업데이트
Java 7 : Log4j 2.12.3으로 업데이트
Java 6 : Log4j 2.3.1으로 업데이트
신규 업데이트가 불가능할 경우 아래와 같이 조치 적용- CVE-2021-44228, CVE-2021-45046
· JndiLookup 클래스를 경로에서 제거
$ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
- CVE-2021-44228, CVE-2021-45046
· JndiLookup 클래스를 경로에서 제거
- CVE-2021-4104
JMSAppender 사용 확인 후 코드 수정 또는 삭제
✱ log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안위협에 노출될 가능성이 높아 최신버전(2.x) 업데이트 적용 권고
4.1. 전자정부 프레임워크 Log4j 업데이트
- 전자정부 프레임워 3.5를 이용하는데 의존성이 전자정부 dataaccess > logging > log4j 2.1 버전이 이용중에 있었습니다.
- 단순히 log4j 만 2.17.0으로 업데이트 하려 했을때 서버 구동이 불가능하여 확인 결과 아래와 같이 추가적으로 slf4j 가 같이 업데이트 되어야 합니다.
- pom.xml
//pom.xml <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.17.0</version> </dependency>
5. 취약점 점검 방법
- ESTsecurity 에서 취약점 스캐너를 제공.
- 스캐너 이용하면서 생긴 문제점.
- centos7 - unzip 오류 발생
✱ 해결 : unzip rpm 버전 문제로 추정되나 unzip에 다운그레이드가 불가능하여 압축 해제 후 서버에 업로드 하여 작업이 가능했습니다. - 안내대로 sudo ./AlyacLog4jScanner_Linux_x64 /dir 이용시 command not found. 발생
✱ 해결 : 해당 파일에 실행 권한을 주어야 하며 명령은 아래와 같습니다.$ chmod +x AlyacLog4jScanner_Linux_x**
- centos7 - unzip 오류 발생
6. Log4j 공격여부 체크
- SK shieldus 에서 제공
- SK쉴더스에서 제공하는 Log 기록 체크 스크립트를 이용하여 확인 및 체크 가능합니다.
7. 참고
KISA 인터넷 보호나라 - 보안업데이트 공고
ESTsecurity
SKshieldus
[보안취약점] Apache Log4j 보안 취약점 - CVE-2021-44228, CVE-2021-45046, CVE-2021-4104)