当前位置:首页 > 网络安全 2016年03月28日
关于GNU glibc函数库存在缓冲区溢出高危漏洞

关于GNU glibc函数库存在缓冲区溢出高危漏洞


CNVD收录了GNU glibc‘__nss_hostname_digits_dots()’函数存在的一个缓冲区溢出漏洞(CNVD-2015-00719,对应CVE- 2015-0235),互联网上称“Ghost”幽灵漏洞。经过对多个Linux操作系统的本地实例测试,成功利用该漏洞可以当前用户权限执行任意代码, 进而控制操作系统主机。CNVD组织成员单位开展的进一步测试分析,认为该漏洞影响虽然较为广泛,但从目前披露的利用方式看,要达到在远程渗透成功需要一 定前提(如:系统和网络服务依赖关系和攻击数据包长度),短期内出现大规模远程攻击的可能性还很小。目前GNU官方和部分Linux发行版厂商已经提供了 修复补丁。
一、漏洞情况分析

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
根 据国外漏洞研究者公开的情况进行分析,glibc库中__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞,该漏洞产生的原 因是glibc\nss\digits_dots.c 的__nss_hostname_digits_dots函数未加验证使用 strcpy (hostname, name),导致缓冲区溢出。该漏洞可通过gethostbyname*()函数在本地或者远程触发。
触发的一般场景为: 应用程序主要使用gethostbyname*()函数发起DNS请求,这个函数会将主机名称转换为ip地址,很多服务程序在调用 gethostbyname()之前,会对其做DNS有效性检查,而通常无法满足这个长度要求。因此,当提交一个超长又合法的IP地址类型的字符串给 gethostbyname()函数,就会触发一个堆溢出。
二、漏洞影响范围

虽 然2013年5月21日GNU官方已经修复了此漏洞(介于glibc-2.17及glibc-2.18之间的版本),但当时其未把相关情况作为漏洞处理, 因此相关Linux发行版并未跟进升级。目前互联网研究者测试情况汇总表明,Debian 7 (wheezy), Red Hat Enterprise Linux 6 & 7, CentOS 6&7, Ubuntu 12.04等大多数的Linux发行版都受此问题影响,对应受影响glic版本为Glibc 2.2/2.17,而Glibc 2.18未受到影响。
针 对系统服务和应用服务的远程测试情况国内外研究机构还正在进行,目前的初步结果表明绝大多数的本地SUID程序和服务程序无法利用漏洞攻击成功, 目前已知受影响的程序有clockdiff,pppd,procmail,Exim,其中Exim邮件服务器已经有可利用的远程攻击代码。

三、漏洞修复建议
GNU和各大Linux发行版厂商均已修复此漏洞,请广大用户尽快进行升级:
GNU C Library: http://www.gnu.org/software/libc/
RedHat: https://rhn.redhat.com/errata/RHSA-2015-0090.html
Ubuntu: https://launchpad.net/ubuntu/+source/eglibc
Debian: https://security-tracker.debian.org/tracker/CVE-2015-0235
参考链接:
1.https://www.qualys.com/research/security-advisories/GHOST-CVE-2015-0235.txt
2. http://www.nsfocus.net/index.php?act=alert&do=view&aid=153
3. https://rhn.redhat.com/errata/RHSA-2015-0090.html
4. https://security-tracker.debian.org/tracker/CVE-2015-0235
5. http://bobao.360.cn/news/detail/1166.html
6. http://www.cnvd.org.cn/flaw/show/CNVD-2015-00719