Detecção de exploração do CVE-2021-44228 (Log4j2) no Elastic Security

blog-security-detection-720x420.png

OBSERVAÇÃO IMPORTANTE:

  • Para entender como a Elastic está avaliando no momento o risco interno dessa vulnerabilidade em nossos produtos, consulte os anúncios relevantes aqui.
  • Este blog foi atualizado (14/12/2021) com mais detalhes para melhorar a detecção e a busca de ameaças desde sua publicação inicial.

Visão geral

Este post do blog resume o CVE-2021-44228 e indica aos usuários do Elastic Security detecções para encontrar explorações ativas de vulnerabilidade em seu ambiente.

Haverá atualizações com mais detalhes neste post à medida que novas informações surgirem sobre o assunto. Esta versão foi atualizada em 14 de dezembro de 2021, terça-feira. As atualizações do Apache devem ser investigadas diretamente na página de segurança do Log4j2.

Resumo do CVE-2021-44228 (Log4Shell)

O Log4j2 é um framework de logging de open source incorporado a muitas aplicações baseadas em Java tanto em sistemas quanto em servidores de usuário final. No final de novembro de 2021, Chen Zhaojun da Alibaba identificou uma vulnerabilidade de execução de código remoto que acabou sendo comunicada com o código CVE ID: CVE-2021-44228 e divulgada publicamente em 10 de dezembro de 2021. A vulnerabilidade é explorada pela desserialização imprópria de entradas do usuário que passam pelo framework. Isso permite a execução do código remoto e pode abrir caminho para ataques com vazamento de dados sensíveis, como variáveis de ambiente, ou com execução de software malicioso no sistema pretendido.

A vulnerabilidade identificada afeta todas as versões do Log4j2 a partir da versão 2.0-beta9 até a versão 2.14.1. Os métodos anteriores para resolver o problema resultaram em várias versões tentativas e, por fim, foram geradas recomendações para atualizar o framework para o Log4j2 2.15.0-rc2 quando este post foi publicado.

Devido à natureza simplificada da disseminação da exploração que foi observada, a mitigação deve ser considerada crítica em qualquer ambiente em que foi identificado software que usa versões vulneráveis do Log4j2.

Detecção de exploração do Log4Shell no Elastic Security

Os usuários do Elastic Security podem usar a seguinte regra para a detecção de correlação de evento para identificar exploração ativa da vulnerabilidade do Log4j2. Dependendo do formato dos dados de evento baseados em host, você pode precisar modificar essa detecção para combinar os campos de dados.

Regra de detecção ao usar os dados do Endpoint

sequence by host.id with maxspan=1m
 [network where event.action == "connection_attempted" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pidConsulte Mais informação

Regra de detecção ao usar os dados do Auditbeat

sequence by agent.id with maxspan=1m
 [network where event.action == "connected-to" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pidConsulte Mais informação

Regra de detecção ao usar eventos transmitidos do Endgame

sequence by agent.id with maxspan=1m
 [network where event.category == "network" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pidConsulte Mais informação

Essa regra de detecção procura uma sequência de uma tentativa de conexão de saída para portas padrão para LDAP, RMI e DNS (alvos de abuso frequente via ataques de injeção de JAVA/JNDI observados recentemente), seguida de um processo filho da mesma instância de processo Java.

Agora vamos demonstrar como essa regra detecta a exploração da vulnerabilidade do log42j:

A captura de tela acima mostra um invasor explorando a vulnerabilidade com carga útil codificada em Base64

A captura de tela acima mostra um invasor explorando a vulnerabilidade com carga útil codificada em Base64 visando uma aplicação vulnerável de exemplo criada por Christophe Tafani-Dereeper.

Esta captura de tela mostra a detecção de uma exploração ativa do CVE-2021-44228 no Elastic Security que detalha as visualizações do alerta e da linha do tempo da exploração.

Esta captura de tela mostra a detecção de uma exploração ativa do CVE-2021-44228 no Elastic Security que detalha as visualizações do alerta e da linha do tempo da exploração.

A captura de tela acima mostra na investigação do alerta de detecção que o Java executou um script de shell para baixar e executar um script de bash.
  • We're hiring

    Work for a global, distributed team where finding someone like you is just a Zoom meeting away. Flexible work with impact? Development opportunities from the start?