Alerta

Vulnerabilidad en Log4J

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.
log4j

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

Estas vulnerabilidades afectan a múltiples sistemas como VMware Horizon, Apache Tomcat, Atlassian Confluence, Red 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:

    Ejemplo de consulta maliciosa

    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 o 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.

    CVE-2021-45105

    Productos afectados

    Versiones

    Log4j

    2.0 alpha1 – 2.16.0 (excluyendo 2.12.3)

    Es una vulnerabilidad de severidad alta y abusa de un vector de ataque similar a la CVE 2021-44228. Este error también afecta las búsquedas controladas por el atacante en los datos registrados. Sin embargo, en este caso, se puede afectar de las búsquedas que no sean JNDI. y que podría permitir a quien ataca inyectar código en el modulo Thread Context Map (CTX) generando un DoS.

    CVE-2021-44832

    Productos afectados

    Versiones

    Log4j

    2.0 alpha7 – 2.17.0 (excluyendo 2.3.2 y 2.12.4)

    La vulnerabilidad de tipo RCE requiere contar con los privilegios necesarios para acceder y modificar la configuración de Log4J. Dichos privilegios podrían crear un archivo de configuración y, utilizando la función Appender, definir un elemento DataSource para almacenar una petición JDNI especialmente diseñada. La función Appender, responsable de recibir y procesar las trazas de auditoría, interpreta la petición JNDI maliciosa, permitiéndole a quien ataca descargar una clase Java, la cual es interpretada y deriva en la ejecución de código arbitrario en el servidor afectado.

    Métricas CVSS

    Vulnerabilidad SeveridadPuntajeVector
    CVE-2021-44228Crítica10CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
    CVE-2021-45105Alta7.5

    CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

    CVE-2021-4104Media6.6CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
    CVE-2021-45046Media3.7CVSS: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.7.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.x sobre Java 7

    Es posible actualizar a la versión 2.12.4 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.

    En el caso de la CVE-2021-45105 y CVE-2021-44832 las versiones 1.x no se ven afectadas.

    Recomendaciones

    Para todas las versiones se recomienda actualizar Log4J a la versión 2.17.1, versión 2.12.4 para Java 7 o la versión 2.3.2 para Java 6.

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

    Referencias