끝나지 않는 Log4Shell

끝나지 않는 Log4Shell

in

Log4j2 vulnerability <= 2.17

CVE-2021-44228 log4j 2.15이하의 버전대에서 발견된 CVSS 10점의 취약점이 나온 이후 2.15, 2.16, 2.17 버전까지 계속 하여 끊임없이 취약점이 나오고 있습니다.
CVE-2021-44228 취약점은 처음에 정리한 글이 있으므로 패스하도록 해보겠습니다.

CVE 코드취약점 및 점수취약 버전
CVE-2021-44228RCE CVSS 10/10Log4j 2.0 ~ 2.14
CVE-2021-45046DOS CVSS 9.0/10Log4j 2.0-beta9 ~ 2,12 및 2.15.0
CVE-2021-45105DOS CVSS 7.5/10Log4j 2.0-beta9 ~ 2.16
CVE-2021-44832RCE CVSS 6.6/10Log4j 2.0-beta9 ~ 2.17

CVE-2021-45046 (log4j 2.15)

해당 취약점은 CVE-2021-44228 패치 버전인 2.15.0 에서 발견된 취약점으로 Pattern Layout을 사용하는 경우 발생하는 취약점입니다.

log4j2 로깅 구성에서 기본 로깅이 아닌 컨텍스트 조회 ${ctx:loginID} 또는 스레드 컨텍스트 맵 패턴 (%x, %MDC 또는 %MDC)이 포함 된 패턴 레이아웃을 사용하는 경우 JNDI 패턴을 이용하여 DOS 공격을 일으킬 수 있는 취약점입니다.

- References
https://www.lunasec.io/docs/blog/log4j-zero-day-update-on-cve-2021-45046/?fbclid=IwAR00PCRRh21208SqKIoW0G36AqJUpMMn3eWKti-q9MhaVhA1tOc7nbLO0iI


CVE-2021-45105 (log4j 2.16)

해당 취약점은 CVE-2021-45046 패치 버전인 2.16 에서 발견된 취약점으로 Context Lookup과 Pattern Layout (ex: ${ctx:loginId},${ctx:apiversion} 등)을 사용하는 경우 X-Api-Version 헤더에 특정 문자열을 포함한 요청을 전송하는 경우 log4j 에서 로그를 저장하는 과정에서 StackOverFlow가 발생하여 해당 프로세스가 종료될 수 있습니다.

curl server -H ‘X-Api-Version: ${${::-${::-$${::-$}}}}’

- References
https://darksoulstory.tistory.com/484


CVE-2021-44832 (log4j 2.17)

해당 취약점은 CVE-2021-45105 패치 버전인 2.17 에서 발견된 취약점으로 log4j 에서 역직렬화를 시작하기 전 JNDI를 통해 데이터베이스 소스를 동적으로 원격에서 가져오도록 log4j를 구성하는 방법이 있는것을 확인하였으며, JDBCAppender 를 처리하기 위해 JDBC 역직렬화를 하기전 JNDI 를 사용할 수 있어 발생하는 취약점입니다.
즉 로깅 Config 파일에서 JDBCAppender를 사용하도록 설정할 수 있다면 JNDI를 처리할 수 있기 떄문에 JNDIExploit 으로 RCE 공격이 가능합니다.