Resumen del Hackeo
- Contexto Inicial:
- Andrés Freun, un ingeniero de Microsoft trabajando en Postgres SQL, notó un comportamiento inusual en su sistema mientras realizaba pruebas automatizadas. Aunque inicialmente no le dio importancia, al investigar más a fondo descubrió que el servicio de SSH (Secure Shell) estaba usando más recursos de lo normal.
- Descubrimiento de la Puerta Trasera:
- Andrés descubrió que la causa del problema era una pequeña librería utilizada para comprimir y descomprimir archivos, llamada liblzma, que es parte del paquete de software xzutils. Este paquete viene con muchos sistemas operativos Linux y es crucial para la funcionalidad del sistema.
- Infección a Través de Actualizaciones:
- El código malicioso no fue descargado de internet sino que vino directamente desde los servidores de Debian, uno de los sistemas operativos Linux más usados. Esto implicaba que la actualización del sistema operativo traía consigo el software malicioso.
- Ataque a la Cadena de Suministro:
- El hacker se infiltró entre los programadores del proyecto xzutils, enviando cambios menores al código que fueron aceptados. Con el tiempo, estos cambios permitieron la inserción de la puerta trasera que comprometía la seguridad de los sistemas que usaban este software.
- Impacto Potencial:
- De haber tenido éxito, los hackers habrían tenido acceso a una gran parte de los servidores en todo el mundo que corren con Linux, incluidos smartphones, routers y sistemas de cloud computing, exponiendo datos y permitiendo control remoto de estos dispositivos.
- Respuesta de la Comunidad:
- La comunidad Open Source de Linux, que trabaja de manera desinteresada, se organiza a través de listas de correo y repositorios de código. Este caso destacó la necesidad de mayor vigilancia y revisión de las contribuciones al código para prevenir futuras infiltraciones.
Personas Implicadas
- Andrés Freun: Ingeniero de Microsoft que descubrió la anomalía en su sistema.
- Lass Colin: Desarrollador de software finlandés que creó y mantenía el proyecto xzutils.
- Jatan: Un nuevo usuario en la lista de correos de xzutils que introdujo cambios menores al proyecto, que eventualmente contenían la puerta trasera.
- Otros Usuarios: Giggar Kumar y Denis Enns, quienes también participaron en las discusiones sobre el mantenimiento del proyecto y la integración de nuevos cambios.
Mecanismo del Ataque
- Introducción de Código Malicioso:
- El atacante introdujo pequeñas modificaciones aparentemente inofensivas al código de xzutils. Con el tiempo, estos cambios permitieron la inserción de una puerta trasera que comprometía la seguridad del sistema.
Importancia y Lecciones Aprendidas
- Vulnerabilidad de la Cadena de Suministro de Software:
- El caso subraya la vulnerabilidad de los sistemas de software que dependen de contribuciones abiertas y la importancia de una revisión exhaustiva del código.
- Seguridad en Actualizaciones:
- La necesidad de verificar la seguridad de las actualizaciones y tener mecanismos para detectar comportamientos anómalos en el sistema.
Este resumen captura los elementos clave del hackeo y su impacto potencial, resaltando la importancia de la vigilancia en proyectos de software libre y las posibles consecuencias de una infiltración en la cadena de suministro.
Qué es SSH (Secure Shell)
SSH (Secure Shell) es un protocolo de red criptográfico que se utiliza para operar servicios de red de forma segura sobre una red insegura. SSH es ampliamente utilizado para acceder de manera segura a sistemas remotos y ejecutar comandos en ellos. También permite la transferencia segura de archivos y el manejo de sesiones de red.
Cómo Funciona SSH
- Autenticación:
- Llaves Públicas y Privadas: SSH utiliza un par de llaves criptográficas (pública y privada) para autenticar a los usuarios. La llave pública se coloca en el servidor, mientras que la llave privada se mantiene en secreto en la máquina del usuario.
- Contraseñas: Además de las llaves, SSH puede utilizar contraseñas para autenticar a los usuarios.
- Establecimiento de la Conexión:
- Cuando un cliente (la máquina del usuario) intenta conectarse a un servidor SSH, el servidor envía su llave pública al cliente.
- El cliente usa esta llave pública para cifrar un mensaje, que solo puede ser descifrado por el servidor con su llave privada.
- Si el servidor puede descifrar el mensaje, la conexión es autenticada y establecida.
- Cifrado de la Sesión:
- Una vez establecida la conexión, toda la comunicación entre el cliente y el servidor está cifrada, asegurando que los datos no puedan ser leídos por terceros que intercepten la comunicación.
- Túneles SSH:
- SSH permite la creación de túneles cifrados para redirigir el tráfico de red de manera segura a través de la conexión SSH. Esto es útil para acceder a recursos internos de una red desde el exterior.
Qué es una Puerta Trasera en Ciberseguridad
Una puerta trasera (backdoor) en ciberseguridad es un método para eludir las medidas normales de autenticación y obtener acceso no autorizado a un sistema o datos. Las puertas traseras son instaladas intencionalmente por desarrolladores, administradores de sistemas o, más comúnmente, por atacantes maliciosos.
Características y Función de una Puerta Trasera
- Acceso Oculto:
- Las puertas traseras permiten a los atacantes acceder a un sistema sin ser detectados. Este acceso puede ser persistente, permitiendo al atacante regresar al sistema en cualquier momento.
- Elusión de Seguridad:
- Las puertas traseras están diseñadas para evadir las medidas de seguridad y los controles de acceso implementados en el sistema.
- Control Remoto:
- Los atacantes pueden usar una puerta trasera para ejecutar comandos en el sistema comprometido, acceder a datos confidenciales, instalar software malicioso adicional o usar el sistema como un punto de partida para lanzar otros ataques.
- Métodos de Instalación:
- Ingeniería Social: Los usuarios pueden ser engañados para instalar software que contiene una puerta trasera.
- Explotación de Vulnerabilidades: Los atacantes pueden explotar vulnerabilidades en el software para instalar una puerta trasera sin el conocimiento del usuario.
- Modificación del Código Fuente: En proyectos de código abierto, los atacantes pueden contribuir con código aparentemente benigno que contiene una puerta trasera.
Ejemplo Práctico
En el contexto del hackeo al paquete xzutils:
- SSH: Se utilizó para acceder de manera remota a los sistemas.
- Puerta Trasera: El atacante introdujo cambios en el código fuente de xzutils que permitieron la instalación de una puerta trasera. Esta puerta trasera pudo haber permitido el acceso remoto y no autorizado a los sistemas de los usuarios que actualizaron sus paquetes xzutils con el código comprometido.
En resumen, SSH es una herramienta crucial para la administración remota segura de sistemas, mientras que una puerta trasera representa una grave amenaza de seguridad que permite el acceso no autorizado y puede comprometer la integridad y confidencialidad de los sistemas afectados.
Sí, tanto Kali Linux como Ubuntu fueron vulnerados debido a un fallo en la biblioteca xz-utils, una herramienta utilizada para la compresión de datos en sistemas Linux. Esta vulnerabilidad fue descubierta en las versiones 5.6.0 y 5.6.1 de xz-utils y se identificó bajo el código CVE-2024-3094.
Cómo Funcionó el Hackeo
- Inserción de la Puerta Trasera:
La puerta trasera se insertó en el proceso de autenticación de claves públicas de SSH (sshd
). Durante este proceso, la funciónRSA_public_decrypt@...pl
se llamaba, lo que permitía que el código del atacante se ejecutara. Este código intentaba extraer una carga útil de la clave pública pasada durante la autenticación y, si esta carga útil pasaba una serie de verificaciones, se ejecutaba usando la funciónsystem()
de la biblioteca libc. Este procedimiento convertía la vulnerabilidad en una ejecución remota de código (RCE), no simplemente una omisión de autenticación (wiz.io) (Wikipedia). - Condiciones Específicas:
La instalación de la puerta trasera solo ocurría bajo ciertas condiciones:
- El sistema operativo objetivo debía ser Linux x86-64.
- El proceso de construcción de XZ debía ser parte de una construcción de paquetes Debian o RPM.
- Varias condiciones del entorno también debían cumplirse, como que ciertas variables de entorno no estuvieran establecidas y que el binario en ejecución fuera
/usr/sbin/sshd
(wiz.io)..
Impacto en Kali Linux y Ubuntu
- Kali Linux: Los usuarios que actualizaron sus instalaciones entre el 26 y el 29 de marzo de 2024 podrían haber instalado la versión comprometida de xz-utils (5.6.0-0.2). Es crucial que estos usuarios actualicen sus sistemas inmediatamente para corregir esta vulnerabilidad (Cyber Security News)..
- Ubuntu: Al igual que en Kali Linux, los usuarios de Ubuntu también estuvieron en riesgo si actualizaron a las versiones afectadas de xz-utils durante el mismo período. La vulnerabilidad fue rápidamente parcheada una vez descubierta (wiz.io) (Wikipedia)..
Medidas de Mitigación
Para verificar si tu sistema está afectado, puedes ejecutar el siguiente comando:
apt-cache policy liblzma5
Si el resultado muestra que tienes instalada la versión 5.6.0-0.2, debes actualizar a la última versión segura usando estos comandos:
sudo apt update && sudo apt install -y --only-upgrade liblzma5
Este incidente subraya la importancia de aplicar actualizaciones de seguridad rápidamente y de estar atento a posibles vulnerabilidades en software crítico (Cyber Security News) (Wikipedia).
La comunidad Linux respondió rápidamente para identificar y parchear la vulnerabilidad, destacando la importancia de la vigilancia y la respuesta rápida en la seguridad del software de código abierto.