综述:
前段时间通用cpu处理器内核被爆出多个安全漏洞,这些漏洞允许用户绕过芯片及系统的安全设置去读取任意内核中的数据。由于是cpu层级的漏洞,因此这些漏洞理论上影响所有使用通用cpu的操作系统和软件。
影响范围:
intel cpu
amd cpu
arm cpu
cve编号:
cve-2017-5754
cve-2017-5753
cve-2017-5715
漏洞信息:
现代通用处理器(cpu)的运作机制中存在两个用于加速执行的特性,推测执行(speculative execution)和间接分支预测(indirect branch prediction)。推测性执行是一种优化技术,cpu会基于猜测或概率的角度,在当前的指令或分支还未执行完成前就开始执行可能会被执行的指令或分支,如果猜测正确,则直接继续执行,以此加速cpu的执行进度。如果猜测失败,则cpu取消该操作进行回滚,回滚的过程并不影响cpu的处理速度。这种预测执行的方式能够有效提高cpu的执行速度,但是也带来了安全风险。尽管cpu架构状态会被快速回滚,但是tlb和缓存状态并不会很快回滚,攻击者通过寻找或构建一些指令就可以在cpu回滚的时间窗口里进行一系列的越权访问,造成内核中的数据泄漏。目前类似的攻击方式有三种:
边界检查绕过(cve-2017-5753)——通过污染分支预测,来绕过kernel或hypervisor的内存对象边界检测。比如,攻击者可以对高权级的代码段,或虚拟环境中hypercall,通过构造的恶意代码来触发有越界的数据下标,造成越界访问。
分支目标注入(cve-2017-5715)——污染分支预测。抽象模型比较好的代码往往带有间接函数指针调用的情况,cpu在处理时需要会进行必要的内存访问,这个过程有点慢,所以cpu会预测分支。攻击者可以通过类似的rop的方式来进行信息泄露。
流氓数据加载(cve-2017-5754)——部分cpu上,为了速度并不是每次都对指令作权限检查的,检查的条件存在一定的缺陷。
其中cve-2017-5754漏洞可以用来破坏用户程序和操作系统之间的基本隔离,允许攻击者未授权访问其他程序和操作系统的内存,获取其他程序和操作系统的敏感信息,被称为meltdown漏洞。
cve-2017-5715和cve-2017-5753可以用来破坏不同应用程序之间的隔离,允许攻击者读取其他程序的敏感数据,被称为spectre漏洞。
漏洞危害:
利用meltdown漏洞攻击者可以获取操作系统底层核心数据。在虚拟化环境下,可以绕过安全限制读取其他操作系统的信息。
利用spectre漏洞,攻击者可以获取其他程序的敏感信息,例如通过浏览器脚本获取用户的cookie信息等。
缓解因素:
由于漏洞是cpu架构层级,没有临时的措施可以降低漏洞的风险。不过仍然有以下的信息可以参考:
amd的cpu不受meltdown漏洞的影响。
相关漏洞目前只适用于越权数据读取,还不能用来直接执行指令。因此漏洞暂不具备被利用来进行大规模自主传播的风险。
漏洞目前还属于一种概念性的攻击方式,攻击只在特定的实验环境中被证实,实际环境中还未发现任何与之有关的攻击。
解决办法:
目前多数的操作系统厂商、虚拟化软件厂商及部分软件厂商已经针对这些漏洞发布了补丁程序,用户只需及时安装相应的补丁程序即可。
需要特别提醒的是,那些为用户提供虚拟主机服务的管理员,应该尽快为虚拟化软件安装相应的补丁程序并同时通知虚拟主机用户安装相应系统的补丁程序。
参考信息:
漏洞参考信息:
相关安全公告:
cpu厂商公告
intel公告
amd公告
arm公告
虚拟化及云平台厂商公告
vmware公告
xen公告
亚马逊公告
google公告
系统及软件厂商公告
微软安全公告
red hat安全公告
mozilla firefox浏览器
google chrome浏览器