紧急漏洞预警 – “GHOST”

信息安全 3692 Views

漏洞摘要

Glibc是由GNU发布的Linux最底层的api。几乎其它任何运行库都会依赖于glibc。

这个基于堆的缓冲区溢出被发现在glibc库的__nss_hostname_digits_dots()函数,恶意攻击者可以利用此漏洞在调用gethostbyname()和gethostbyname2()函数的某些软件执行任意代码。

漏洞影响范围:

glibc库版本为2.2-2.17的Linux操作系统。

漏洞检测代码:

$ 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) - 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); } EOF

编译、执行

$ gcc GHOST.c -o GHOST
$ ./GHOST

若输出

vulnerable

说明存在此漏洞

若输出

not vulnerable

则不存在漏洞

解决方案

升级Glibc

文章参考:https://www.qualys.com/research/security-advisories/GHOST-CVE-2015-0235.txt


如果您喜欢本文章,请点击右上角发送给朋友或分享至朋友圈,并在下方拇指处点一下赞!


如未说明则本站原创,转载请注明出处:NULL » 紧急漏洞预警 – “GHOST”