Backdoor en software libre vsftpd

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

Autor , ESET

  • Que interesante, justo ayer estuve investigando sobre backdoors en linux y tus conclusiones son muy puntuales; recuerdo que en alguna ocasión un servidor IRC fué víctima de unos intrusos que igual, modificaron códigos fuentes y para más joder no se tenían configurados ningún parámetro de seguridad que avisara sobre ingresos indebidos. Lamentable pero suele suceder. Es la famosa sensación falsa de seguridad, que tantos linux-fans se jactan (o “fans” de SL). La seguridad no es un programa, es un proceso que involucra personas y otros entes.

    em, también está la opción de regenerar el md5 para que de igual forma aunque hagas la comparación seas engañado.

    Buen post

    • Hola adario

      Gracias por tu comentario.

      Con respecto a lo de md5, no creo que puedan obtener un archivo con el mismo hash. Esto se debe a que para obtener una colisión, el archivo debe ser muy modificado impidiendo que compile a causa de la basura que se le escribe. Pero es verdad, hay que tenerlo en cuenta.

      Nuevo consejo: Usen SHA1 ;)

Síguenos