Bu glibc'den kaynaklanan bir sorunmuş. Sanırım aşağıdaki bağlantıda paylaşılan bilgi olsa gerek. Etkilenen dağıtımlarda bağlantıda listelenmiş.
http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux/Bugün gelen eglibc meta paketi bu sorunla ilgili bazı güncellemeleri de içeriyor.
eglibc (2.19-0ubuntu6.7) trusty-security; urgency=medium
* SECURITY UPDATE: glibc getaddrinfo stack-based buffer overflow
- debian/patches/any/CVE-2015-7547-pre1.diff: fix memory leak in
resolv/nss_dns/dns-host.c.
- debian/patches/any/CVE-2015-7547-pre2.diff: fix memory leak in
include/resolv.h, resolv/gethnamaddr.c, resolv/nss_dns/dns-canon.c,
resolv/nss_dns/dns-host.c, resolv/nss_dns/dns-network.c,
resolv/res_query.c, resolv/res_send.c.
- debian/patches/any/CVE-2015-7547.diff: fix buffer handling in
resolv/nss_dns/dns-host.c, resolv/res_query.c, resolv/res_send.c.
- CVE-2015-7547
Yayınlanan düzeltme ile ilgili ayrıca aşağıdaki alıntının bağlantısı incelenebilir.
CVE-2015-7547
The Google Security Team and Red Hat discovered that the glibc host name resolver function, getaddrinfo, when processing AF_UNSPEC queries (for dual A/AAAA lookups), could mismanage its internal buffers, leading to a stack-based buffer overflow and arbitrary code execution. This vulnerability affects most applications which perform host name resolution using getaddrinfo, including system services.
Sorunun sizin sisteminizi etkileyip etkilemediğini anlamak için aşağıdaki satırları bir metin düzenleyiciye kopyalayıp yapıştırınız.
/* ghosttest.c: GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */
#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("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}Sonra bu dosyayı
test.c ismiyle kaydedin ve kullanıcı ev dizinine taşıyınız.
Aşağıdaki komutla, kurulu değilse derleme için gerekli olacak build-essential paketini yükleyiniz.
sudo apt-get install build-essentialŞimdi aşağıdaki komutla test.c dosyasını derleyiniz.
gcc test.c -o testAşağıdaki komutla derlediğiniz dosyayı çalıştırınız.
./testÇıktısında aşağıdaki sonucu alıyorsanız sizin sisteminiz bu açıktan etkilenmiyordur.
not vulnerableAşağıdaki çıktıyı alıyorsanız sisteminiz bu açıktan etkileniyordur.
vulnerableBu durumda aşağıdaki komutlar ile sisteminizi güncelleyiniz.
sudo apt-get update
sudo apt-get upgradeLinux Mint 17.x sürüm için şu an bir sıkıntı yok, Linux Mint 13 kullanıcıları sistemlerini güncellemeliler. Linux Mint 13 ve LinuxMint 17.x sürüm arasında desteği biten sürümleri kullananlar, desteği süren sürümlere geçiş yapmalılar.