본문 바로가기
Security

Log4j 보안 취약점 Log4shell

by BTC_닌닌니닌 2022. 8. 8.

안녕하세요~~ 저희는 공공의 적 팀입니다~~<(*^.^*)/ 

요즘 날씨가 많이 덥습니다 건강관리 유의하세요~~


얼마전에 소개해드렸던 Log4j 기억하시나요?

2021년 Log4j에서 매우 심각한 보안 문제가 발견되어 큰 이슈가 있었는데요.

오늘은 그 Log4j 취약점 이슈에 대해서 알아보겠습니다.

 

 

Log4shell 이란?

Log4Shell 또는 CVE-2021-44228는 저명한 자바 로깅 프레임워크 Log4j의 제로 데이 임의 코드 실행 취약점입니다. 이 취약점은 알리바바의 클라우드 보안팀에 의해 2021년 11월 24일 아파치에 비공개로 전달되었으며 2021년 12월 9일 대중에게 공개되었습니다.

 

이 취약점은 LDAP과 JNDI 요청을 검사하지 않는 Log4j의 특징을 이용하여, 공격자가 임의의 자바 코드를 서버 또는 기타 컴퓨터에서 실행할 수 있게 합니다. 영향을 받는 서비스에는 아마존 AWS, 클라우드플레어, 아이클라우드, 마인크래프트 자바 에디션, 스팀, 텐센트 QQ등이 있습니다. Log4j 프로젝트를 맡는 아파치 소프트웨어 재단은 Log4Shell에 CVSS(공통 취약점 등급 시스템) 점수 최고점인 10점을 부여하였습니다.

 

 

동작 방식

JNDI는 프로그램 런타임 시 지정된 데이터 경로의 자바 오브젝트 검색을 허용합니다. JNDI는 여러 디렉터리 인터페이스를 지렛대처럼 활용할 수 있으며 각 인터페이스는 각기 다른 파일 검색 스킴을 제공합니다. 이 인터페이스들 중에는 자바로 개발되지 않은 프로토콜의 하나인 LDAP이 있으며 이는 로컬이든 인터넷 어느 곳에서든 적절한 서버로부터 오브젝트 데이터를 URL로 받아옵니다.

 

기본 구성에서 문자열 로그를 기록할 때 Log4j2는 ${prefix:name} 형태의 식에 문자열 치환을 수행합니다. 예를 들어, Text: ${java:version}는 Text: Java version 1.7.0_67로 변환될 수 있습니다. 인식되는 식들 중에 ${jndi:<lookup>}가 있다. LDAP을 통해 lookup을 지정함으로써 임의의 URL을 조회하고 자바 오브젝트 데이터로 로드할 수 있습니다. 예를 들어 ${jndi:ldap://example.com/file}는 인터넷에 연결되어 있다면 해당 URL로부터 데이터를 로드하게 됩니다. 로깅이 되는 문자열을 입력함으로써 공격자는 퍼블릭 URL에서 호스팅되는 악성 코드를 로드하고 실행할 수 있습니다. 데이터의 실행을 비활성화해 놓았더라도 공격자는 여전히 기밀 환경 변수 등의 데이터를 (URL 배치를 통해) 받아올 수 있으며 여기서 치환을 거쳐 공격자의 서버로 송신할 수 있습니다.

 

HTTP 요청이 자주 로깅되기 때문에 공통 공격 벡터는 악성 문자열을 HTTP 요청 URL이나 흔히 로깅되는 HTTP 헤더(예: User-Agent)에 배치시킵니다. 초기의 완화 방법에는 "${jndi" 등의 잠재적으로 악성일 가능성이 높은 콘텐츠를 포함하는 모든 요청을 차단하는 것이 포함되었습니다. 아무렇지 않게 수행한 검색은 요청을 모호하게 만듦으로써 우회가 가능합니다. 예를 들어 ${${lower:j}ndi는 문자 j에 소문자 처리를 수행한 이후 JNDI 룩업으로 변환됩니다. 입력이 즉시 로깅되지 않더라도 나중에 내부 처리 중에 로깅한 다음에 콘텐츠의 실행이 가능할 수 있습니다.

 

 

완화

이 취약점의 픽스가 취약점이 공표되기 3일 전 2021년 12월 6일 Log4j 버전 2.15.0-rc1에서 출시되었습니다. 이 픽스에는 여러 시스템 속성을 사용하여 구성이 가능한 룩업(lookup)에 사용될 수 있는 서버와 프로토콜을 제한하는 것이 포함되었습니다. 이는 log4j2.formatMsgNoLookups 시스템 속성을 대체하였습니다. 2.10.0 이후의 과거 버전에서는 취약점을 완화하는데 해당 속성을 true로 설정하는 것이 권장됩니다. 2.10.0 이전 버전의 경우 org.apache.logging.log4j.core.lookup.JndiLookup 클래스를 클래스패스에서 제거해야 합니다.

게다가 JNDI를 사용하는 모든 기능은 2.15.1 이상부터 기본적으로 비활성화됩니다.

새 버전의 자바 런타임 환경(JRE) 또한 원격 코드의 로드를 기본적으로 차단함으로써 이 취약점을 완화시킵니다. 다만 다른 공격 벡터가 여전히 특정 애플리케이션에 존재합니다. 내장된 자바 패키지에서 취약한 log4j 버전의 이용을 검출하는데 도움을 주는 여러 방식과 도구가 게시되었습니다.

 

 

반응과 영향

미국에서 사이버보안 및 인프라 보안국(CISA)의 감독 젠 이스털리(Jen Easterly)는 이 취약점을 심각한 것으로 보고 벤더들에게 소프트웨어 업데이트를 우선할 것을 충고했습니다. 캐나다 사이버 보안 센터(CCCS)는 단체들에게 즉각적인 조치를 취할 것을 주문했습니다. 독일의 연방정보기술보안청(Bundesamt für Sicherheit in der Informationstechnik, BSI)은 이 취약점을 기관 최고의 위협 수준으로 지정하였고 이를 "극히 심각한 위협적 상황"으로 언급하였다. 여러 공격들이 이미 성공적이었음이 밝혀졌고 취약점의 정도가 조사하기 힘든 상황이라고 보고되었습니다.

클라우드플레어의 CEO 매튜 프린스(Matthew Prince)에 따르면 이 취약점의 이용과 테스트의 증거가 적어도 12월 1일로 거슬러 올라가며 이는 취약점이 공개된지 9일 앞선 것 입니다. 사이버보안 기업 그레이노이즈에 따르면 여러 IP 주소들이 웹사이트들을 스크랩하여 취약점이 있는 서버를 물색하였습니다. 캐나다 국세청은 취약점을 이해한 뒤 일시적으로 온라인 서비스를 종료하였고 퀘벡 정부는 예방 조치의 일환으로서 정부 웹사이트 중 약 4,000개를 폐쇄하였습니다.

시스템 관리자들은 이 상황을 조사하고 라이브러리를 업데이트하거나 시스템 속성을 이용하는 룩업을 비활성화함으로써 가능한 조속히 완화 조치를 단행할 것을 충고받았습니다.

 

 

 

영향을 받는 버전

 o CVE-2021-44228
  - 2.0-beta9 ~ 2.14.1 이하
 ※ 취약점이 해결된 버전 제외(Log4j 2.3.1, 2.12.2, 2.12.3 및 이후 업데이트 버전 제외)

 o CVE-2021-45046
  - 2.0-beta9 ~ 2.15.0 버전
 ※ 취약점이 해결된 버전 제외(Log4j 2.3.1, 2.12.2, 2.12.3 및 이후 업데이트 버전 제외)

 o CVE-2021-4104
   - 1.x 버전
      ※ JMSAppender를 사용하지 않는 경우 취약점 영향 없음

 

 

대응방안

 o 제조사 홈페이지를 통해 최신버전으로 업데이트 적용
   ※ 제조사 홈페이지에 신규버전이 계속 업데이트되고 있어 확인 후 업데이트 적용 필요
    - CVE-2021-44228, CVE-2021-45046
      · Java 8 이상 : Log4j 2.17.0 이상 버전으로 업데이트
      · Java 7 : Log4j 2.12.3 이상 버전으로 업데이트
      · Java 6 : Log4j 2.3.1 이상 버전으로 업데이트
           ※ log4j-core-*.jar 파일 없이 log4j-api-*.jar 파일만 사용하는 경우 위 취약점의 영향을 받지 않음
   - CVE-2021-4104
      · Java 8 : Log4j 2.17.0 이상 버전으로 업데이트
      · Java 7 : Log4j 2.12.3 이상 버전으로 업데이트
      · Java 6 : Log4j 2.3.1 이상 버전으로 업데이트


 o 신규 업데이트가 불가능할 경우 아래와 같이 조치 적용
    - CVE-2021-44228, CVE-2021-45046
      · JndiLookup 클래스를 경로에서 제거

 zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class


    - CVE-2021-4104
      · JMSAppender 사용 확인 후 코드 수정 또는 삭제
          ※ log4j 1.x버전 사용자의 경우 추가적인 업그레이드 지원 중지로 인해 다른 보안위협에 노출될 가능성이 높아 최신               버전(2.x) 업데이트 적용 권고

 

 

출처

https://ko.wikipedia.org/wiki/Log4Shell

https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389

'Security' 카테고리의 다른 글

보안 - IAM  (0) 2022.10.17
AWS 보안 - 암호화  (0) 2022.09.17
웹 서버 버전 노출 방지  (0) 2022.06.02
OpsNow Security  (1) 2022.05.15
CSP 3사의 보안 솔루션 비교(액세스 제어)  (0) 2022.05.08

댓글