Detectar la explotación de CVE-2021-44228 (Log4j2) con Elastic Security

blog-security-detection-720x420.png

NOTA IMPORTANTE:

  • Para comprender cómo Elastic está evaluando actualmente el riesgo interno de esta vulnerabilidad en nuestros productos, consulta el aviso aquí.
  • Este blog se actualizó (14 de diciembre de 2021) con más mejoras de detección y búsqueda de amenazas desde su publicación inicial.

Visión general

En este blog se brinda un resumen de CVE-2021-44228 y se proporcionan a los usuarios de Elastic Security las detecciones para encontrar la explotación activa de la vulnerabilidad en su entorno.

Actualizaremos este blog a medida que sepamos más. Esta versión es precisa al martes, 14 de diciembre de 2021. Las actualizaciones de Apache pueden investigarse directamente a través de la página de seguridad de Log4j2.

Resumen de CVE-2021-44228 (Log4Shell)

Log4j2 es un marco de trabajo de logging open source incorporado en muchas aplicaciones basadas en Java tanto en servidores como sistemas de usuario final. A fines de noviembre de 2021, Chen Zhaojun de Alibaba identificó una vulnerabilidad de ejecución remota de código, que finalmente se reportó con el Id. de CVE: CVE-2021-44228, que se hizo público el 10 de diciembre de 2021. La explotación de la vulnerabilidad se realiza a través de la deserialización indebida de la entrada del usuario que se pasa al marco de trabajo. Permite la ejecución remota de código y puede permitir a un atacante filtrar datos confidenciales, como variables del entorno, o ejecutar software malicioso en el sistema objetivo.

La vulnerabilidad identificada afecta todas las versiones de Log4j2, desde la versión 2.0-beta9 hasta la versión 2.14.1. Los primeros métodos para aplicar un parche a este problema originaron varias candidatas a versiones, lo que culminó en la recomendación de actualizar el marco de trabajo a Log4j2 2.15.0-rc2 al momento de este blog.

Dada la complejidad trivial y la naturaleza de la explotación extendida observada, la mitigación debería considerarse crítica en cualquier entorno con software identificado que aproveche las versiones vulnerables de Log4j2.

Detectar la explotación de Log4Shell en Elastic Security

Los usuarios de Elastic Security pueden usar la regla de detección de correlación de eventos para identificar la explotación activa de la vulnerabilidad de Log4j2. Según el formato de los datos de eventos basados en el host, es posible que debas modificar esta detección para que coincida con tus campos de datos.

Regla de detección si usas datos de 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.pidLee mas

Regla de detección si usas datos de 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.pidLee mas

Regla de detección si usas eventos transmitidos de 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.pidLee mas

Esta regla de detección busca una secuencia de un intento de conexión saliente a puertos estándares para LDAP, RMI y DNS (que suelen ser el objetivo de los ataques por inyección de JAVA/JNDI observados recientemente) seguido por un proceso secundario de la misma instancia de proceso de Java.

Ahora, veamos cómo esta regla detecta la explotación de la vulnerabilidad de log42j:

En la captura de pantalla anterior se muestra a un atacante que está explotando la vulnerabilidad con una carga codificada en Base 64.

En la captura de pantalla anterior se muestra a un atacante que está explotando la vulnerabilidad con una carga codificada en Base 64, cuyo objetivo es una aplicación vulnerable de ejemplo que creó Christophe Tafani-Dereeper.

En esta captura de pantalla se muestra la detección de la explotación activa de CVE-2021-44228 dentro de Elastic Security y se detallan tanto la vista de la alerta como de la línea de tiempo de la explotación.

En esta captura de pantalla se muestra la detección de la explotación activa de CVE-2021-44228 dentro de Elastic Security y se detallan tanto la vista de la alerta como de la línea de tiempo de la explotación.

En la captura de pantalla anterior se muestra que en la investigación de la alerta de detección Java ejecutó un script de shell para descargar y ejecutar un 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?