“Stack Clash”安全漏洞对Linux、FreeBSD、OpenBSD及其他操作系统构成了威胁。
一大批基于Unix的操作系统(包括Linux、OpenBSD和FreeBSD)爆出存在漏洞,让攻击者可以将易受攻击的计算机上的低级访问权提升到不受约束的root权限。安全专家们劝告管理员尽快安装补丁,或者采取其他保护性措施。
安全公司Qualys发现了这些漏洞,其研究人员在周一发表的一篇博文(https://blog.qualys.com/securitylabs/2017/06/19/the-stack-clash)中表示,这个安全漏洞名为Stack Clash,极有可能与其他安全漏洞结合使用,让攻击者更有效地执行恶意代码。这种本地权限升级安全漏洞还会给服务器主机提供商构成严重的威胁,原因在于只要一个客户能钻这个漏洞的空子,不可以控制在同一台服务器上运行的其他客户进程。Qualys表示,攻击者还有可能以一种直接远程执行代码的方式来利用Stack Clash。
Qualys的产品管理经理吉米·格雷厄姆(Jimmy Graham)告诉IT外媒Ars Technica:“这是一种相当简单直接的方法,在已经拥有某种用户级别访问权后获得root权限。”这种攻击的工作原理如下,引起一块计算机内存区(名为栈区,stack)与存储无关代码或数据的另一块内存区发生冲突。“这不是什么新概念,但这个特定的漏洞却绝对是新漏洞。”
受影响操作系统的开发人员如今正在发布补丁。周一上午Linux发行商Red Hat发布的安全公告表示,缓解措施可能会导致性能问题,具体表现为“/proc/meminfo中的值出现重叠”,但是它们不可能影响正常操作。开发人员可能晚些时候会发布解决这种问题的补丁。Qualys的代表告诉Ars Technica,该公司的研究人员已与FreeBSD、NetBSD、OpenBSD、Solaris以及各大Linux发行版(包括Red Hat、 SuSE、Debian及Ubuntu)的开发人员进行了合作。这位代表称,该公司的研究人员没有研究过微软或苹果的产品,但是他们确实事先联系了这两家公司,所以它们可能展开调查。这个安全漏洞对谷歌的Android移动操作系统有何影响不得而知。
操作系统栈区是一块动态的内存区,该内存区扩大还是缩小取决于在某个时候运行的应用程序和函数。如果栈区扩大幅度过大,可能会挨近其他内存区,因而让攻击者得以用邻近内存区来覆盖栈区,反之亦然。Stack Clash之所以得名,就是由于漏洞的第一步就是将栈区扩大到另一个内存区。
漏洞根本就未堵上
Stack Clash安全漏洞已逐渐引起了广泛的关注,最初是2005年安全研究人员Gaël Delalleau发布了研究结果,五年后研究人员拉法尔·沃茨祖克(Rafal Wojtczuk)发布了一个Linux安全漏洞。Linux的开发人员推出了一种保护机制,旨在防止栈区冲突,但是如今的研究表明,攻击者绕过这种保护措施来得比较容易。
Qualys开发的主要的概念证明攻击利用了被标为CVE-2017-1000364的安全漏洞。Qualys的研究人员还开发了利用Stack Clash钻不同安全漏洞空子的攻击方法,包括CVE-2017-1000365和CVE-2017-1000367这两个安全漏洞。比如说,如果结合CVE-2017-1000367――这是同样由Qualys发现的Sudo中一个最近被堵住的漏洞,本地用户就可以钻Sudo的空子,在种类广泛得多的操作系统上获得全面的root权限。迄今为止,Qualys未能让漏洞可以远程执行代码。它调查的唯一的远程应用程序是Exim邮件服务器软件,非常巧合的是,该邮件服务器软件没有漏洞供人钻。Qualys表示,自己无法排除存在这种远程代码执行漏洞的可能性。Qualys表示,一旦人们有时间防范这些安全漏洞,自己就会在晚些时候发布概念证明漏洞。
凡是运行基于Unix的操作系统的人都应该立即联系开发人员,看看有没有补丁或安全公告。最稳妥的办法就是安装补丁(如果有补丁的话);还有一个权宜之计就是,将本地用户和远程服务的hard RLIMIT STACK和RLIMIT_AS设成较低值。想了解更详细的信息,请参阅Qualys这份详细的技术公告
(https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt)和grsecurity的这篇技术分析(https://grsecurity.net/an_ancient_kernel_hole_is_not_closed.php)。