GHOST bug crítico en Linux, con 14 años de antiguedad

Investigadores de la empresa de seguridad Qualys han descubierto un agujero de seguridad muy importante en la biblioteca de C de GNU Linux (glibc). La vulnerabilidad ya tiene nombre y imagen relacionada: GHOST (proviene de GetHOST), ha sido identificado como CVE-2015-0235 y permite tomar el control de sistemas Linux remotamente, sin conocer datos de autenticación como usuario y contraseña. Aquí se puede ver el video publicado por la empresa.

La gravedad de la vulnerabilidad es comparable Heartbleed, Shellshock y POODLE. Qualys alertó a los principales distribuidores de Linux sobre el agujero de seguridad y la mayoría ya han lanzado las actualizaciones correspondientes. Josh Bressers, manager del equipo de seguridad de Red Hat dijo en una entrevista que "Red Hat fue avisado de esto hace una semana y ya están listas las actualizaciones para Red Hat Enterprise Linux (RHEL) 5, 6 y 7".

Este agujero existe en todos los Linux con glibc-2.2, el cual fue lanzado el 10 de noviembre de 2000. Qualys encontró que el fallo había sido parcheado junto con una corrección menor entre los lanzamientos de glibc-2.17 y glibc-2.18 publicado 21 de mayo de 2013. Sin embargo, esta solución no fue clasificada como un problema de seguridad, y como resultado, muchas distribuciones estables aún tienen el bug. Se ha confirmado que las versiones desde 2.2 a 2.17 son vulnerables.

Las distribuciones susceptibles de ataque incluyen 7 Debian (Wheezy), RHEL 5, 6 y 7, CentOS 6 y 7 y Ubuntu 12.04. Además de la solución de Red Hat, Debian actualmente está reparando sus distribuciones, Ubuntu ha parcheado el bug para 12.04 y 10.04 y, los parches para CentOS están en camino.

La vulnerabilidad puede ser explotada mediante el uso de la función gethostbyname de glibc. Esta función se utiliza en casi todos los Linux cuando una computadora intenta acceder a otro equipo conectado a la red o, más comúnmente, al resolver un nombre de dominio mediante DNS.
Para aprovechar esta vulnerabilidad, un atacante necesita provocar un desbordamiento de búfer mediante el uso de un argumento "hostname" no válido y entonces se permite ejecutar código arbitrario con los permisos del usuario que está ejecutando DNS. En definitiva, una vez que el atacante ha explotado GHOST, es capaz de tomar el control del sistema.

"GHOST plantea un riesgo alto porque hace que sea increíblemente fácil tomar el control de un sistema. Por ejemplo, un atacante podría enviar un simple correo electrónico en un sistema basado en Linux y automáticamente obtener acceso completo a esa máquina", dijo Wolfgang Kandek de Qualys. "Dado el gran número de sistemas basados en glibc, creemos que esto es una vulnerabilidad de severidad alta y debe ser tratada inmediatamente. El mejor curso de acción para mitigar el riesgo es aplicar el parche brindado por el proveedor".

Qualys ha desarrollado una prueba de concepto enviando un comando SMTP inválido al servidor de correo Exim, en el cual simplemente envían un correo electrónico creado especialmente y que permite ejecutar una shell remota en el Linux. Según Qualys, "esto ignora todas las protecciones existentes (como ASLR, PIE y NX) en sistemas de 32 bits y 64 bits".

El consejo es actualizar Linux tan pronto como sea posible y reiniciar después parcheo porque gethostbyname es llamado por muchos procesos fundamentales, como Apache, Cups, Dovecot, Exim, GnuPG, isc-dhcp, lighttpd, mariadb/mysql, nfs-utils, nginx, nodejs, openldap, openssh, postfix, proftpd, pure-ftpd, rsyslog, samba, sendmail, sysklogd, syslog-ng, tcp_wrappers, vsftpd, y xinetd.

¿Cómo saber si soy vulnerable?

Esto es muy sencillo, simplemente se puede ejecutar un comando que utilice eglibc y observar la versión.
Por ejemplo en Debian/Ubuntu, el comando ldd:

ldd --version

ldd (Ubuntu EGLIBC 2.11.1-0ubuntu7.12) 2.11.1
Copyright (C) 2012 Free Software Foundation, Inc.

En este caso el texto en rojo indica la versión de eglibc utilizada: la 2.11 que es vulnerable.

En Red Hat y CentOS se puede utilizar rpm:
rpm -q glibc

Además, la Universidad de Chicago ha creado un sencillo script, basado en el original, para probar si se es vulnerable. Se puede descargar desde aquí o aquí. Una vez compilado con GCC, el script informa "vulnerable" o "not vulnerable".

Este otro script SH también hace lo propio.

Actualización: Red Hat, Debian, Ubuntu y Novell han publicado los parches respectivos.

Más información:
Qualys Advisory: https://www.qualys.com/research/security-advisories/GHOST-CVE-2015-0235.txt
RedHat: https://rhn.redhat.com/errata/RHSA-2015-0090.html
Ubuntu: https://launchpad.net/ubuntu/+source/eglibc
Debian: https://security-tracker.debian.org/tracker/CVE-2015-0235
GNU C Library: http://www.gnu.org/software/libc/
Mitre: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0235

Comentarios