码迷,mamicode.com
首页 > 系统相关 > 详细

Linux Glibc漏洞在线更新

时间:2015-02-11 18:55:54      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:glibc漏洞在线更新

1. 漏洞背景

代码审计公司Qualys的研究人员在glibc库中的__nss_hostname_digits_dots()函数中发现了一个缓冲区溢出的漏洞,这个bug可以经过gethostbyname*()函数被本地或者远程的触发。

1)通过gethostbyname()函数或gethostbyname2()函数,将可能产生一个堆上的缓冲区溢出。经由gethostbyname_r()或gethostbyname2_r(),则会触发调用者提供的缓冲区溢出(理论上说,调用者提供的缓冲区可位于堆,栈,.data节和.bss节等。但是,我们实际操作时还没有看到这样的情况)。

2)漏洞产生时至多sizeof(char* )个字节可被覆盖(注意是char*指针的大小,即32位系统上为4个字节,64位系统为8个字节)。但是payload中只有数字( ‘0 ‘...‘ 9‘) ,点( “.”) ,和一个终止空字符(‘\0‘ ) 可用。

3)尽管有这些限制,我们依然可以执行任意的代码。

使用源代码方式升级 Glibc 是需要小心考虑的事情,因为整个系统几乎所有应用程序都依赖于原有的动态库,升级的时候,执行"make install"命令会打断旧的动态库链接,改为指向新的库文件。在这个过程中,不同的链接指向新旧不同版本的库文件,很容易导致系统崩溃,崩溃后,一般是无法重新启动的。

 

2. 影响范围

该漏洞影响glibc库版本2.2-2.17的Linux操作系统

操作系统类型包括

CentOS 6 & 7

Debian 7

Red Hat Enterprise Linux 6 & 7

Ubuntu 10.04 & 12.04

各Linux发行版

 

3. 漏洞测试

[root@SX_GH_HA_Master ~]# ./ghost 

vulnerable


[root@zh_uat_s2 ~]# ./ghost 

notvulnerable

4. 漏洞修复

更新是在glibc包中,但是这个库会被很多运行中的服务使用。在更新之后,每个服务都要重启一下。要找到所有依赖glibc的服务,请使用如下命令,它会显示所有打开的文件(lsof),然后找到引用glibc库的文件。

lsof | grep libc | awk ‘{print $1}‘ | sort | uniq

最安全的办法是重启所有上面用lsof找到的服务。也可以重启服务器。

 

建议CentOS  glibc在线更新,更新后下载离线包更新,优先升级对外开放的服务器




Linux Glibc漏洞在线更新

标签:glibc漏洞在线更新

原文地址:http://teazj.blog.51cto.com/4023651/1613722

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!