什么是Stack Clash,我该怎么办呢?
我听说过一个名为Stack Clash的新漏洞,它显然会影响多个类Unix系统(不仅仅是Linux,还有BSD,Solaris)。
- 它是什么? 多操作系统错误是如何发生的?
- 我该如何保护我的系统?
Stack Clash是一种基于相当古老技术的漏洞。 进程使用的内存分为两个区域 – 堆栈和堆 。 人们通常认为堆栈向下生长,堆积向上生长。 当两者增长到足以与另一个发生冲突时会发生什么? 更一般地说,当堆栈增长到足以侵入不相关的内存空间时会发生什么? 最初的漏洞已有12年历史,Linux内核开发人员通过使用保护页面临时修复了它。 然而,尽管有警卫页面,Qualys的研究人员仍设法利用这一点。
Ars Technica报道 :
Stack Clash漏洞慢慢获得了广泛的认知,首先是2005年安全研究员GaëlDelalleau的调查结果,五年后研究员Rafal Wojtczuk 发布了Linux漏洞 。 Linux开发人员引入了旨在防止堆栈冲突的保护措施 ,但今天的研究表明,攻击者可以相对容易地绕过这一措施。
Qualys开发的主要概念validation攻击利用了一个索引为CVE-2017-1000364的漏洞。 Qualys的研究人员还开发了使用Stack Clash来利用单独漏洞的攻击,包括CVE-2017-1000365和CVE-2017-1000367。 例如,当与CVE-2017-1000367结合使用时,Qualys也发现了Sudo最近发现的一个缺陷,本地用户可以利用Sudo在更广泛的操作系统上获得完全root权限。 到目前为止,Qualys无法使攻击远程执行代码。 他们调查的唯一远程应用程序是Exim邮件服务器,巧合的是它是不可开发的。 Qualys表示不能排除存在这种远程代码执行漏洞的可能性。 Qualys表示,一旦人们有时间防范漏洞,它将在稍后发布概念validation漏洞利用程序。
[…] Qualys的详细技术咨询以及grsecurity的技术分析提供了更多信息。
引用LWN关于2010年原始修复的文章 :
由于Linux不会将进程堆栈和堆页分开,因此可以将堆栈页超出到相邻的堆页中。 这意味着足够深的堆栈(例如来自递归调用)可能最终使用堆中的内存。 可以写入该堆页面的程序(例如X客户端)可以操纵其中一个调用的返回地址以跳转到其选择的位置。 这意味着客户端可以使服务器运行其选择任意代码执行的代码 – 可以利用它来获得root权限。
以上描述适用于各种类Unix的内核。
虽然Ars Technica确实注意到Qualys报告中提到的临时解决方法(“将本地用户和远程服务的硬RLIMIT STACK和RLIMIT_AS设置为低值”),但应该注意的是, 这并不一定能防止这种攻击 。 目前唯一安全的方法是升级。 根据grsecurity分析:
应该清楚的是,仅内核尝试解决这个问题必然总是不完整的,因为真正的问题在于缺乏堆栈探测。 由于替代的真正解决方案取决于重建所有用户区,这可能是可预见的未来唯一可行的解决方案。
我们现在可以做的最好的事情是将内核升级到修补版本。
2010漏洞使用了X服务器,这个使用了sudo,下一个可以是多个用户态程序中的任何一个,在某些时候,它们可以在提升的权限下运行。
Qualys尚未发布任何针对漏洞利用的概念validation代码(他们计划在以后这样做)。
有多个与CVE-2017-1000364相关的Ubuntu安全通知:
- USN-3324-1 (更新)
- USN-3325-1 – Raspberry Pi 2(更新)
- USN-3326-1
- USN-3327-1 – Raspberry Pi 2
- USN-3328-1
- USN-3329-1
- USN-3330-1 – Qualcomm Snapdragon
- USN-3331-1 – AWS
- USN-3332-1 – Raspberry Pi 2
- USN-3333-1 – HWE
- USN-3334-1 – Xenial HWE
- USN-3335-1
- USN-3335-2 – 12.04 ESM
- USN-3338-1 – 12.04 ESM
另请注意, CVE跟踪器将多个发布/内核组合列为待定修复。
通常,最简单的解决方法是尽快将系统更新到最新的内核包。
来自USN的相关内核版本( for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'
中使用for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'
):
- Ubuntu 17.04:
- linux-image-4.10.0-24-lowlatency 4.10.0-24.28
- linux-image-generic-lpae 4.10.0.24.26
- linux-image-generic 4.10.0.24.26
- linux-image-4.10.0-24-generic-lpae 4.10.0-24.28
- linux-image-4.10.0-24-generic 4.10.0-24.28
- linux-image-lowlatency 4.10.0.24.26
- Ubuntu 17.04:
- linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
- linux-image-raspi2 4.10.0.1008.10
- Ubuntu 16.10:
- linux-image-powerpc-smp 4.8.0.56.69
- linux-image-powerpc-e500mc 4.8.0.56.69
- linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
- linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
- linux-image-4.8.0-56-lowlatency 4.8.0-56.61
- linux-image-generic 4.8.0.56.69
- linux-image-4.8.0-56-generic 4.8.0-56.61
- linux-image-powerpc64-emb 4.8.0.56.69
- linux-image-virtual 4.8.0.56.69
- linux-image-powerpc64-smp 4.8.0.56.69
- linux-image-4.8.0-56-generic-lpae 4.8.0-56.61
- linux-image-generic-lpae 4.8.0.56.69
- linux-image-lowlatency 4.8.0.56.69
- linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
- Ubuntu 16.10:
- linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
- linux-image-raspi2 4.8.0.1040.44
- Ubuntu 16.04 LTS:
- linux-image-powerpc64-smp- lts -utopic 4.4.0.81.87
- linux-image-generic- lts – wily 4.4.0.81.87
- linux-image-generic- lts -utopic 4.4.0.81.87
- linux-image-4.4.0-81-generic-lpae 4.4.0-81.104
- linux-image-powerpc64-emb- lts -vivid 4.4.0.81.87
- linux-image-powerpc-e500mc 4.4.0.81.87
- linux-image-generic-lpae- lts -xenial 4.4.0.81.87
- linux-image-generic-lpae- lts -utopic 4.4.0.81.87
- linux-image-powerpc-e500mc- lts -xenial 4.4.0.81.87
- linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
- linux-image-powerpc-e500mc- lts – wily 4.4.0.81.87
- linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
- linux-image-generic-lpae-lts- wily 4.4.0.81.87
- linux-image-virtual- lts -vivid 4.4.0.81.87
- linux-image-virtual- lts -utopic 4.4.0.81.87
- linux-image-virtual 4.4.0.81.87
- linux-image-powerpc64-emb-lts- wily 4.4.0.81.87
- linux-image-lowlatency- lts -vivid 4.4.0.81.87
- linux-image-powerpc-e500mc- lts -vivid 4.4.0.81.87
- linux-image-powerpc64-emb 4.4.0.81.87
- linux-image-powerpc-smp- lts -xenial 4.4.0.81.87
- linux-image-4.4.0-81-generic 4.4.0-81.104
- linux-image-powerpc64-smp- lts -vivid 4.4.0.81.87
- linux-image-lowlatency-lts- wily 4.4.0.81.87
- linux-image-4.4.0-81-lowlatency 4.4.0-81.104
- linux-image-generic 4.4.0.81.87
- linux-image-lowlatency- lts -xenial 4.4.0.81.87
- linux-image-powerpc64-smp- lts -xenial 4.4.0.81.87
- linux-image-powerpc64-emb- lts -utopic 4.4.0.81.87
- linux-image-generic- lts -xenial 4.4.0.81.87
- linux-image-generic- lts -vivid 4.4.0.81.87
- linux-image-powerpc-e500mc- lts -utopic 4.4.0.81.87
- linux-image-powerpc-smp 4.4.0.81.87
- linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
- linux-image-generic-lpae- lts -vivid 4.4.0.81.87
- linux-image-generic-lpae 4.4.0.81.87
- linux-image-powerpc64-smp-lts- wily 4.4.0.81.87
- linux-image-powerpc64-emb- lts -xenial 4.4.0.81.87
- linux-image-powerpc-smp- lts – wily 4.4.0.81.87
- linux-image-virtual- lts – wily 4.4.0.81.87
- linux-image-powerpc64-smp 4.4.0.81.87
- linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
- linux-image-powerpc-smp- lts -utopic 4.4.0.81.87
- linux-image-powerpc-smp- lts -vivid 4.4.0.81.87
- linux-image-lowlatency 4.4.0.81.87
- linux-image-virtual- lts -xenial 4.4.0.81.87
- linux-image-lowlatency- lts -utopic 4.4.0.81.87
- Ubuntu 16.04 LTS:
- linux-image-4.4.0-1016-gke 4.4.0-1016.16
- Ubuntu 16.04 LTS:
- linux-image-snapdragon 4.4.0.1061.54
- linux-image-4.4.0-1061-snapdragon 4.4.0-1061.66
- Ubuntu 16.04 LTS:
- linux-image-4.4.0-1020-aws 4.4.0-1020.29
- Ubuntu 16.04 LTS:
- linux-image-raspi2 4.4.0.1059.60
- linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
- Ubuntu 16.04 LTS:
- linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61~16.04.1
- linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61~16.04.1
- linux-image-4.8.0-56-lowlatency 4.8.0-56.61~16.04.1
- linux-image-4.8.0-56-generic 4.8.0-56.61~16.04.1
- linux-image-generic-hwe-16.04 4.8.0.56.27
- linux-image-lowlatency-hwe-16.04 4.8.0.56.27
- linux-image-4.8.0-56-generic-lpae 4.8.0-56.61~16.04.1
- linux-image-virtual-hwe-16.04 4.8.0.56.27
- linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
- linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61~16.04.1
- Ubuntu 14.04 LTS:
- linux-image-powerpc-smp- lts -xenial 4.4.0.81.66
- linux-image-lowlatency- lts -xenial 4.4.0.81.66
- linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-lowlatency 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-generic-lpae 4.4.0-81.104~14.04.1
- linux-image-generic-lpae- lts -xenial 4.4.0.81.66
- linux-image-powerpc64-smp- lts -xenial 4.4.0.81.66
- linux-image-4.4.0-81-generic 4.4.0-81.104~14.04.1
- linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104~14.04.1
- linux-image-generic- lts -xenial 4.4.0.81.66
- linux-image-powerpc64-emb- lts -xenial 4.4.0.81.66
- linux-image-powerpc-e500mc- lts -xenial 4.4.0.81.66
- linux-image-virtual- lts -xenial 4.4.0.81.66
- linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104~14.04.1
- Ubuntu 14.04 LTS:
- linux-image-powerpc-e500mc 3.13.0.121.131
- linux-image-lowlatency-pae 3.13.0.121.131
- linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
- linux-image-generic-pae 3.13.0.121.131
- linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
- linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
- linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
- linux-image-3.13.0-121-generic-lpae 3.13.0-121.170
- linux-image-generic- lts -quantal 3.13.0.121.131
- linux-image-virtual 3.13.0.121.131
- linux-image-powerpc-e500 3.13.0.121.131
- linux-image-generic- lts – trusty 3.13.0.121.131
- linux-image-3.13.0-121-generic 3.13.0-121.170
- linux-image-omap 3.13.0.121.131
- linux-image-powerpc64-emb 3.13.0.121.131
- linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
- linux-image-generic 3.13.0.121.131
- linux-image-highbank 3.13.0.121.131
- linux-image-generic- lts – saucy 3.13.0.121.131
- linux-image-powerpc-smp 3.13.0.121.131
- linux-image-3.13.0-121-lowlatency 3.13.0-121.170
- linux-image-generic-lpae-lts- saucy 3.13.0.121.131
- linux-image-generic- lts – raring 3.13.0.121.131
- linux-image-powerpc64-smp 3.13.0.121.131
- linux-image-generic-lpae-lts- trusty 3.13.0.121.131
- linux-image-generic-lpae 3.13.0.121.131
- linux-image-lowlatency 3.13.0.121.131
- Ubuntu 12.04 ESM:
- linux-image-powerpc-smp 3.2.0.128.142
- linux-image-3.2.0-128-virtual 3.2.0-128.173
- linux-image-3.2.0-128-generic-pae 3.2.0-128.173
- linux-image-generic 3.2.0.128.142
- linux-image-generic-pae 3.2.0.128.142
- linux-image-highbank 3.2.0.128.142
- linux-image-3.2.0-128-highbank 3.2.0-128.173
- linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
- linux-image-virtual 3.2.0.128.142
- linux-image-powerpc64-smp 3.2.0.128.142
- linux-image-3.2.0-128-omap 3.2.0-128.173
- linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
- linux-image-omap 3.2.0.128.142
- linux-image-3.2.0-128-generic 3.2.0-128.173
- Ubuntu 12.04 LTS:
- linux-image-3.13.0-121-generic 3.13.0-121.170~precision1
- linux-image-generic-lpae-lts- trusty 3.13.0.121.112
- linux-image-generic- lts – trusty 3.13.0.121.112
- linux-image-3.13.0-121-generic-lpae 3.13.0-121.170~precision1
须藤
2017年5月30日起,上述sudo bug由USN-3304-1涵盖:
- Ubuntu 17.04:
- sudo-ldap 1.8.19p1-1ubuntu1.1
- sudo 1.8.19p1-1ubuntu1.1
- Ubuntu 16.10:
- sudo-ldap 1.8.16-0ubuntu3.2
- sudo 1.8.16-0ubuntu3.2
- Ubuntu 16.04 LTS:
- sudo-ldap 1.8.16-0ubuntu1.4
- sudo 1.8.16-0ubuntu1.4
- Ubuntu 14.04 LTS:
- sudo-ldap 1.8.9p5-1ubuntu1.4
- sudo 1.8.9p5-1ubuntu1.4
多操作系统错误是如何发生的?
要具体解决这部分问题:
出现此问题是因为堆(向上增长)和堆栈(向下增长)使用共享地址空间。
这种设计在许多系统中都很常见,因此许多系统容易受到同一类漏洞的攻击。