Vulnerabilidad en 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:
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 | Severidad | Puntaje | Vector |
---|---|---|---|
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-45105 | Alta | 7.5 | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/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.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