立即修复!Unix bug令各类Linux系统身陷风险

译文
移动开发 Android
研究人员已经在GNU C库(即glibc)当中发现一项高危安全漏洞,其可能导致现代Linux服务器面临远程代码执行攻击所带来之风险。API Web服务与Rails、PHP乃至Python等高人气Web框架也都因此受到影响。

【51CTO快译】研究人员已经在GNU C库(即glibc)当中发现一项高危安全漏洞,其可能导致现代Linux服务器面临远程代码执行攻击所带来之风险。API Web服务与Rails、PHP乃至Python等高人气Web框架也都因此受到影响。

 [[163088]]

此安全漏洞(CVE 2015-7547)为存在于glibc DNS客户端解析器之getaddrinfo()函数中的基于堆栈缓冲区溢出问题,且目前已经得到修复。任何使用glibc 2.9以及更新版本(2.9版本于2008年5月发布)的用户都有可能受到影响,这意味着几乎全部glibc使用者都应当尽快安装该补丁。红帽企业Linux 5采用glibc 2.5,因此其不会受到该漏洞的影响; 不过红帽企业Linux 6(使用glibc 2.12)、红帽企业Linux 7(使用glibc 2.17)、Debian squeeze(使用glibc 2.11)、Debian wheezy(使用glibc 2.13)以及Debian jessie(使用glibc 2.19)则全部受到影响。

“必须认真对待这一问题,即尽快为glibc安装修复补丁。该安全漏洞确实非常严重,”Open Crypto Audit项目主管兼安全研究员Kenneth White在自己的推文当中写道。

该漏洞最初由Ciena的Robert Holiday及其glibc项目小组所报告,时间点为2015年7月。在此之后,红帽公司首席软件工程师Carlos O’Donnell与红帽产品安全团队成员Florian Weiner对该漏洞的影响做出评估并为其准备了相应补丁。谷歌公司研究员Fermin J. Serna与Kevin Stadmeyer亦独立发现了报告中提及的该安全漏洞,并推出了一项针对该漏洞的概念验证利用方案。

“我们还没有发现任何使用这项安全漏洞的实际攻击活动,”O’Donnell指出。

其中getaddrinfo()函数通常被用于解析IP地址,在这种情况下,攻击者可以利用该漏洞通过接入恶意DNS服务器实现对应用程序及系统的控制权。利用这一安全漏洞进行攻击的可行途径多种多样,其中包括但不限于ssh、sudo以及curl,谷歌研究人员们解释称。

“使用该函数的软件可能被攻击者通过受控域名、攻击者控制之DNS服务器或者中间人攻击活动所影响,”Serna与Stadmeyer在咨询意见当中写道。

该安全漏洞会在系统从DNS服务器处接收到长度过大的UDP或者TCP响应结果时被触发,具体为超过2048字节——而在此之前,攻击者还需通过另一项响应对该堆栈进行覆盖。要触发这项缓冲区管理漏洞,目标系统必须尝试对攻击者控制下的域名进行DNS搜索。第一条接收到的响应长度为2048字节,这意味着其会占满整个缓冲区、不留任何剩余空间。由于该缓冲区无法进行复用,因此系统会建立一个新的缓冲区。但漏洞的存在导致原有缓冲区与新缓冲区同时存在,意味着整体缓冲区空间为65535.第二项响应则迫使该系统重试这项查询。第三项响应包含有2048字节的有效响应,但除此之外攻击载荷仍有63487字节空间可以使用。

该漏洞之所以会发生,是因为当该查询重新开始时,其指向的其实是拥有错误容量的缓冲区,O’Donnell解释道。“当然还有其它办法触发这个缓冲区管理漏洞,但其需要对响应计时进行深入控制,并使用轮询超时以通过两次攻击者响应实现漏洞利用(而非三次),”O’Donnell表示。

红帽公司的研究员们还得以利用该缓冲区溢出漏洞控制一项free()调用的执行,并借此控制EIP注册表。尽管他们并没有尝试进一步利用该漏洞,但此次尝试已经证明了远程控制执行的可能性。

“包络分析结果显示,攻击者可以利用受控载荷编写出格式正确的DNS响应,从而突破DNS缓存结构并借此接入到缓存背后的设备本体,”O’Donnell在其glibc项目群发邮件中写道。

该漏洞产生的危害水平取决于系统现有缓冲区溢出漏洞应对能力。远程代码执行可能“并不简单”,因为其需要绕过ASLR,谷歌公司的Serna解释称。管理员与开发人员如果无法立即安装glibc补丁,也应当马上采取临时性应对措施,从而防止潜在的攻击行为。一种可行选项在于将本地DNS解析器所能接收的响应长度限制在1024字节。

对于这种长度限制需要高度关注,因为使用DNSSEC等先进功能的系统可能需要接受超出正常长度水平的UDP响应。DNSSEC需要配合EDNSO,这项客户端功能负责通知服务器其能够接收长度超过512字节的UDP响应。因此,阻断高长度DNS响应有可能会破坏EDNSO功能。“DNS解析可能因此发生失败,或者出现显著延迟,”SAN协会的Johannes B. Ullrich提醒称。

管理员应当确保网络之上的全部系统都采用特定解析器,同时阻断一切出站DNS——除非其由已知解析器所生成。通过这种方式能够限制漏洞被利用的可能性,而且“是种不错的处理办法,”Ullrich指出。

与此同时,禁止双A与AAA查询可能也有助于缓解这种安全漏洞,而彻底禁用IPv6则无法禁用AAAA查询或者预防漏洞问题。阻断IPv6的本地或者中间解析器并不能预防此类漏洞状况,因为漏洞利用载荷仍然能够得到切实交付。“它属于触发该缓冲区管理漏洞的并发查询,”O’Donnell写道。

尽管相关补丁已经正式推出,不过这场竞赛仍在进行当中,而且最终结果取决于哪方行动更快——攻击者还是防御者。“现在捕鼠猫已经出笼,开发团队需要快速检测其应用程序是否处于风险当中:但这项工作非常困难,因为glibc以深层方式集成在各类应用当中,”Black Duck软件公司的Patrick Carey表示。修复的过程同样相当漫长,特别对于那些移动设备或者其它面向用户的应用程序而言。

需要指出的是,glibc库属于GNU项目所采用的标准C库,而且被广泛应用于各类包含Linux内核的GNU Linux及其它系统当中。这也是最近几个月来该库曝出的第二个高危安全漏洞:就在去年,研究人员们发现glibc当中存在着GHOST漏洞(CVE 2015-235)。

原文标题:Patch now! Unix bug puts Linux systems at risk

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:李英杰 来源: 51cto.com
相关推荐

2018-10-15 11:24:49

2010-02-24 10:06:03

2015-11-12 10:11:44

2022-05-16 13:34:35

漏洞SonicWall攻击者

2016-10-09 20:40:36

2013-05-09 08:57:08

2018-01-02 08:50:38

LinuxUnixOS X

2009-02-03 13:11:09

冰岛绿色IT数据中心

2023-05-19 11:33:16

2019-08-19 14:51:56

Linux 系统 数据

2017-09-27 15:56:51

苹果

2020-06-30 12:01:39

漏洞网络攻击网络安全

2010-04-28 17:46:19

2020-12-16 06:06:02

LinuxLinux Kerne存储

2010-01-05 14:45:08

FileZilla 3修复bug

2016-11-11 14:09:27

2021-09-29 08:44:19

Win10补丁漏洞

2017-08-24 11:24:10

2021-10-15 06:01:06

补丁漏洞微软

2021-09-28 08:41:08

Windows 10操作系统微软
点赞
收藏

51CTO技术栈公众号