Glibc(GNU C库)中发现了一个严重的漏洞,该漏洞能够影响所有追溯至2000年的Linux系统。攻击者可以利用该漏洞来执行代码并远程控制Linux机器。
该漏洞源于glibc的函数__nss_hostname_digits_dots()的基于堆的缓冲区溢出。这一特殊的函数由_gethostbyname函数调用。
“远程攻击者能够调用这些函数的任意一个,在获得运行该程序的用户的许可的情况下,能够利用该漏洞执行任意代码”,Linux发行商Red Hat的公告说。该漏洞被命名为CVE-2015-0235,由于其与_gethostbyname函数的关联被戏称为GHOST。Qualys公司的研究人员发现了该漏洞,认为第一个被感染的glibc版本是2000年11月发布的Linux系统的glibc2.2。
根据Qualys,2013年5月21日(界于glibc-2.17和glibc-2.18发布之间),该问题的缓解方案被发布。
“不幸的是,它没有被视为一个安全威胁;其结果是,最稳定的和长期发行的操作系统遭到了感染,包括Debian 7(wheezy)、Red Hat Enterprise Linux 6和7、CentOS 6和7、Ubuntu12.04等”,Qualys公司的公告这样说。
各个Linux发行版将会发布补丁;RedHat发布了Red Hat Enterprise Linux v.5服务器的更新。Novell公司列出了被该漏洞感染的SUSE Linux Enterprise Server的列表。Debian已经发布了解决该漏洞的软件更新。
“该漏洞随处可见,因此情况很紧迫。该漏洞已经感染glibc很长一段时间了。最近它被修复,但是没有被视为一个安全问题,所以较新的版本应该没问题”,Red Hat安全响应团队的成员Josh Bressers这样说,“从威胁层面来看,该漏洞针对使用该函数的系统”。
不像过去的互联网范围的bug(如Bash),修补glibc未必是件苦差事。“在这种情况下,你只要应用glibc更新,并重新启动任何有漏洞的服务”,Bressers说,“它不像Shellshock那样令人迷惑”。
Qualys公司不仅在公告中分享了极为深入的GHOST技术信息,还介绍了Exim SMTP邮件服务器的漏洞利用。该公告展示了如何绕过NX(即No-eXecute,不可执行)保护方案以及glibc malloc的硬化。
除了2013年的补丁,Qualys公司还介绍了其它能够缓解该漏洞影响的因素,包括以下事实:由于IPv6和较新的应用使用不同的函数调用getaddrinfo(),gethostbyname函数已经过时了。虽然该漏洞也可本地利用,但是这种情况的可能性也大大降低了,原因是:只有在初步调用失败,二次调用成功的情况下,许多程序才会依靠gethostbyname实现溢出。公告说这是“不可能的”,所以那些程序是安全的。
Qualys说,远程漏洞利用也有所缓解。例如,服务器使用gethostbyname来执行全周期反向DNS检查。“这些程序一般都是安全的,因为传递到gethostbyname()的主机名通常会由DNS软件预先验证”,该公告说。
“目前看来,这并不是一个很严重的远程问题”,Bressers说。
虽然该漏洞可能自2000年以来一直处于休眠状态,但是我们无法确定罪犯或政府资助的黑客是否在利用该漏洞。该漏洞的信息已经公开,一旦合法的安全研究人员和黑客们开始进行研究,谁也没办法预测将会发生什么。在Bash的案例中,没过多久就出现了其他的安全问题。
安天公益翻译(非官方中文译本):
GHOST glibc远程代码执行漏洞影响所有的Linux系统[非官方中文译文•安天技术公.pdf
(358.63 KB, 下载次数: 133)