2015年1月28日,互联网上爆出Linuxglibc幽灵漏洞(glibcgethostbynamebufferoverflow),也有人将其称之为“20150127GHOSTgethostbyname()heapoverflowinglibc”,在CVE上的漏洞编号是CVE-2015-0235。攻击者可利用此漏洞实施远程攻击,并完全控制目标系统。 glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。glibc囊括了几乎所有的UNIX通行的标准。 国外安全研究人员发现,glibc的__nss_hostname_digits_dots()函数有缓冲区溢出漏洞。这一漏洞既可以本地利用,也可以远程利用。研究人员对漏洞进行了测试验证:向目标邮件服务器发送特别构造的邮件,从而获得了远程登录Linxu系统的shell脚本。通过这种方式可以绕过32位和64位系统上的所有现存保护机制(比如SSLR、PIE和NX)。 受glibc-2.2影响的GNUC函数最早版本是在2000年11月发布的。这一漏洞曾在2013年5月被修补(在glibc-2.17和glibc-2.18版本之间)。但由于当时并没有被认定为安全威胁,包括Debian7、RedHatEnterpriseLinux6&7、CentOS5&6&7和Ubuntu12.04在内的多数知名Linux版本在长达一年半的时间都没有修补幽灵漏洞,经测试以下版本均存在漏洞: ØRHEL(RedHatEnterpriseLinux)version5.x,6.x,7.x ØCentOSLinux&7.x ØUbuntuLinuxversion10.04,12.04LTS ØDebianLinuxversion7.x ØLinuxMintversion13.0 ØFedoraLinuxversion19yanteriores ØSSEEnterprise11yanteriores ØArchLinuxglibcversion<=2.18-1 Linuxglibc幽灵漏洞最容易的攻击入口是邮件服务器,和存在SSRF(Server-sideRequestForgery)漏洞的WEB接口。值得庆幸的是,此漏洞目前还没有公开通用的攻击代码,这也给了服务器管理员们及时安装补丁的宝贵时间。 Linuxglibc幽灵漏洞测试方法 1.Ubuntu&Debian检查ldd–version (1)Ubuntu受影响版本 Ubuntu12.04LTS:2.15-0ubuntu10.10 Ubuntu10.04LTS:2.11.1-0ubunt 1.Debiangibc受影响版本 2.Debian7LTS:2.13-38+deb7u7等 eglibc(PTS)squeeze2.11.3-4vulnerable eglibcwheezy2.13-38+deb7u6 vulnerable Debiangibc已经修复版本: squeeze(lts) 2.11.3-4+deb6u4 wheezy(security) 2.7u7 2.CentOS&RHEL检查 在centos上执行“rpm-qglibc”命令,如图1所示,显示glibc的版本信息为glibc-2.5-118.el5_10.2。 A9.png 图1centosglibc版本信息 受影响版本: CentOS5:glibc-2.5-118.el5_10.2 CentOS6:glibc-2.12-1.149.el6_6.5 CentOS7:glibc-2.17-55.el7_0.5 RHEL5:glibc-2.5-123.el5_11.1 RHEL6:glibc-2.12-1.149.el6_6.5 RHEL7:glibc-2.17-55.el7_0.5 3.POC验证测试 把下面的代码保存为ghost.c。 /* *GHOSTvulnerabilitycheck *Usage:gccghost.c-oghost&&./ghost */ #include