본문 바로가기

Tech/ELK

[Elastic Search, Logstash, Kafka] Log4J 취약점 조치 후기

본 내용은 Log4J 취약점이 발견되었을 당시, Elastic Search, Logstash, Kafka 조치를 하며 정리한 내용이다.




취약한 버전

  • Apache Log4j 2.x <= 2.15.0-rc1

참고 URL
https://logging.apache.org/log4j/2.x/security.html



취약 소프트웨어

참고 URL
https://unit42.paloaltonetworks.com/apache-log4j-vulnerability-cve-2021-44228/



확인된 조치 방법

아래 중 1개 이상 조치

  1. log4j.2.15.0 rc2 이상의 버전 업그레이드
  2. JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true
  3. config/log4j2.properties에서 appender.console.layout.pattern%m%m{nolookups}로 변경

참고 URL
https://www.elastic.co/kr/blog/detecting-log4j2-with-elastic-security
https://www.docker.com/blog/apache-log4j-2-cve-2021-44228/
https://stackoverflow.com/questions/70315727/where-to-put-formatmsgnolookups-in-log4j-xml-config-file






회사 내 존재하는 취약 서비스 파악

Elastic Search

확인 결과

  • 현재 사용중인 Elastic search 버전: 7.14.0
  • Elastic Serach 버전 별 log4j 버전: 2.11.1

참고: https://okky.kr/article/1118255

log4j 2.11.1버전은 취약한 버전에 해당됨.
추가로 JVM arguments를 확인했으나, 보안 조치로 제시된 옵션 -Dlog4j.formatMsgNoLookups=true는 없는 것을 확인 함.




조치 방안

  • Elastic Search를 최신 버전으로 업데이트 한다.
  • docker-compose.yml의 서비스 ENV에 LOG4J_FORMAT_MSG_NO_LOOKUPS=true를 작성해준다.




Logstash

  • logstash V6.8.x, V7.x 버전 이상 모두 취약하다고 함

https://github.com/elastic/logstash/issues/13501



확인 결과

  • 사용중인 logstash 버전: 7.14
  • 사용중인 log4j 버전: 2.14.0




조치 방안

  • Logstash를 최신버전으로 업데이트 한다.
  • docker-compose.yml 내 ENV LOG4J_FORMAT_MSG_NO_LOOKUPS=true 설정




Kafka

확인 결과

  • 사용중인 log4j 버전: log4j12-1.7.30


해당 버전(log4j 1.x)은 JNDI를 사용할 수 있는 JMS Appender가 포함되어있지만, JNDI를 사용하지 않으면 취약하지 않다고 함.

참고: https://github.com/apache/logging-log4j2/pull/608




조치 방안
confluent Kafka Docker Image의 log4j가 2.15 버전으로 업데이트되어 배포되었음.
2.15버전 또한 계속해서 우회방식으로 취약점이 발생하고 있음.
따라서, 현재 사용하는 버전 1.7.30의 경우 추가적인 업그레이드 지원이 되지 않아 보안위협에 노출될 수 있으나, JNDI를 사용하지 않음으로, 별도 조치 X

반응형