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ón | Versiones aplicables |
Cambiar log4j.formatMsgNoLookups or Dlog4j.formatMsgNoLookups a true | Log4j 2.10 ó mayores |
Usar %m{nolookups} en las configuraciones de PatternLayout | Log4j 2.7 ó mayores |
Quitar las clases JdniLookup y JdniManager del log4j-core.jar | Todas 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:
- oracle.com/security-alerts/alert-cve-2021-44228.html?source=:em:eo:ie:cpo:::RC_WWMK210714P00017:SEV400208211
- https://www.cisa.gov/uscert/ncas/current-activity/2021/12/10/apache-releases-log4j-version-2150-address-critical-rce
- https://www.zdnet.com/article/security-warning-new-zero-day-in-the-log4j-java-library-is-already-being-exploited/
- https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/
- https://www.rumble.run/blog/finding-log4j/
- https://www.bleepingcomputer.com/news/security/log4j-list-of-vulnerable-products-and-vendor-advisories/amp/