GNU C, eli [tt]glibc[/tt]-kirjastosta on löytynyt haavoittuvuus.
[ul][li]https://www.viestintavirasto.fi/tietoturva/haavoittuvuudet/2015/haavoittuvuus-2015-006.html[/li]
[li]https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2015-0235[/li]
[li]https://security-tracker.debian.org/tracker/CVE-2015-0235[/li][/ul]
Korjaus:
Haavoittuvuus korjataan asentamalla paikattu versio [tt]glibc[/tt]-kirjastosta, jonka jakelut toimittavat päivitysten mukana automaattisesti. Tämän jälkeen kyseistä kirjastoa käyttävät ohjelmat tulee käynnistää uudelleen. Listan uudelleen käynnistettävistä ohjelmista saa komennolla:
Helpointa on kuitenkin käynnistää koneet kokonaan uudelleen.
Testaus:
Oman järjestelmän voi testata seuraavalla ohjelmalla (kopioitu openwall.com -sivulta, katso lisätietoa alempana):
[code]$ cat > GHOST.c << EOF
#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) - 16sizeof(unsigned char) - 2sizeof(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(“vulnerable”);
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts(“not vulnerable”);
exit(EXIT_SUCCESS);
}
puts(“should not happen”);
exit(EXIT_FAILURE);
}
EOF[/code]
Ainakin Fedora 21 -jakelulla antaa tulokseksi:
$ ./GHOST
not vulnerable
Lisätietoa:
[ul][li]https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability[/li]
[li]http://www.openwall.com/lists/oss-security/2015/01/27/9[/li][/ul]