CVE-2021-45105 PoC / Log4j2 취약점 테스트
CVE-2021-45105 공개 후 해당 취약점에 대한 PoC도 github에 공개되었습니다.
핵심 공격 구문은 ${${::-${::-$${::-$}}}} 입니다.
보안공지 및 기사를 확인했을때
공격자가 'X-Api-Version' 헤더에 특정 문자열(${${::-${::-$${::-$}}}})을 포함한 요청을 대상 서버에 전송하는 경우, log4j에서 로그를 저장하는 과정에서 StackOverFlow 오류를 발생시켜 해당 프로세스가 종료될 수 있다고 합니다.
* PoC 테스트
(모바일 환경에서 이미지 확인이 어려울 수 있습니다)
- 제공된 환경에서 테스트시 "Infinite loop in Property ....." 란 에러메시지를 출력합니다.
- 이때 웹서비스가 다운되지 않지만 여러 차례 공격시도 후 Console에서 로그를 확인하면 중간에 에러로그가 발생하거나 로그가 출력되지 않는것이 확인되었습니다.
* PoC 공격시도 후
환경에서 따라 해당 공격에 영향도는 다르겠지만 Infinite loop로 인한 영향은 있는 것으로 보입니다.
* PoC 변형 테스트
- X-Api-Version 헤더와 다른 헤더로 공격구문을 실행해도 영향이 있습니다.
(이 경우 웹 소스코드를 변경해야함. / Ex) @RequestHeader("X-Api-Version") > @RequestHeader("X-For-Forward"))
- 패턴 레이아웃에 ${ctx:loginId} 자체를 사용하는 것이 문제를 일으키는 것으로 보입니다.
- 공격 구문을 변형하여 테스트 ${${::-${::-$${::-$ 까지 포함시 공격에 영향이 있습니다.
* 영향없는 공격구문
${${::-${::-$}}}
${${::-${::-$${:::::-$}}}}
${${::-${::-$${lopic:lopic:-$}}}}
${${::-${::-$${lopiclopiclopiclopiclopiclopiclopiclopic::-$}}}}
* 영향있는 공격구문
${${::-${::-$${::-$${::-$}}}}}
${${::-${::-$${::-$lopiclopiclopiclopiclopiclopiclopiclopic}}}}
* 취약점 완화
1) PatternLayout 에서 ${ctx:loginId} 또는 $${ctx:loginId} 를 제거하거나 (%X, %mdc, or %MDC) 로 변경.
//취약한 상태 <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n ${ctx:apiVersion} ${ctx:clientRef}"/> </Console> //취약점 조치 <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n %X ${ctx:clientRef}"/> </Console>
2) Apache Log4j 2.17.0 으로 패치 (Log4j 2.15 이상 버전 사용시 Java 8이상 필요)
https://logging.apache.org/log4j/2.x/download.html
* 결론 (Production 환경에서 취약점 영향은 더욱 클 수 있습니다)
- HTTP 헤더에 공격구문을 포함하여 Dos 공격 가능
- X-Api-Version 헤더 외 다른 헤더를 통한 공격 가능
- 일정 수준의 공격구문에서 실행 가능
- 보안 솔루션으로 어느정도 방어가 가능할 것으로 보이나 완벽한 취약점 조치를 위해 패치 및 소스코드 수정필요.
참고자료
출처 : PoC github https://github.com/cckuailong/Log4j_dos_CVE-2021-45105
출처 : 안랩 ASEC https://asec.ahnlab.com/ko/29893/
출처 : 보안뉴스 https://www.boannews.com/media/view.asp?idx=103443
'IT Security > Vulnerability' 카테고리의 다른 글
Atlassian 제품 보안 업데이트 권고 (CVE-2023-22527) (0) | 2024.01.28 |
---|---|
취약점) DrayTek.Vigor.Router 취약점 (0) | 2022.03.26 |
취약점) CVE-2021-45105 / Log4Shell 3번째 신규 취약점 발견 (0) | 2021.12.19 |
취약점) Log4Shell 취약점 점검 스캐너 - logpress (CVE-2021-44228 / CVE-2021-45046) (3) | 2021.12.16 |
[긴급] 취약점) CVE-2021-45046 - Apache Log4j2 신규 취약점 발견 및 패치 배포 (21.12.15) (0) | 2021.12.15 |