반응형
1. Log4j란?
- Log4j는 Java 기반 프로그램 작성 시 지정된 파일/포맷으로 로깅할 수 있는 Apache 오픈소스 라이브러리입니다. 이슈가 된 취약점은 CVE-2021-44228(또는 Log4Shell)로 명명되었으며, Log4j가 넘겨받은 변수만을 단순 출력하는 것이 아닌 로그 메시지에 담긴 구문을 실행하여 출력하는 Lookups 기능에서 발생했습니다.
- 해커들이 개발자보다 먼저 취약점을 발견한 경우에 해당하는 0-데이 취약점으로서 Log4j 라이브러리를 사용한 서비스가 배포된 시점부터의 로그를 분석하여 악의적 공격 여부를 확인해야하는 24/7 비상 패치가 필요합니다.
- Apache 측은 해당 취약점을 감지하여 2021년 12월 10일 GitHub PR을 통해 2.15.0 버전을 배포하였습니다.
2. Log4j 취약점이 위험한 이유
- 해당 취약점은 Log4j를 사용하는 도중 JNDI를 통한 LDAP로의 접근 요청과 관련된 것으로서 JNDI의 파싱 기능이 원격 코드 실행 취약점을 야기하기 때문에 Log4j 2.15.0 버전의 긴급 패치가 일어났습니다.
- 취약점 대상 및 버전
- Apache Log4j 2.0-beta9 ~ 2.14.1의 모든 버전에 해당합니다.
- Apache Log4j 2.0-beta9 ~ 2.14.1의 모든 버전에 해당합니다.
- 해당 취약점의 위험성
- 해커가 임의의 Java 코드를 원격에서 실행시킬 수 있습니다.
- 해당 버그에 취약한 시스템을 네트워크 스캔으로 찾을 수 있습니다.
- 해커가 임의의 Java 코드를 원격에서 실행시킬 수 있습니다.
- 보안 이슈 해결의 중요성
- Log4j는 Java 기반 SW에서 많이 사용하는 소프트웨어입니다.
- 취약점을 활용한 공격 방법이 쉽고, 운영 중인 시스템이 공격 받았는지 여부를 확인하기 어렵습니다.
- Log4j는 Java 기반 SW에서 많이 사용하는 소프트웨어입니다.
- 해당 취약점에 영향 받는 대표적인 소프트웨어
- Apache LOG4J, Apache Kafka, Cisco, Docker, Elastic 제품 전반, McAfee, Splunk, Spring Boot 등
- https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592 에서 Apache Log4j 2 사용 제품 전체를 확인할 수 있습니다.
- Apache LOG4J, Apache Kafka, Cisco, Docker, Elastic 제품 전반, McAfee, Splunk, Spring Boot 등
3. 해결 방안
- Log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안 위협에 노출될 가능성이 높아 최신버전 업데이트 적용을 권고합니다.
- Log4j 패치가 가능한 경우
- Apache Log4j 2.0-beta9 ~ 2.14.1 버전의 경우Log4j의 버전을 2.15.0 이상으로 패치 업그레이드합니다.
- Log4j 패치가 어려운 경우
- 2.0-beta9 ~ 2.10.0 버전의 경우
- JNDI Lookup 클래스 제거
# zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class# zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
- 2.10.x ~ 2.14.1 버전의 경우
- 시스템 프로퍼티 log4j2.formatMsgNoLookups의 값을 TRUE로 변경
- 또는 환경 변수 LOG4J_FORMAT_MSG_NO_LOOKUPS 의 값을 TRUE로 변경
- 2.0-beta9 ~ 2.10.0 버전의 경우
반응형
'웹 & 앱 개발' 카테고리의 다른 글
[Git] Git : 분산 버전 관리 시스템 (DVCS) - GitHub, GitLab, Bitbucket (0) | 2021.10.15 |
---|---|
[GitHub] 깃허브 잔디 심는 법 - GitHub Contributions (0) | 2021.09.10 |
댓글