Comprobar si somos vulnerables a Ghost CVE-2015-0235
systemadmin.es by Jordi Prats
Mediante un .c hecho por la Universidad de Chicago podemos comprobar si somos vulnerables a Ghost (CVE-2015-0235): Una vulnerabilidad de buffer overflow de glibc en las funciones gethostbyname() y gethostbyname2()
Pasteando el siguiente script en la shell podremos verificar si somos o no vulnerables:
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] = ''; retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); if (strcmp(temp.canary, CANARY) != 0) { puts("vulnerable"); exit(EXIT_SUCCESS); } if (retval == ERANGE) { puts("not vulnerable"); exit(EXIT_SUCCESS); } puts("should not happen"); exit(EXIT_FAILURE); } EOF gcc -x c $GHOSTTEMP -o $GHOSTEXEC $GHOSTEXEC rm -f $GHOSTTEMP $GHOSTEXEC
En caso que seamos vulnerables tendremos:
(...) # gcc -x c $GHOSTTEMP -o $GHOSTEXEC # $GHOSTEXEC vulnerable # rm -f $GHOSTTEMP $GHOSTEXEC
Tags: Ghost
January 28, 2015 | Categories: Comprobar si somos vulnerables a Ghost CVE-2015-0235, Ghost | Tags: Comprobar si somos vulnerables a Ghost CVE-2015-0235 | 1 Comment