Crédito:Pixabay/CC0 Dominio público
Log4Shell, una vulnerabilidad de Internet que afecta a millones de computadoras, involucra una pieza de software oscura pero casi omnipresente, Log4j. El software se utiliza para registrar todo tipo de actividades que se desarrollan bajo el capó en una amplia gama de sistemas informáticos.
Jen Easterly, directora de la Agencia de Seguridad de Infraestructura y Ciberseguridad de EE. UU., calificó a Log4Shell como la vulnerabilidad más grave que ha visto en su carrera. Ya ha habido cientos de miles, quizás millones, de intentos de explotar la vulnerabilidad.
Entonces, ¿qué es esta humilde pieza de infraestructura de Internet, cómo pueden explotarla los piratas informáticos y qué tipo de caos podría producirse?
¿Qué hace Log4j?
Log4j registra eventos (errores y operaciones rutinarias del sistema) y comunica mensajes de diagnóstico sobre ellos a los administradores y usuarios del sistema. Es un software de código abierto proporcionado por Apache Software Foundation.
Un ejemplo común de Log4j en el trabajo es cuando escribe o hace clic en un enlace web incorrecto y recibe un mensaje de error 404. El servidor web que ejecuta el dominio del enlace web al que intentó acceder le dice que no existe tal página web. También registra ese evento en un registro para los administradores del sistema del servidor mediante Log4j.
Se utilizan mensajes de diagnóstico similares en todas las aplicaciones de software. Por ejemplo, en el juego en línea Minecraft, el servidor utiliza Log4j para registrar actividades como la memoria total utilizada y los comandos de usuario escritos en la consola.
¿Cómo funciona Log4Shell?
Log4Shell funciona abusando de una función en Log4j que permite a los usuarios especificar un código personalizado para formatear un mensaje de registro. Esta característica le permite a Log4j, por ejemplo, registrar no solo el nombre de usuario asociado con cada intento de iniciar sesión en el servidor, sino también el nombre real de la persona, si un servidor separado tiene un directorio que vincula los nombres de usuario y los nombres reales. Para hacerlo, el servidor Log4j debe comunicarse con el servidor que contiene los nombres reales.
Desafortunadamente, este tipo de código se puede usar para algo más que formatear mensajes de registro. Log4j permite que los servidores de terceros envíen un código de software que puede realizar todo tipo de acciones en la computadora de destino. Esto abre la puerta a actividades nefastas, como robar información confidencial, tomar el control del sistema objetivo y enviar contenido malicioso a otros usuarios que se comunican con el servidor afectado.
Es relativamente simple explotar Log4Shell. Pude reproducir el problema en mi copia de Ghidra, un marco de ingeniería inversa para investigadores de seguridad, en solo un par de minutos. Hay una barra muy baja para usar este exploit, lo que significa que una gama más amplia de personas con intenciones maliciosas pueden usarlo.
Log4j está en todas partes
Una de las principales preocupaciones sobre Log4Shell es la posición de Log4j en el ecosistema de software. El registro es una característica fundamental de la mayoría del software, lo que hace que Log4j esté muy extendido. Además de juegos populares como Minecraft, se usa en servicios en la nube como Apple iCloud y Amazon Web Services, así como en una amplia gama de programas, desde herramientas de desarrollo de software hasta herramientas de seguridad.
Esto significa que los piratas informáticos tienen un amplio menú de objetivos para elegir:usuarios domésticos, proveedores de servicios, desarrolladores de código fuente e incluso investigadores de seguridad. Por lo tanto, mientras que las grandes empresas como Amazon pueden parchear rápidamente sus servicios web para evitar que los piratas informáticos los exploten, hay muchas más organizaciones que tardarán más en parchear sus sistemas, y es posible que algunas ni siquiera sepan que lo necesitan.
El daño que se puede hacer
Los piratas informáticos están escaneando a través de Internet para encontrar servidores vulnerables y configurar máquinas que puedan entregar cargas útiles maliciosas. Para llevar a cabo un ataque, consultan servicios (por ejemplo, servidores web) e intentan activar un mensaje de registro (por ejemplo, un error 404). La consulta incluye texto creado con fines malintencionados, que Log4j procesa como instrucciones.
Estas instrucciones pueden crear un shell inverso, que permite que el servidor atacante controle de forma remota el servidor de destino, o pueden hacer que el servidor de destino forme parte de una red de bots. Las botnets usan múltiples computadoras secuestradas para llevar a cabo acciones coordinadas en nombre de los piratas informáticos.
Una gran cantidad de piratas informáticos ya están tratando de abusar de Log4Shell. Estos van desde pandillas de ransomware que bloquean servidores de Minecraft hasta grupos de piratas informáticos que intentan extraer bitcoins y piratas informáticos asociados con China y Corea del Norte que intentan obtener acceso a información confidencial de sus rivales geopolíticos. El ministerio de defensa belga informó que sus computadoras estaban siendo atacadas usando Log4Shell.
Aunque la vulnerabilidad atrajo la atención generalizada por primera vez el 10 de diciembre de 2021, las personas todavía están identificando nuevas formas de causar daño a través de este mecanismo.
Deteniendo el sangrado
Es difícil saber si Log4j se está utilizando en un sistema de software dado porque a menudo se incluye como parte de otro software. Esto requiere que los administradores de sistemas hagan un inventario de su software para identificar su presencia. Si algunas personas ni siquiera saben que tienen un problema, es mucho más difícil erradicar la vulnerabilidad.
Otra consecuencia de los diversos usos de Log4j es que no existe una solución única para parchearlo. Dependiendo de cómo se incorporó Log4j en un sistema determinado, la solución requerirá diferentes enfoques. Podría requerir una actualización general del sistema, como se hace con algunos enrutadores Cisco, o actualizar a una nueva versión de software, como se hace en Minecraft, o eliminar manualmente el código vulnerable para aquellos que no pueden actualizar el software.
Log4Shell es parte de la cadena de suministro de software. Al igual que los objetos físicos que compra la gente, el software viaja a través de diferentes organizaciones y paquetes de software antes de terminar en un producto final. Cuando algo sale mal, en lugar de pasar por un proceso de recuperación, el software generalmente se "parcha", lo que significa que se fija en su lugar.
Sin embargo, dado que Log4j está presente de varias formas en los productos de software, la propagación de una solución requiere la coordinación de los desarrolladores de Log4j, los desarrolladores de software que usan Log4j, los distribuidores de software, los operadores del sistema y los usuarios. Por lo general, esto introduce un retraso entre que la solución está disponible en el código Log4j y las computadoras de las personas realmente cierran la puerta a la vulnerabilidad.
Algunas estimaciones del tiempo de reparación del software generalmente varían de semanas a meses. Sin embargo, si el comportamiento pasado es indicativo del rendimiento futuro, es probable que la vulnerabilidad Log4j surja en los próximos años.
Como usuario, probablemente te estés preguntando qué puedes hacer al respecto. Desafortunadamente, es difícil saber si un producto de software que está usando incluye Log4j y si está usando versiones vulnerables del software. Sin embargo, puede ayudar prestando atención al refrán común de los expertos en seguridad informática:asegúrese de que todo su software esté actualizado.