[보안뉴스 원병철 기자] log4j의 신규 취약점과 새로운 패치가 나와 보안담당자들의 시급한 업데이트가 요구된다. 아파치재단은 12월 18일 ‘Log4j 2.16.0’ 버전에서 동작하는 CVE-2021-45105 취약점을 추가로 공개했다. 안랩 ASEC은 이번 취약점의 CVSS 점수(취약점 등급 시스템. 10점 만점에 7.0점을 넘기면 심각한 취약점으로 구분한다)는 7.5점 이라고 밝혔다.
▲Log4j 신규 취약점(CVE-2021-45105) 패치(Log4j 2.17.0)를 공개한 아파치 재단[캡처=보안뉴스]
이번 ‘CVE-2021-45105’에 취약한 제품 버전은 ‘Log4j 2.0-beta9 ~ 2.16.0’ 버전이다. 취약점 공격은 Log4j를 사용하는 응용 프로그램에서 ‘layout pattern’과 ‘쓰레드 컨텍스트 기능’이 사용되는 경우 발생할 수 있다. 취약한 환경과 이 환경을 공격하는 기법은 다음과 같다.
①취약한 환경
응용 프로그램이 layout pattern에서 쓰레드 컨텍스트를 조회하는 기능을 사용하도록 설정된다.
▲log4j2.properties 설정 일부[이미지=ASEC]
소스 코드
layout pattern에서 참조하는 쓰레드 컨텍스트의 값을 외부로부터 입력받은 값으로 저장한다.
▲응용 프로그램 소스코드 일부[이미지=ASEC]
②취약점 공격
공격자가 X-Api-Version 헤더에 특정 문자열을 포함한 요청을 대상 서버에 전송하는 경우, log4j에서는 로그를 저장하는 과정에서 Stack OverFlow 오류가 발생하여 해당 프로세스가 종료될 수 있다.
# curl server -H ‘X-Api-Version: ${${::-${::-$${::-$}}}}’
③취약점 영향
Log4j의 서비스 거부 취약점(Dos : Denial Of Service)으로 인해 서비스 장애가 발생할 수 있지만, 공격 기법에서 설명한 환경이 구축되어야 취약점 공격이 가능하다. 또한, log4j-core-*.jar 파일 없이 log4j-api-*.jar 파일만 사용하는 경우 취약점의 영향을 받지 않는다.
④취약점 패치
2021년 12월 18일 Log4j 2.17.0 패치가 발표됐다.
Log4j 2.17.0 이상 최신 버전 (Java8 이상)
https://logging.apache.org/log4j/2.x/download.html
* Java 7 버전 : 제공 예정
⑤취약점 완화
취약점 패치가 어려운 경우 다음의 방법으로 임시 조치를 진행해야 한다.
– ‘PatternLayout’에서 ${ctx:loginId} 또는 $${ctx:loginId}를 제거하거나 (%X, %mdc, or %MDC)로 변경한다.
[원병철 기자(boanone@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>