Menu

处理器A级漏洞Meltdown(熔毁)和Spectre(幽灵)

2018-01-05 - intel, Windows提权

概述

针对Google公司的Project Zero等安全团队披露出的英特尔等处理器芯片存在非常严重的安全漏洞,发布了A级漏洞风险通告,并提醒该漏洞演化为针对云和信息基础设施的A级网络安全灾难。相关漏洞利用了芯片硬件层面执行加速机制的实现缺陷实现侧信道攻击可以间接通过CPU缓存读取系统内存数据。漏洞Meltdown(熔毁)因“融化”了硬件的安全边界而得名,漏洞Spectre(幽灵)因其手段的隐蔽性而得名。

该漏洞是一个足以动摇全球云计算基础设施根基的漏洞,其意味着任何虚拟机的租户或者入侵了成功一个虚拟机的攻击者,都可以通过相关攻击机制去获取完整的物理机的CPU缓存数据,而这种攻击对现有虚拟化节点的防御机制是无法感知的。同时由于该漏洞的机理,导致其存在各种操作系统平台的攻击方式,因此尽管这一漏洞本身只能读取数据,不能修改数据,但由于其获取的数据中有可能包括口令、证书和其他关键数据,包括能够完整Dump内存镜像,因此这个漏洞比一般性的虚拟机逃逸对云的危害更大。尽管当前全球主要云服务商均在积极应对这一漏洞的影响,但鉴于这些云服务体系的庞大而复杂,以及大面积补丁本身所面临的复杂度和风险,漏洞利用POC已经发布并验证成功,因此这次漏洞修补已经成为一场时间赛跑。在这个过程中,攻击者所获取到的数据,将会沉淀出对于关键数据和隐私泄露、登陆凭证被窃取导致连锁攻击等次生灾害

 

鉴于大量政企机构和行业进行了私有云的建设,而私有云的安全防御和补丁升级可能更弱。因此后续需要深度注意利用该漏洞在私有云中进行的攻击

同时,该漏洞对于攻击桌面节点同样有巨大的攻击力其大大提升了以浏览器等为攻击入口的攻击成功率。包括使传统的使用非超级用户来降低网络风险的安全策略失效。

当前已经公布的漏洞POC对Intel系列CPU有效,但鉴于相关执行加速机制是现代处理器的通用技术,因此所有处理器均需要分析相关风险。

 

漏洞介绍

针对英特尔处理器涉及到两种攻击方法,分别为Meltdown和Spectre,Meltdown涉及CVE编号CVE-2017-5753和CVE-2017-5715,而Spectre涉及CVE编号CVE-2017-5754。

Meltdown破坏了位于用户和操作系统之间的基本隔离,此攻击允许程序访问内存,因此其他程序以及操作系统的敏感信息会被窃取。这个漏洞“熔化”了由硬件来实现的安全边界。允许低权限用户级别的应用程序“越界”访问系统级的内存,从而造成数据泄露。

Spectre则是破坏了不同应用程序之间的隔离。问题的根源在于推测执行(speculative execution),这是一种优化技术,处理器会推测在未来有用的数据并执行计算。这种技术的目的在于提前准备好计算结果,当这些数据被需要时可立即使用。在此过程中,英特尔没有很好地将低权限的应用程序与访问内核内存分开,这意味着攻击者可以使用恶意应用程序来获取应该被隔离的私有数据。

 

影响范围

 

本次安全事件影响到的范围很广,包括:

处理器芯片:英特尔为主、ARM、AMD,对其他处理器同样可能存在相关风险;

操作系统:Windows、Linux、macOS、Android;

云服务提供商:亚马逊、微软、谷歌、腾讯云、阿里云等;

各种私有云基础设施。

桌面用户可能遭遇到结合该机理组合攻击。

 

漏洞分析

 

分支预测和乱序执行,是一种CPU优化技术,CPU会执行一些可能在将来会执行的任务。当分支指令发出之后,无相关优化技术的处理器,在未收到正确的反馈信息之前,是不会做任何处理;而具有优化技术能力的新型处理器,可以预测即将执行的指令,会预先处理一些指令所需的数据,例如将下一条指令所需要访问的内存提前加载到CPU缓存中,这就避免了执行具体指令时再去读内存,从而加快了CPU的执行速度。

CPU缓存的这个过程对于用户是不可访问的,只有将具体的数据放到CPU的寄存器中用户才可操作,同时用户态程序也没有权限访问内核内存中的数据,因此CPU采用这种逻辑是没有问题的,但是如果有方法可以让我们得到CPU缓存中的数据,那么这种逻辑就存在缺陷。

 

边信道攻击缓存

CPU缓存通常在较小和较快的内部存储中缓存常用数据,从而隐藏慢速内存访问的延迟,缓存侧信道攻击正是利用CPU缓存与系统内存的读取的时间差异,从而变相猜测出CPU缓存中的数据,结合前边的缓存缺陷部分内容,产生如下的结果:

 

简单来说,就是CPU缓存中的数据,在用户态和内核态都是无法正常访问的,除非当CPU缓存中的数据保存到寄存器中时,会被正常的读取;除此之外,是可以通过边信道的方式读取CPU的缓存的。

基于如上介绍的漏洞原理信息,通过CPU缓存验证缺陷,并利用边信道攻击技术可猜测CPU缓存中的数据,继而访问主机的完整内存数据,造成用户敏感信息泄露。

根据《Spectre Attacks: Exploiting Speculative Execution∗》报告中包含的PoC代码,编译后生成可执行文件,在使用Intel处理器的Windows 7 64位操作系统实验环境下进行测试。

具体验证细节如下:

► 在内存中申请一段空间,写入如下字符串:

What the FUCK program !

► 利用这个机制获取数据(linux)

► 利用这个机制获取数据(windows)

(gif动图传不上去,算了,懒得登录服务器传了,自己脑补你输入密码被抓到的动图)

检测与防御方法

Windows用户,通过使用微软公司发布的检测PowerShell脚本,能够判断Windows系统是否受漏洞影响。

首先,需要安装相应的PowerShell模块,对应命令:PS> Install-Module SpeculationControl

其次,需要调用相应脚本,对应命令:PS> Get-SpeculationControlSettings

其中,开启的保护会显示为True,未开启的保护则会显示为False,如下图所示:

(PS:微软漏洞检测工具运行情况)

 

应对建议

 

地址

http://bbs.antiy.cn/forum.php?mod=viewthread&tid=77670&extra=page%3D1

https://spectreattack.com/spectre.pdf

对本漏洞的有效应对核心是大规模的有效的补丁工作,包括提供热补丁。

鉴于该漏洞可以获取完整的内存内容,所以建议相关云设施在完成补丁修复后,应提醒用户修改登陆口令并更新证书。

目前Linux内核开发人员已经发布了针对Meltdown攻击方式的补丁,详情见:

https://lwn.net/Articles/738975/

Google部分产品已经针对这些攻击方式做出了修补,但是在部分情况下还需要用户采取额外的步骤确保产品受保护,针对安卓也将在1月5日推出补丁更新以限制对ARM处理器的所有已知变种攻击。详情见:

https://support.google.com/faqs/answer/7622138

微软发布了几个更新来缓解这些漏洞,建议用户在安装操作系统或固件更新之前,请确认防病毒应用程序对其兼容,并且建议用户应用所有可用的Windows操作系统更新,包括2018年1月的Windows安全更新。详情见:

https://support.microsoft.com/en-us/help/4073119/windows-client-guidance-for-it-pros-to-protect-against-speculative-exe

其他厂商也将要或已部分推出针对这些攻击方式的补丁,英特尔也提出正在与包括AMD、ARM以及各大操作系统厂商进行合作,以制定行业规范方法,及时、建设性的解决这个安全问题。

目前部分厂商已针对此漏洞做出反馈:

VMware:

https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html

AMD:

https://www.amd.com/en/corporate/speculative-execution

Red Hat:

https://access.redhat.com/security/vulnerabilities/speculativeexecution

Nvidia:

https://forums.geforce.com/default/topic/1033210/nvidias-response-to-speculative-side-channels-cve-2017-5753-cve-2017-5715-and-cve-2017-5754/

Xen:

https://xenbits.xen.org/xsa/advisory-254.html

ARM:

https://developer.arm.com/support/security-update

Amazon:

https://aws.amazon.com/de/security/security-bulletins/AWS-2018-013/

Mozilla:

Mitigations landing for new class of timing attack

 

附录:参考资料

[1]《Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign》

https://www.theregister.co.uk/2018/01/02/intel_cpu_design_flaw/

[2]《Google: Almost All CPUs Since 1995 Vulnerable To “Meltdown” And “Spectre” Flaws》

https://www.bleepingcomputer.com/news/security/google-almost-all-cpus-since-1995-vulnerable-to-meltdown-and-spectre-flaws/

[3]《Meltdown and Spectre》

https://spectreattack.com/

[4]GitHub上用户ID为turbo提供的PoC代码下载地址

https://github.com/turbo/KPTI-PoC-Collection

[5]微软提供的检测方法

https://support.microsoft.com/en-us/help/4073119/windows-client-guidance-for-it-pros-to-protect-against-speculative-exe

[6]分支预测

https://baike.baidu.com/item/%E5%88%86%E6%94%AF%E9%A2%84%E6%B5%8B/9252782?fr=aladdin

[7]乱序执行

https://baike.baidu.com/item/%E4%B9%B1%E5%BA%8F%E6%89%A7%E8%A1%8C/4944129