Esta vez, aprenderá a detectar Log4Shell con Wazuh
Apache Log4J es una de las bibliotecas de registro más comunes en Java y se utiliza principalmente para mensajes de error. Forma parte de varias aplicaciones de gran valor, como iCloud, Twitter y Minecraft, entre otras.
Recientemente, se detectó una vulnerabilidad de día cero denominada Log4Shell con CVE CVE-2021-44228 en Log4J 2 de Apache que permite a los actores malintencionados lanzar ataques de ejecución remota de código (RCE). Esto significa que un agresor puede enviar comandos de forma remota a un servidor que ejecuta aplicaciones vulnerables.
Las versiones afectadas de Apache Log4j 2 son 2.0-beta9
a 2.15
.
De hecho, la versión 2.15.0
que fue la solución inicial para la vulnerabilidad, se descubrió más tarde que aún era vulnerable. Por lo que se recomienda actualizar a la versión 2.16.0
que deshabilita JNDI y elimina por completo %m{lookups}
.
Hay varias formas de defender su sistema contra esta vulnerabilidad y posibles ataques:
- Ejecutar análisis para detectar cuándo existe una versión vulnerable de Apache Log4j 2 en su sistema.
- Parchear la vulnerabilidad actualizando a Apache Log4j 2 versión
2.16.0
o desactivar JNDI. - Crear reglas de detección que controlen los registros de conexión y acceso web para detectar intentos de explotación.
La clave para combatir la ola actual de ataques es la detección temprana de la vulnerabilidad para parchear inmediatamente y el monitoreo constante de todos los activos para identificar cuándo hay un intento de explotar esta vulnerabilidad.
Veremos cómo Wazuh puede ayudar con el monitoreo y la detección de esta vulnerabilidad en las siguientes secciones.
consulte los pasos de instalación de wazuh aquí "https://unixcop.com/wazuh-the-open-source-security-platform/"
Análisis de versiones vulnerables de Apache Log4j 2
Utilizaremos una política Wazuh SCA (Evaluación de configuración de seguridad) para esto. Las políticas de SCA están escritas en formato YAML y se utilizan para ejecutar comprobaciones del fortalecimiento del sistema; en muchos casos, la detección de software vulnerable también se incluye en esta categoría.
A menos que se indique lo contrario, todas las configuraciones siguientes se realizaron en el lado del servidor de Wazuh. Por lo general, no es necesario editar la configuración local de los agentes que se están monitoreando.
Primero, creamos un nuevo archivo de política en /var/ossec/etc/shared/default/log4j_check.yml
:
policy:
id: "log4j_check"
file: "log4j_check.yml"
name: "Log4j dependency check"
description: "This document provides prescriptive guidance for identifying Log4j RCE vulnerability"
references:
- https://nvd.nist.gov/vuln/detail/CVE-2021-44228
- https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance
requirements:
title: "Check if Java is present on the machine"
description: "Requirements for running the SCA scan against machines with Java on them."
condition: all
rules:
- 'c:sh -c "ps aux | grep java | grep -v grep" -> r:java'
checks:
- id: 10000
title: "Ensure Log4j is not on the system or under 2.16"
description: "The Log4j library is vulnerable to RCE on versions between 2.10 and 2.15."
remediation: "Update the log4j library to version 2.16 or set log4j2.formatMsgNoLookups to true if possible."
condition: none
rules:
- 'c:find / -regex ".*log4j.*.jar" -type f -exec sh -c "unzip -p {} META-INF/MANIFEST.MF | grep Implementation-Version" \; -> r: 2.10.| 2.11.| 2.12.| 2.13.| 2.14.| 2.15.'
- id: 10001
title: "Ensure Java is not running or is properly configured"
description: "The Log4j library is vulnerable to RCE on versions between 2.10 and 2.15."
remediation: "Update the log4j library to version 2.16 or set log4j2.formatMsgNoLookups to true if possible."
condition: any
rules:
- 'c:sh -c "ps aux | grep java | grep -v grep" -> r:java && r:Dlog4j2.formatMsgNoLookups=true'