首页安全服务安全公告
正文

海峡信息-紧急通告2015年第02号(幽灵漏洞)

发布时间:2015-02-03 17:02   浏览次数:2466

[2015年第02号]

尊敬的海峡用户:

2015年1月28日,海峡信息关注到Linux平台的又一个高危漏洞,此漏洞编号为:CVE-2015-0235,初步的CVSS2.0评分为6.8 (10分为最高)。并命名此漏洞为“Ghost”(幽灵)。

【漏洞描述】

代码审计公司Qualys 的研究人员在glibc 库中的__nss_hostname_digits_dots()函数中发现了一个缓冲区溢出的漏洞,这个bug可以经过 gethostbyname*()函数被本地或者远程的触发。应用程序主要使用gethostbyname*()函数发起DNS 请求,这个函数会将主机名称转换为ip 地址。成功利用此漏洞的黑客可能远程获取系统权限。

【发布日期】2015-1-28

【受威胁对象】

影响范围涉及glibc 2.2 至2.15 之间的多个LINUX 系统,包括

Red Hat Enterprise Linux 6 & 7,CentOS 6 & 7,Debian 7 (wheezy),Ubuntu 10.04 & 12.04 等版本。

 

【测试方法】

查看GNU C 库版本

执行如下命令查看Glibc版本号小于等于2.15则在受影响范围内,建议升级。

# ldd --version

演示截图如下:


查看glibc 库信息的命令

根据不同系统版本,执行以下命令查看输出信息中的Glibc版本号小于等于2.15则在受影响范围内,建议升级。

a) Red Hat 的32 位系统:

$ /lib/libc.so.6

b) Red Hat 的64 位系统:

$ /lib64/libc.so.6

c) Debian 的32 位系统:

$ /lib/i386-linux-gnu/libc.so.6

d) Debian 的64 位系统:

$ /lib/x86_64-linux-gnu/libc.so.6

 

编译并运行测试代码

将以下代码保存为*.c文件,使用gcc命令编译后运行,可输出版本信息以及是否有漏洞。命令:

#gcc ghost.c -o ghost

#./ghost

 

//代码开始:

#include <netdb.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <gnu/libc-version.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("Bug exists.");

exit(EXIT_SUCCESS);

}

if (retval == ERANGE)

{

puts("No bug.");

exit(EXIT_SUCCESS);

}

puts("should not happen");

exit(EXIT_FAILURE);

 

【修复方案】

建议升级glibc 到最新的版本。

 

GNU官方的glibc库源码下载:

http://ftp.gnu.org/gnu/glibc/

Debian和ubuntu的RPM安装包下载:

http://pkgs.org/download/libc6

 

对于能连接互联网的主机,建议使用如下命令升级:

RHEL/CentOS:         sudo yum update glibc 

Ubuntu:               sudo apt-get update ; sudo apt-get install libc6


福建省海峡信息技术有限公司 版权所有  联系: hxzhb@heidun.net 闽ICP备06011901号 © 1999-2023 Fujian Strait Information Corporation. All Rights Reserved.

返回顶部