Blog

5
Feb 2015

GetRootByGetHostByName – Vulnerabilidad Ghost

Posteado Por Catrian

Hoy hablaremos acerca de una nueva vulnerabilidad en distros Linux, descubierta por la empresa Qualys, dándolo a conocer Amol Sarwate, jefe de ingeniería, en un post en el blog de la empresa. No se publicaron detalles de GHOST hasta que las principales distribuciones Linux tuvieran los paquetes con el parche correspondiente disponible. Una vez se han sincronizado los repositorios han liberado los detalles del “fantasma”.

Veamos de qué se trata. Todas las distribuciones Linux que usen la librería glibc (y eglibc) versión 2.17 y anteriores son virtualmente vulnerables. ¿Cómo podemos comprobar la versión?

ldd print | grep libc.so

o directamente ejecutando la librería en la línea de comandos. Si claro, en Linux se pueden ejecutar librerías. En este caso, esta dispone de un punto de entrada hacia _libc_main donde llama a __libc_print_version que no hace otra cosa que imprimir cierta información en formato humano sobre su compilación.

/lib/i386-linux-gnu$ ./libc.so.6

GNU C Library (Ubuntu EGLIBC 2.19-0ubuntu6.5) stable release version

2.19, by Roland McGrath et al.

Copyright (C) 2014 Free Software Foundation, Inc.

Siguiendo con lo nuestro, el fallo se encuentra en la función ‘__nss_hostname_digits_dots’, definida en el archivo ‘gnu/glibc/nss/digits_dots.c’. Esta función es usada por un grupo de funciones de la familia ‘gethostbyname’ (de ahí el nombre GHOST) y su cometido es comprobar si la cadena que se ha pasado a ‘gethostbyname’ es una IP. De esta forma el sistema se ahorra una consulta DNS. Básicamente es como si se intentara resolver una IP.

Este exploit es todo un desafío ya que llegar a la línea en donde se produce el desbordamiento es una camino largo y lleno de obstáculos a causa la comprobación de ciertos valores en la cadena donde se supone está el nombre del host, como lo apunta Qualys en su anuncio de seguridad.

Hay que tener en cuenta que la librería ‘libc’ está presente en todos los sistemas Linux, casi que podemos decir que todo el software nativo y no nativo hacen uso de esta librería y, por ende, los hace vulnerables al exploit; sin embargo, hay que tener en cuenta la forma en que se usan las funciones y el procesamiento previo que se hace sobre el nombre del host. Entonces no todo es vulnerable, son muchas las condiciones que se deben tener en cuenta.

Muchas distribuciones Linux ya contienen un parche para este fallo, el cual se publicó en mayo del 2013, sin embargo es importante tener en cuenta que hay cientos de miles de servicios que pueden estar a un par de paquetes TCP de quedar por el suelo. Esta vulnerabilidad se encuentra presente desde el 2000.

Información en Qualys

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

* Campo obligatorio