Recientemente fue comprometido el código fuente de vsftp 2.3.4, un servidor FTP que contiene el siguiente eslogan en su pagina web:

Probably the most secure and fastest FTP server for UNIX-like systems. (Probablemente, el más rápido y seguro servidor de FTP para sistemas basados en UNIX)

El pasado 3 de julio se corrigió el código fuente, el cual contenía un troyano. Las funcionalidades de este troyano las veremos de la mano de un diffing que se hizo público sobre la versión vulnerada y la original, el cual lo pueden encontrar aquí. Sin mas preámbulo pasaremos a detallar la modificación que hizo el "programador malicioso":

Este trozo de código, llama a la función vsf_sysutil_extra(), siempre y cuando los primeros 2 caracteres del nombre de usuario sean una cara feliz. En algunos post han comentado que esta función solo se ejecuta cuando se pone de nombre de usuario una carita feliz ":)", pero eso no es cierto... Al no chequear un NULL como tercer carácter, dicha función sera ejecutada siempre y cuando los primeros dos caracteres sean un ":" y ")", es decir que un nombre de usuario como ":)havefun" o ":)enjoy", serán igualmente validos, debido a que solo se está comprobando los primeros caracteres. Esto debe ser un descuido del programador, pero poco hace a la relevancia debido a que lo importante está en la función. Miremos otro sector del código fuente vulnerado.

Este sector solo añade las librerías necesarias para trabajar con sockets y alguna que otra librería necesaria para la función vsf_sysutil_extra(). Por ultimo tenemos la siguiente sección:

Esta es la función que ejecuta cuando el nombre de usuario comienza con un ":)". Estas pocas lineas abren un socket en el puerto 6200 y dejan colgada una shell en el mismo. Con esto tenemos un código con una puerta trasera para cualquier atacante que reconozca la versión vulnerable. Esto se podría lograr leyendo el banner del servicio ftp con una simple conexión al mismo. Luego se tendría que ingresar el nombre de usuario con un ":)" y proceder a conectar al puerto 6200 de la maquina vulnerable, para así obtener una shell. Esta no es la primera vez que un "software libre" sufre una modificación en sus repositorios inyectándole algún tipo de backdoor, un claro ejemplo de esto es el servidor ProFTPd que fue troyanizado a principios del año pasado.

Con esto queda demostrado que no solo hay que desconfiar de ejecutables, sino que un código fuente potencialmente legitimo podría contener un troyano, por mas que este se encuentre en un servidor seguro, pudiendo dejar al descubierto todos nuestros sistemas. Esto es un duro golpe a la comunidad del software libre y su paradigma, pero es parte de este mundo. En el laboratorio de Análisis e Investigación de ESET Latinoamérica, aconsejamos chequear la integridad del archivo verificando siempre el md5 o sha1 del archivo a descargar.

Javier Aguinaga
Malware Analyst