Ayer os contamos todos los detalles sobre la vulnerabilidad GHOST, un fallo de seguridad que se introdujo dentro del kernel con el paquete glibc-2.2, lanzado el 10 de noviembre del 2000. En esta entrada tenéis todos los detalles sobre este nuevo fallo de seguridad que afecta a todas las versiones de Linux que tienen instalado este paquete, aunque actualmente la mayoría de ellas han actualizado este paquete y por tanto están a salvo. Ahora os vamos a explicar cómo comprobar si nuestro sistema Linux está afectado por esta vulnerabilidad GHOST. Aprende a configurar el firewall Nftables en Linux.
Para comprobar si nuestro sistema Linux está afectado, simplemente debemos abrir un fichero de texto con vuestro editor de texto favorito (Vi, Vim o Nano si tu sistema Linux funciona únicamente a través de comandos) o editores gráficos si es que usas entorno gráfico. Una vez que estás en modo edición, procedemos a copiar el siguiente script:
#!/bin/bash
GHOSTTEMP=$(mktemp /tmp/ghost.XXXXXXXXXXXXXX)
GHOSTEXEC=$(mktemp /tmp/ghost.XXXXXXXXXXXXXX)
cat $GHOSTTEMP
#include
#include
#include
#include
#include #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] = '�';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
if (strcmp(temp.canary, CANARY) != 0) {
puts("ERES VULNERABLE");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("NO ERES VULNERABLE");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}
EOF
gcc -x c $GHOSTTEMP -o $GHOSTEXEC
$GHOSTEXEC
rm -f $GHOSTTEMP $GHOSTEXEC
Una vez que lo hemos copiado, guardamos el archivo con nombre ghost.sh (por ejemplo) y le damos permisos de ejecución:
sudo chmod 755 ghost.sh
A continuación ejecutamos el script como hacemos normalmente, ya sea con:
./ghost.sh
O con
bash ghost.sh
Nada más ejecutar el script, nos saldrá un mensaje diciendo si somos o no vulnerables.
Algunas distribuciones de Linux utilizan una versión de este paquete que ya no tiene este fallo de seguridad, no obstante es recomendable verificarlo.