La puerta trasera XZ en Linux y la importancia del software de código abierto

Un código libremente visible y un ojo vigilante detuvieron un incidente de seguridad mundial

The XZ backdoor could have broken Linux security.

Un programador con un problema técnico detuvo un incidente de seguridad mundial al descubrir una puerta trasera que se había añadido a la biblioteca de compresión de datos UZ Utils, incluida en la mayoría de las distribuciones Linux. Este descubrimiento llegó justo a tiempo antes de que las principales distribuciones, como Debian o Redhat, quisieran introducir este código malicioso en sus versiones. Esto demuestra que el software de código abierto es esencial para mantener la seguridad digital.


¿Qué ha pasado?

Siéntate y abróchate el cinturón, porque esta historia es de locos.

En marzo de 2024, Andreas Freund, un empleado de Microsoft, estaba investigando algunos problemas de rendimiento de Debian-sid. Se dio cuenta de que estaba generando un gran número de conexiones SSH que estaban consumiendo una cantidad anormal de recursos de la CPU. Tras una inspección más detallada, informó de este problema al proyecto OpenWall, que fue recogido por varios proveedores de software para una inspección más detallada.

Y he aquí que el Sr. Freund había descubierto un fragmento de código oculto que había sido introducido en las últimas versiones 5.6.0 y 5.6.1 de XZ por el antiguo colaborador Jian Tan.

Los cambios incluidos en estas versiones comprometen la seguridad del sistema operativo, dando a un atacante acceso administrativo completo.

El Sr. Freund describió el descubrimiento de este importante ataque a la cadena de suministro, similar al de SolarWinds, como algo que “realmente ha requerido un montón de coincidencias” y que “me parece que hemos tenido mucha, mucha suerte aquí”.

Qué hace el código de la puerta trasera XZ

El código malicioso que se añadió sigilosamente al proyecto XZ Utils tiene como objetivo sshd, que es un archivo ejecutable que se utiliza para realizar conexiones SSH de forma remota. Si un atacante tiene acceso a la clave de cifrado correcta, podrá añadirla a los certificados de inicio de sesión SSH, enviarlos y ejecutarlos a través de los dispositivos protegidos.

El vínculo entre el software de compresión XZ y SSH se debe a un parche en Debian, entre otras distros, que crea un vínculo entre SSH y systemd. Systemd, a su vez, está vinculado a la biblioteca LZMA de XZ, que crea el camino desde la puerta trasera de XZ hasta el acceso SSH.

Thomas Roccia realizó una infografía detallada que explica los pasos exactos del proceso:

Roccias Infografik zur Erklärung der XZ-Backdoor aka CVE-2024-3094 Roccias Infografik zur Erklärung der XZ-Backdoor aka CVE-2024-3094

Lo que resulta especialmente sorprendente de esta puerta trasera es lo sofisticada que es y los pasos que ha dado el atacante para incrustarse en el proyecto XZ a lo largo de los años con el fin de obtener el acceso suficiente para intentar ejecutar el ataque. Tras este descubrimiento, los ojos de los investigadores de amenazas se han centrado en un colaborador principal que utiliza el alias de Jian Tan.

¿Quién es Jian Tan?

Por el momento, desconocemos la verdadera identidad del usuario que opera bajo el nombre de Jian Tan. Pero los investigadores han descubierto algunas pistas. Jian Tan, que opera bajo el nombre de usuario JiaT75, apareció por primera vez trabajando en el código de XZ Utils en 2021. Esto no es un gran motivo de alarma, ya que XZ es un proyecto de código abierto y cualquiera puede ofrecer su ayuda para mejorarlo o aplastar errores. A lo largo de los años, Tan siguió haciendo pequeñas contribuciones al proyecto que aumentaron su reputación y confianza dentro de la comunidad creada en torno al proyecto.

En mayo de 2022, un usuario desconocido que utilizaba el alias de Dennis Ens comenzó a quejarse de una actualización reciente, a lo que siguió otra figura desconocida que utilizaba el nombre de Jigar Kumar, para presionar al desarrollador principal de XZ Utils para que añadiera un nuevo mantenedor (alguien que construye y organiza el código fuente de los proyectos de código abierto) para que el desarrollo pudiera avanzar más rápido. Esta presión llevó finalmente a que Jian Tan fuera añadido como mantenedor del proyecto.

A mediados de 2023, Tan solicitó que se desactivara el comprobador público de vulnerabilidades, lo que permitiría introducir el código de la puerta trasera.

Screenshot von Tans GitHub-Antrag, ifunc zu deaktivieren. Screenshot von Tans GitHub-Antrag, ifunc zu deaktivieren.

Captura de pantalla de la solicitud de Tan en GitHub para que se deshabilitara ifunc.

Después de seguir trabajando en el proyecto, en febrero de 2024, Tan hizo los commits de las versiones finales de XZ Utils 5.6.0 y 5.6.1, que contienen la puerta trasera maliciosa.

Este ataque de ingeniería social a largo plazo se ganó la confianza de una comunidad de código abierto que dio a Tan el acceso que necesitaba para intentar llevar a cabo el ataque. La cantidad de tiempo invertido y el alto nivel técnico de la puerta trasera en sí está llevando a algunos investigadores de seguridad a creer que hay un actor patrocinado por el Estado detrás de él.

¿Cuál es el futuro de XZ?

El sitio web de XZ Utils está totalmente bajo el control de su principal desarrollador, Lasse Collin, y Jian Tan ha sido completamente retirado del proyecto. La página de GitHub para el proyecto está de nuevo en línea y Collin ha informado de que actualmente están revisando el repositorio y una vez que esto se complete planea publicar un artículo sobre el incidente.

En el momento del descubrimiento se confirmó que las siguientes distribuciones de Linux estaban afectadas por la puerta trasera:

Homebrew, el gestor de paquetes para MacOS, utilizaba 5.6.x pero ha vuelto a XZ Utils 5.4.6.

Si desea comprobar si tiene una versión retrocedida de XZ Utils en su dispositivo puede ejecutar “xz —version” en su terminal. Si la versión 5.6.0 o 5.6.1 está instalada se recomienda volver a la versión 5.4.x.

El código abierto es la única forma de proporcionar software seguro

Hemos tenido mucha suerte. Si el proyecto XZ Utils se hubiera mantenido de forma privada y Freund se hubiera visto obligado a enviar un ticket de soporte, hoy podríamos estar en una situación muy diferente. El incidente de la puerta trasera de XZ es un ejemplo perfecto de por qué la publicación de software de código abierto ofrece grandes ventajas en materia de seguridad. Sólo permitiendo a todo el mundo el acceso a la revisión del código fuente, damos a los investigadores de seguridad la oportunidad de descubrir este tipo de ataques antes de que las cosas vayan terriblemente mal.

El software de código abierto aumenta la seguridad de todos:

  • Permitir la revisión pública del código de seguridad aporta críticas constructivas de expertos de toda experiencia y formación.
  • Una comunidad puede detectar fallos y vulnerabilidades más rápidamente que un equipo de desarrollo de código cerrado.
  • Aumentar la confianza a través de la transparencia permite a los usuarios finales saber que pueden confiar en los productos que eligen para protegerse a sí mismos y a sus datos.

El software de código abierto es un aspecto crucial de toda seguridad digital. El proyecto XZ Utils es utilizado por productos empresariales y, sin permitir el escrutinio de la comunidad, este ataque interno podría haber pasado desapercibido. Con el software de código cerrado, sólo las personas seleccionadas tienen el privilegio de ver el código fuente, lo que en última instancia hace más probable que se pasen por alto cambios como éste.

Aunque las grandes empresas tecnológicas tienen muchos desarrolladores en sus equipos que ven el código, nunca hay garantía de que un empleado sea como Jian Tan, tratando de colar código malicioso. El código abierto garantiza que haya más ojos en el código, lo que significa que, además de protocolos de seguridad sólidos y revisiones repetidas del código, más ojos pueden detectar más problemas. Según la ley de Linus: Con suficientes ojos, todos los fallos son superficiales.

En Tuta publicamos todos nuestros protocolos de cifrado y el código cliente en código abierto para garantizar a nuestros usuarios que pueden confiar en que cumplimos las promesas de seguridad que hacemos. Nuestro cifrado no sólo es desarrollado y probado por expertos en criptografía, sino que también se pone a disposición de todos los investigadores de seguridad para que lo prueben y revisen. La confianza se gana, y al publicar nuestro código totalmente abierto estamos demostrando que Tuta proporciona la mejor seguridad disponible para el correo electrónico.

Mantente seguro y feliz encriptando.