Log4Shell, el fallo de seguridad de la década que incluso hemos enviado a Marte

Cada mes aparecen nuevas vulnerabilidades que, en la mayoría de casos, se pueden parchear mediante actualizaciones de software. La gravedad de estos fallos suele variar, pero la de Log4Shell es una de las más peligrosas de la última década por los efectos que puede tener en los servicios que usamos a diario, y que incluso podrían permitir tomar el control del robot Ingenuity que se encuentra en Marte.

En los últimos días hemos conocido una grave vulnerabilidad que ha sido llamada Log4Shell, o LogJam. Un día después de conocerla, se ha publicado una prueba de concepto del exploit para aprovechar esta vulnerabilidad de día cero. La vulnerabilidad afecta al sistema de logueo de Apache Log4j, basado en Java. Su gravedad es de las más altas, ya que se trata de una vulnerabilidad no parcheada que permite la ejecución de código de manera remota en los dispositivos afectados.

Log4j es usado por multitud de servicios

A pesar de que la mayoría de servicios que utilizamos a diario han dejado de lado Java para el logueo, hay muchos que todavía los siguen utilizando. Por ejemplo, todavía se usa para acceder a Minecraft. Multitud de programas para empresas, web apps y software de servidores de compañías como Apple, Amazon, Cloudflare, Twitter y Steam también lo utilizan.

La vulnerabilidad fue descubierta por el equipo de seguridad de Alibaba Cloud, y se la comunicaron a Apache el pasado 24 de noviembre. Por ello, Apache la comunicó el pasado día 10 junto con el lanzamiento del software que soluciona la vulnerabilidad. También afecta a algunas configuraciones de Apache Struts2, Apache Solr, Apache Druid, Apache Flink y otros.

Tras la publicación del exploit en GitHub, multitud de hackers han empezado a escanear Internet en busca de sistemas vulnerables. Si el sistema de logueo de un servicio utiliza una versión afectada por el fallo, un atacante puede acceder sin autenticación al servicio.

Todas las soluciones disponibles para el fallo

El bug, con código CVE-2021-44228, afecta a todas las versiones de Log4j 2.0-beta9 (lanzada en septiembre de 2013) hasta la 2.14.1 (lanzada en marzo de 2021). Por ello, todas las versiones de prácticamente los últimos ocho años son vulnerables. La actualización 2.15.0 lanzada la semana pasada ya soluciona la vulnerabilidad, y todas las versiones posteriores estarán protegidas.

En el caso de tener una versión entre la 2.10 y la 2.14.1, es posible mitigar el fallo cambiando el valor de «log4j2.formatMsgNoLookups» a «true», o eliminando la clase JndiLookup del classpath. No obstante, lo recomendable es actualizar lo más rápido posible para evitar sufrir los ataques que están lanzándose a sistemas de todo el mundo. Investigadores de Cybereason han lanzado también un paquete «vacuna» llamado Logout4Shell, que hace uso de la vulnerabilidad, pero para cambiar el ajuste que permite aprovecharla, quedando el dispositivo protegido.

Con estos ataques, se van a ir conociendo más dispositivos y sistemas vulnerables. La mayoría de infecciones que vamos a ver aquí buscarán introducir ransomware en los sistemas para proceder a pedir rescates en criptomonedas.

Este fin de semana conocidos que el helicóptero Ingenuity, lanzado junto con la Perseverance, utiliza Log4j. Por ello, técnicamente, si se pueden interceptar y descifrar los paquetes de datos que envía a la Tierra, sería posible hackear el robot y controlarlo de manera remota. No obstante, todo el tráfico que llega a la Tierra está cifrado.

Debido a lo peligroso que puede ser actualizar un software en un dispositivo al que no se tiene acceso, es posible que decidan no parchearlo. Lo más sensato en este caso es hacer el cambio en la configuración de «log4j2.formatMsgNoLookups», evitando así posibles ataques sin tener que actualizar el software.

En definitiva, es recomendable que actualices. Puedes conocer si estás afectado por la vulnerabilidad con Log4Shell-Detector.