Como ya adelantaba mi compañero Willy, se ha detectado una nueva vulnerabilidad grave en Linxu y se denomina GHOST. Si aun no se han informado pueden consultar su artículo para saber de qué trata y en este te damos los pasos para comprobar si tu distrubición está afectada por este problema o si por el contrario las actualizaciones automáticas ya lo han parcheado…
Recuerda que la vulnerabilidad está en una biblioteca que utiliza el kernel Linux, y no en el propio Linux, se trata de Glibc, la bliblioteca GNU C Library. GHOST fue descubierto por la consultora de seguridad Qualys y es un problema crítico por lo que es necesario que te informes si estás afectado. Para ello sigue los siguientes pasos:
- Abre un fichero de texto con tu editor de texto favorito (Vi, Vim, Nano, Gedit,…), no importa si es un editor en modo gráfico.
- Ahora copia este script y pegalo en el editor de texto:
#!/bin/bash GHOSTTEMP=$(mktemp /tmp/ghost.XXXXXXXXXXXXXX) GHOSTEXEC=$(mktemp /tmp/ghost.XXXXXXXXXXXXXX) cat <<"EOF" > $GHOSTTEMP #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANARY "in_the_coal_mine" struct { char buffer[1024]; char canary[sizeof(CANARY)]; } temp = { "buffer", CANARY }; int main(void) { struct hostent resbuf; struct hostent *result; int herrno; int retval; /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/ size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1; char name[sizeof(temp.buffer)]; memset(name, '0', len); name[len] = '\0'; retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); if (strcmp(temp.canary, CANARY) != 0) { puts("Lo siento. Tu equipo está afectado por GHOST. Parchealo inmediatamente."); exit(EXIT_SUCCESS); } if (retval == ERANGE) { puts("¡Enhorabuena! Tu sistema no es vulnerable. Www.linuxadictos.com te desea un buen día."); exit(EXIT_SUCCESS); } puts("should not happen"); exit(EXIT_FAILURE); } EOF gcc -x c $GHOSTTEMP -o $GHOSTEXEC $GHOSTEXEC rm -f $GHOSTTEMP $GHOSTEXEC
- Guarda el script y le das el nombre que tú quieras, por ejemplo “ghost-test.sh”, es importante que no lo guardes con la extensión .txt, sino con .sh. Si lo has guardado como .txt no importa, puedes pinchar en el fichero y cambiarselo en cualquier momento.
- Ahora desde la consola ve a la carpeta donde se encuentre el script. Por ejemplo, si la tienes en /home teclea:
cd /home
- Y luego haz lo siguiente (este paso también se puede hacer en modo gráfico, pinchando con el botón derecho del ratón sobre el fichero, te vas a propiedades y en la pestaña de Permisos le das permiso de ejecución):
sudo chmod 775 ghost-test.sh
- Y ahora ejecutas el script desde la consola (recuerda que si lo has guardado con otro nombre diferente, tendrás que sustituir “ghost-test” por ese otro nombre):
./ghost-test.sh
- Y te aparecerá un mensaje diciéndote si eres o no vulnerable. Así de sencillo.
Espero que te haya servido…Recuerda que algunas distribuciones usan versiones no afectadas por GHOST o puede que las actualizaciones automáticas lo hayan solucionado, si no es así, parchea tu distro o actualizala. Por ejemplo, Google ya solucionó este problema el año pasado en su Chrome OS para Chrome Book. Pero Google silenció el problema en vez de cooperar con la comunidad y que todos pudiesen solucionar el problema desde el pasado año. Un gesto extraño de Google y que no gusta nada.
El artículo How-to: comprueba si tu distribución Linux está afectada por la vulnerabilidad GHOST ha sido originalmente publicado en Linux Adictos.