jueves, 19 de febrero de 2009

Una simple vulnerabilidad en telnetd de FreeBSD permite elevar privilegios

Se ha encontrado un fallo en el servidor telnet de FreeBSD que podría permitir a un atacante remoto ejecutar código como root. Aunque el servicio telnet no sea de los más usados hoy en día, se trata de una grave vulnerabilidad generada por un error del equipo de programación de FreeBSD. Recuerda a un fallo muy parecido que sufrió Sun Solaris hace ahora dos años.

FreeBSD es un sistema operativo OpenSource gratuito y de alta calidad, perteneciente a la familia *BSD, como NetBSD u OpenBSD. Está creado con la seguridad como prioridad desde un principio, y con su configuración por defecto, resulta uno de los sistemas operativos más seguros.

El problema encontrado recientemente en el demonio telnet (telnetd) permite a un atacante realizar un ataque basado en variables de entorno. Aunque el demonio limpia las variables de entorno antes de permitir una conexión, cambios recientes en FreeBSD han hecho que esta limpieza no sirva realmente, sin que se hayan percatado los programadores. Por tanto, por ejemplo es posible compilar una librería que cambie el valor de la variable de entorno LD_PRELOAD, y hacer una conexión al demonio telnet usándola (cargando la librería en la llamada). Como no será correctamente filtrada, la cargará y el atacante podrá obtener una shell con privilegios de root (que normalmente ejecuta el demonio telnetd). Aunque el ataque en esencia permite elevación de privilegios local, si además tiene la posibilidad de "subir" a través de cualquier medio esa librería creada a la máquina víctima, el ataque puede realizarse en remoto.

Telnet no es un servicio muy usado hoy en día, por carecer totalmente de mecanismos de seguridad integrados. Aunque hace años se usaba para administrar las máquinas, hoy en día ha quedado relegado por la conexión cifrada y autenticada SSH. Sin embargo, este es uno de los errores más "claros" y sencillos de explotar cometidos por FreeBSD en los últimos años.

Se recomienda seguir los enlaces en el apartado de "más información" para conocer cómo solucionar el problema.

Recuerda a un error cometido por Sun Solaris en febrero de 2007. Se dio a conocer una vulnerabilidad en Sun Solaris 10 tan simple como sorprendente. El fallo permitía el acceso trivial como cualquier usuario (incluido root) también a través de telnet. Sin necesidad de conocimientos especiales, sin shellcode ni exploits, el fallo rozaba lo vergonzosamente simple. La vulnerabilidad fue ya descubierta y corregida en sistemas UNIX en 1994, aunque se reprodujo por error de nuevo en 2002 hasta que fue "redescubierta" en 2007.


Sergio de los Santos
ssantos@hispasec.com


Más información:

FreeBSD-SA-09:05.telnetd Security Advisory
http://security.freebsd.org/advisories/FreeBSD-SA-09:05.telnetd.asc

14/02/2007 Sun Solaris vuelve a sorprender resucitando una
vulnerabilidad "histórica"
http://www.hispasec.com/unaaldia/3035

No hay comentarios:

Publicar un comentario en la entrada