Nueva vulnerabilidad Crítica Zero day en la librería Log4j2 de Java llamada Log4Shell

El pasado 24 de noviembre del 2021 se ha reportado una vulnerabilidad de ejecución de código remoto (RCE), la cual ha sido asociada con el identificador de MITRE CVE-2021-44228 (conocida también como Log4Shell). Log4j2 es una librería de código abierto de Java que, comúnmente, está incorporada en los servidores web Apache, la vulnerabilidad está presente en las versiones de Log4j2 desde la 2.0-beta hasta la 2.14.1.

El 10 de diciembre un exploit para la vulnerabilidad ha sido compartido en internet, exponiendo a empresas y usuarios en general a ataques RCE, incrementando la criticidad de la vulnerabilidad.

Los servidores del videojuego Minecraft fueron los primeros en ser afectados por la vulnerabilidad, se han visto comprometidos servidores de iCloud, Steam, Tesla, Amazon, Twitter, entre otros.

Análisis

Un atacante remoto podría explotar esta falla realizando una consulta elaborada especialmente para un servidor con una versión vulnerable de log4j, la precitada consulta realiza una inyección de JNDI (Java Naming and Directory Interface) por una variedad de servicios tales como:

  • Lightweight Directory Access Protocol (LDAP)
  • Secure LDAP (SLDAP)
  • Remote Method Invocation (RMI)
  • Domain Name Server (DNS)

Si el servidor vulnerable usa log4j para registrar las solicitudes recibidas, entonces el exploit solicitará un payload mediante el JNDI a través de uno de los servicios expuestos previamente desde un servidor controlado por el atacante. El éxito de esta operación desataría una ejecución de código remoto (RCE).

Cabe destacar que existen varias pruebas de conceptos en distintos sitios de internet, entre ellos, Github.

Solución

Como una solución provisional, Apache lanzó la versión de log4j 2.15.0 en diciembre 10, sin embargo, esta actualización requiere que el uso de Java 8.

Dado que muchos servidores se encuentran actualmente en la versión 7 de Java, y si la actualización no puede ser realizada con la inmediatez que se necesita, Apache aconseja que se ejecuten las siguientes tres mitigaciones sin demora alguna:

MitigaciónVersiones aplicables
Cambiar log4j.formatMsgNoLookups or Dlog4j.formatMsgNoLookups a trueLog4j 2.10 ó mayores
Usar %m{nolookups} en las configuraciones de PatternLayoutLog4j 2.7 ó mayores
Quitar las clases JdniLookup y JdniManager del log4j-core.jarTodas las versiones Log4j 2

Recomendaciones

Actualizar la librería a la versión más actual log4j 2.15.0 o Log4 2.16.0

En caso de no poder actualizar la librería la versión actual, las 3 mitigaciones deben ser efectuadas de inmediato.

Para mayor información puede visitar los siguientes links: