腾讯御安全深度解读影响全球的CPU漏洞:熔断与幽灵

【关键词:腾讯御安全,应用漏洞,应用安全】

 

 

一、漏洞背景和影响 

1月4日,国外安全研究机构公布了两组CPU漏洞:
Meltdown(熔断),对应漏洞CVE-2017-5754;
Spectre(幽灵),对应漏洞CVE-2017-5753/CVE-2017-5715。

由于漏洞严重而且影响范围广泛,引起了全球的关注。利用Meltdown漏洞,低权限用户可以访问内核的内容,获取本地操作系统底层的信息;当用户通过浏览器访问了包含Spectre恶意利用程序的网站时,用户的如帐号,密码,邮箱等个人隐私信息可能会被泄漏;在云服务场景中,利用Spectre可以突破用户间的隔离,窃取其他用户的数据。Meltdown漏洞影响几乎所有的Intel CPU和部分ARM CPU,而Spectre则影响所有的Intel CPU和AMD CPU,以及主流的ARM CPU。从个人电脑、服务器、云计算机服务器到移动端的智能手机,都受到这两组硬件漏洞的影响。

这两组漏洞来源于芯片厂商为了提高CPU性能而引入的新特性。现代CPU为了提高处理性能,会采用乱序执行(Out-of-Order Execution)和预测执行(SpeculativePrediction)。乱序执行是指CPU并不是严格按照指令的顺序串行执行,而是根据相关性对指令进行分组并行执行,最后汇总处理各组指令执行的结果。预测执行是CPU根据当前掌握的信息预测某个条件判断的结果,然后选择对应的分支提前执行。乱序执行和预测执行在遇到异常或发现分支预测错误时,CPU会丢弃之前执行的结果,将 CPU的状态恢复到乱序执行或预测执行前的正确状态,然后选择对应正确的指令继续执行。这种异常处理机制保证了程序能够正确的执行,但是问题在于,CPU恢复状态时并不会恢复CPU缓存的内容,而这两组漏洞正是利用了这一设计上的缺陷进行测信道攻击。

二、漏洞原理解析 

1、Meltdown漏洞原理

乱序执行可以简单的分为三个阶段,如下图所示:

每个阶段执行的操作如下:

1)获取指令,解码后存放到执行缓冲区Reservations Stations
2)乱序执行指令,结果保存在一个结果序列中
3)退休期Retired Circle,重新排列结果序列及安全检查(如地址访问的权限检查),提交结果到寄存器

结合Meltdown利用的代码片段来看:

; rcx = kernel address

; rbx = probe array

1   mov al, byte [rcx]

2   shl rax, 0xc

3   mov rbx, qword [rbx +rax]

Meltdown漏洞的利用过程有4个步骤:

1)        指令获取解码
2)        乱序执行3条指令,指令2和指令3要等指令1中的读取内存地址的内容完成后才开始执行,指令3会将要访问的rbx数组元素所在的页加载到CPU Cache中。
3)        对2)的结果进行重新排列,对1-3条指令进行安全检测,发现访问违例,会丢弃当前执行的所有结果,恢复CPU状态到乱序执行之前的状态,但是并不会恢复CPU Cache的状态
4)        通过缓存测信道攻击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出内核地址的内容

2、Spectre漏洞原理

与Meltdown类似,Spectre的原理是,当CPU发现分支预测错误时会丢弃分支执行的结果,恢复CPU的状态,但是不会恢复CPU Cache的状态,利用这一点可以突破进程间的访问限制(如浏览器沙箱)获取其他进程的数据。

Spectre的利用代码片段:

if (x  < array1_size) {

y =  array2[array1[x] *256];

// do  something using Ythat is

//  observable whenspeculatively executed

}

具体攻击过程可以分为三个阶段:

1)训练CPU的分支预测单元使其在运行利用代码时会进行特定的预测执行
2)预测执行使得CPU将要访问的地址的内容读取到CPUCache中
3) 通过缓存测信道攻击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出地址的内容。

三、漏洞验证  

目前开源社区github已经放出来了漏洞的验证代码(PoC),如下:

https://github.com/Eugnis/spectre-attack

https://github.com/feruxmax/meltdown

https://github.com/gkaindl/meltdown-poc

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

经过我们和其他安全研究人员实际验证,漏洞可在Windows、Linux、Mac-OS等操作系统下,成功读取任意指定内存地址的内容,如下图所示:

Windows:

Ubuntu 16.04:

此外,有安全研究人员验证了可以通过漏洞获取到用户正在输入的密码,不过暂未放出相关代码。如下图所示:

四、漏洞修复进展 

针对这两组漏洞,各家芯片厂商,操作系统厂商,浏览器厂商,以及云服务厂商,都积极采取措施,发布安全公告,并及时推出缓解措施和修复补丁。

1、芯片厂商

1.1 Intel

Intel已经确认自身CPU中存在相关问题,并正与包括AMD、ARM和多家操作系统厂商在内的许多其他科技公司紧密合作,制定行业范围的方法,以便及时和建设性地解决这些漏洞。另外Intel认为有些媒体里面的报道并不准确,这些问题不仅仅Intel,其他厂商的CPU中也存在相关问题。这些问题的修复对性能的影响和具体的工作场景相关,对一般用户而言,影响并不显著,而且随着时间的推移这些影响都会得到缓解。

Intel已经提供软件和固件更新以解决这些漏洞,预计下周末之前会修复最近5年中90%的CPU。Intel的安全公告如下:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
https://newsroom.intel.com/news-releases/intel-issues-updates-protect-systems-security-exploits/
https://www.intel.com/content/www/us/en/architecture-and-technology/facts-about-side-channel-analysis-and-intel-products.html

1.2 ARM

ARM确认大部分处理器不受漏洞影响,但给出了一个受影响的处理器列表。ARM认为,利用这些漏洞进行攻击需要在本地运行恶意软件,用户及时更新软件和不点击来历不明的链接会降低攻击风险。针对linux上的程序,ARM提供了新编译器,可用新编译器重新编译。另外发布了Linux ARM内核补丁,用于修补漏洞,相关页面如下:
https://developer.arm.com/support/security-update/download-the-whitepaper
https://developer.arm.com/support/security-update

1.3 AMD

AMD针对每个漏洞做了回复,第一个漏洞由软件、操作系统厂商发布补丁解决,性能影响非常轻微,其他两个漏洞由于AMD CPU特殊的架构,都不受影响。具体如下:
https://www.amd.com/en/corporate/speculative-execution

2、操作系统

2.1 Windows

微软已经发布了安全通告,修复了IE、Edge、Windows内核中相关问题,并针对普通用户、服务器用户、云用户各自给出了防护指南。
微软普通用户:

https://support.microsoft.com/help/4073119
服务器用户:
https://support.microsoft.com/help/4072698
云用户:
https://support.microsoft.com/help/4073235
微软安全通告:
https://support.microsoft.com/en-us/help/4073235/cloud-protections-speculative-execution-side-channel-vulnerabilities

2.2 Linux

Linux内核开发者ThomasGleixner在2017年12月在Linux内核邮件列表中就新的KAISER隔离补丁发布了说明。目前有人怀疑这批补丁可能正是为了解决Linux系统当中的Metldown与Spectre漏洞。具体如下:
https://lkml.org/lkml/2017/12/4/709

2.3 RedHat

红帽公司已经发布一项建议,其中列出受到影响的产品及其当前状态。建议内容表明:对于正在运行受影响版本产品的红帽客户,强烈建议用户尽快根据指导清单进行更新。所有受影响产品都应安装修复补丁,借以缓解CVE-2017-5753 (变种1)与CVE-2017-5754(变种3)漏洞。CVE-2017-5715(变种2)可通过本地以及虚拟访客边界两种方式被加以利用。具体如下:
https://access.redhat.com/security/vulnerabilities/speculativeexecution?sc_cid=701f2000000tsLNAAY&

2.4 安卓

Android团队于2018年1月更新了安全通告:CVE-2017-5715、CVE-2017-5753以及CVE-2017-5754为已经得到公开披露的一系列与处理器内推测执行相关的漏洞。Android尚未发现任何在基于ARM的Android设备之上重现上述漏洞以进行的未授权信息泄露行为。为了提供额外的保护措施,本公告当中包含的CVE-2017-13218更新减少了对高精度定时器的访问,旨在限制旁路攻击(例如CVE-2017-5715、CVE-2017-5753以及CVE-2017-5754)所有已知变种对ARM处理器的影响。具体如下:
https://source.android.com/security/bulletin/2018-01-01

3、浏览器

利用漏洞在浏览器中进行攻击依赖于新特性SharedArrayBuffer和用于高精度时间计算的函数performance.now。各个浏览器表示都采取了以下两个缓解措施:

移除浏览器中可用于攻击的SharedArrayBuffer特性

降低用于高精度时间计算的函数performance.now的精确性

加上这两个缓解措施后,JS版本的漏洞PoC代码将无法触发:

3.1 Microsoft Edge

微软已经发布了浏览器补丁:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002

3.2 FireFox

Mozilla从FireFox 57版本开始采取了这两个缓解措施:
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/

3.3 Chrome

谷歌从Chrome 64版本开始采取了这两个缓解措施:
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html

4、云服务厂商

4.1 Amazon

Amazon方面已经发布一项安全公告,指出:此项安全漏洞广泛存在于过去20年推出的英特尔、AMD以及ARM等各类现代处理器架构当中,影响范围涵盖服务器、台式机以及移动设备。Amazon EC2体系中除极少数实例外,其余皆受到严格保护。剩余部分的修复工作将在接下来数小时内完成,并附有相关实例维护通知。虽然AWS所执行的更新能够切实保护底层基础设施,但为了充分解决此次问题,客户还应对实例中的操作系统进行修复。目前Amazon Linux更新已经开始发布,具体如下:
https://aws.amazon.com/security/security-bulletins/AWS-2018-013/

4.2 阿里云

为解决处理器芯片的安全问题,阿里云将在北京时间2018年1月12日凌晨1点进行虚拟化底层的升级更新。届时,阿里云将采用热升级的方式,绝大多数客户不会受到影响。但个别客户可能需要手动重启,阿里云建议客户提前准备运营预案及数据备份。

4.3 腾讯云

腾讯云将于北京时间2018年1月10日凌晨01:00-05:00通过热升级技术对硬件平台和虚拟化平台进行后端修复,期间客户业务不会受到影响。对于极少量不支持热升级方式的,腾讯云另行安排时间手动重启修复,这部分服务器腾讯云安全团队将会另行进行通知,协商升级时间。

五、漏洞修复存在的问题 

由于漏洞是芯片底层设计上的缺陷导致的,修复起来会非常复杂,同时难以完美修复。从目前的情况来看,漏洞很难通过CPU微码修复,更多是依赖于OS级的修复程序。

修复程序本身也存在诸多问题。以Windows 10为例,微软于北京时间1月4号凌晨紧急发布了1月份系统安全更新,但补丁存在明显的性能和兼容性的问题:

更新可能会让受影响的系统性能下滑30%

更新可能会导致部分软件(安全软件等)不兼容从而系统蓝屏

出于兼容性考虑,Windows Update并不会在所有的电脑环境中进行自动更新,而是在其认为软件比较兼容的情况下 才会进行自动更新。另外,对于有需要更新的用户,可以通过下载微软相关补丁包,进行手动运行修复安全威胁。

根据我们的实际测试,性能问题对于普通用户来说,影响并不大:只有在极端的测试下,才会出现明显的性能问题;而正常的使用过程中一般不会出现。但是兼容性问题确实比较严重:在有安全软件,以及一些游戏的电脑上,安装补丁比较容易出现蓝屏现象。这也使得我们和其他安全厂商采取了比较保守的策略,暂时不主动推送微软的补丁,避免造成用户电脑无法正常使用。

六、漏洞对普通用户的影响

虽然漏洞影响范围广泛,并引起全球关注,但受影响最大的主要是云服务厂商,对于普通用户来说,大可不必过于恐慌。

首先,虽然漏洞细节以及PoC已经公开,但是并不能直接运用于攻击。漏洞运用于真实攻击还有许多细节问题需要解决,目前也没有一个稳定通用,同时可以造成明显严重后果(窃取账号密码等)的漏洞利用代码;

其次,我们和其他安全厂商目前也还没有监控到利用这些漏洞进行的真实攻击,一旦出现真实攻击,我们将第一时间跟进,确保用户安全;

另外,对于普通用户而言,漏洞可造成的主要危害在于用浏览器访问了一个带有漏洞利用代码的网页,导致敏感信息(账号密码等)泄露。只要养成良好的上网习惯,不轻易点击陌生人发来的链接,基本不会受到漏洞影响;同时,浏览器针对漏洞发布的补丁和缓解措施简单有效,而且不会造成性能下降或兼容性问题,用户可以选择将浏览器升级到最新版本,从而避免受到漏洞攻击。

七、结语 

这些漏洞未来一段时间内仍然是各界关注的重点,腾讯电脑管家安全团队将对漏洞动态保持持续关注,同时对漏洞做更加深入的分析和研究,从而为广大用户提供更加准确的参考信息,以及更加可靠的解决方案。

八、关于腾讯安全实验室

腾讯移动安全实验室:基于腾讯手机管家产品服务,通过终端安全平台、网络安全平台和硬件安全平台为移动产业打造云管端全方位的安全解决方案。其中腾讯御安全专注于为个人和企业移动应用开发者,提供全面的应用安全服务。

腾讯安全反诈骗实验室:汇聚国际最顶尖白帽黑客和多位腾讯专家级大数据人才,专注反诈骗技术和安全攻防体系研究。反诈骗实验室拥有全球最大安全云数据库并服务99%中国网民。

本文由腾讯安全联合实验室原创,转载需注明出处!

腾讯御安全深度解读影响全球的CPU漏洞:熔断与幽灵相关推荐

  1. 腾讯御安全深度解析新型流量盗刷病毒家族

    腾讯御安全深度解析新型流量盗刷病毒家族 [关键词:腾讯御安全,APK漏洞扫描,应用安全,应用漏洞] 近期,腾讯安全反诈骗实验室的新一代AI引擎TRP,基于应用行为.网络行为等维度进行人工智能学习训练, ...

  2. 腾讯御安全深度解析暗云Ⅲ

    [关键词:腾讯御安全,APK漏洞扫描,APP保护,Android防破解] 前面对暗云的分析报告中,腾讯电脑管家安全团队和腾讯御安全基本摸清暗云Ⅲ的感染方式和传播方式,也定位到被感染暗云Ⅲ的机器会在启动 ...

  3. 专为安全讯飞输入法联手腾讯御安全提升体验

    专为安全讯飞输入法联手腾讯御安全提升体验   随着移动应用持续爆发式增长,安全问题呈现愈演愈烈的态势.据中国互联网信息中心(CNNIC)发布的第39次<中国互联网络发展状况统计报告>称,我 ...

  4. 从预防检测到响应,腾讯御界NDR“一站式”勒索病毒解决方案

    一. 背景 2021年上半年,勒索病毒席卷美国,受害企业损失动辄数千万美元.2021年,美国最大燃油管道商(Colonial Pipeline).全球最大的肉制品生产商JBS.全球500强IT咨询公司 ...

  5. Radware深度解读肆虐全球的WannaCry勒索攻击

    本文讲的是Radware深度解读肆虐全球的WannaCry勒索攻击,2017年5月12日,勒索软件变体WannaCrypt恶意软件(也作WCry.WannaCry或WanaCrypt0r)在全球范围内 ...

  6. Windows漏洞十年未修复,3CX供应链攻击影响全球60多万家企业

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 已存在十年之久的Windows 漏洞 (CVE-2013-3900) 遭利用,导致可执行文件看似获得合法签名.这么多年来,微软发布的修复方案仍然 ...

  7. 搜狗手机助手联合腾讯御安全 共建APP安全生态环境

    近日,以资源"多.精.新"而备受用户推崇的国内手机综合应用管理分发平台--搜狗手机助手,与腾讯御安全在应用安全方面建立了深度合作,携手发布了全新升级的搜狗手机助手5.9.2版本.该 ...

  8. 热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...

  9. 这个路由器漏洞已存在12年,可影响全球数百万台设备引发供应链攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件 ...

最新文章

  1. Java 理论与实践: 流行的原子——新原子类是 java.util.concurrent 的隐藏精华(转载)...
  2. Android性能优化之电量篇(四)
  3. 蓝桥杯 历届试题 分糖果(模拟)
  4. 如何告别半途而废——韦东山嵌入式Linux视频学习笔记00
  5. strlen的神奇实现
  6. STM32之通用定时器编码器模式
  7. idea快速搭建spring cloud-注册中心与注册
  8. 浅谈安全攻防场景下面的安全检测
  9. 【软件工程作业3】DFD数据流图和SC结构图
  10. 小班安全使用计算机教案,安全用电器幼儿园小班安全教案
  11. 微信公众平台微信支付打通流程
  12. 图像的均值滤波、中值滤波_JAVA
  13. ANSYS中vonnbsp;misesnbsp;stres…
  14. Linux不是Windows(转)
  15. 数据库系统工程师任职要求
  16. Idea导入MATSim项目-github源码版本
  17. echart图表缩放到一定比例(可自定义)后,停止放大,还可以缩小回去
  18. basler 虚拟相机的使用
  19. HTTP 与 HTTPS 的详解和区别
  20. 什么是eGFP,绿色荧光蛋白

热门文章

  1. mysql skip-opt_mysqldump选项之skip-opt
  2. 商品上架难?那是你没用对方法
  3. Java访问权限之 protected详解
  4. 程序流程图的主要优点
  5. windows系统“删库跑路“脚本bat
  6. 数据仓库面试题——介绍下数据仓库
  7. 爬虫——豆瓣Top250
  8. 过拟合(Over-fitting) 和 欠拟合(Under-fitting)
  9. Pine Trail 平台支持,Samsung N210, N220, N150, N127和NB30上网本熠熠生辉
  10. python特训营-文件读写