北京安信天行科技有限公司(以下简称AXTX)通过对互联网安全漏洞相关信息的跟踪,2018年1月3日,谷歌发布了一则新闻,他们的 Project Zero 研究者发现了Meltdown 和Spectre两组CPU级别的漏洞,此漏洞会导致低权限应用访问到内核内存,Linux以及Windows不得不大幅改动、重新设计内核,才能解决这个芯片级的安全漏洞。
  • 漏洞详细描述
Google公司的Project Zero等安全团队披露出的英特尔等处理器芯片存在非常严重的安全漏洞,将其命名为Meltdown和Spectre。
Meltdown漏洞编号为CVE-2017-5754(rogue data cache load);
Spectre漏洞编号为CVE-2017-5715(branch target injection),CVE-2017-5753(bounds check bypass);
两组漏洞几乎影响了所有主流CPU,其中就包括了 AMD、ARM 和 Intel。
同时,云端设备、PC、笔记本、平板和智能手机都受到了波及,恶意者可利用这些漏洞来窃取计算机上的敏感数据。
Meltdown 攻击
Meltdown漏洞利用到了无序执行指令(Out-of-Order)模式,可允许恶意者读取目标设备的整个物理内存空间,而不单是内核空间,从而泄露出操作系统及其上应用程序的所有信息。利用程序中借助了处理器提权漏洞,使得指令可以绕过内存保护,从而由“推演执行”特性绕过用户层到内核层的限制,这就使得应用程序也能访问系统为内核分配的空间。
Spectre 攻击
要完全解决 Spectre 漏洞需改变处理器的架构,因此该漏洞不容易修补且会困扰人们很长一段时间。
它打破了不同进程间的隔离机制,攻击者会先让进程访问其内部的特定空间,而后通过侧信道方式读取相应数据,从而泄露出程序信息。
Spectre 攻击不仅可以用于内核层到用户层的信息泄露,还可用于虚拟化中 Hypervisor 层到 Client 层的信息泄漏。此外,借助 JS 代码还可实现浏览器沙箱逃逸。
 
利用场景概述
Meltdown和Spectre两类攻击方式实际上利用了现代CPU中用于提升执行性能的两种并行执行特性:乱序执行(Out-of-Order Execution)和推测执行(Speculative Execution)。
表面上看,处理器是依次顺序执行既定的处理器指令。但是现代CPU为了更好利用处理器资源,使用了并行执行技术,该技术已经应用了20年左右(1995年开始)。假设,基于猜测或概率的角度,在当前的指令或分支还未执行完成前就开始执行可能会被执行的指令或分支,会发生什么?如果猜对了,直接使用,CPU执行加速了。如果猜测不正确,则取消操作并恢复到原来的现场(寄存器,内存等),结果会被忽略。
不幸的是,不管预测是否正确,CPU缓存中依然保留了推测执行中访问的内存数据,并且由于推测执行的过程是不受权限检测的(CPU在推测执行过程中不会进行权限检测,比如推测执行的应用层代码可以读取内核地址数据)。如果攻击者能触发推测执行去访问指定的敏感数据区域的数据,就可能读取到原本是其它用户或更高特权级的敏感数据,虽然这些越权读取的数据存储在CPU的缓存中,并且用户代码无权访问,但是通过一种低噪的侧信道攻击技巧可以“猜测”出越权读取的数据,从而造成严重的信息泄露。
 
推测攻击场景
此外,猜测过程是可以被“污染”的,攻击者可以构造出类似ROP攻击的逻辑去影响推测过程。根据作者提供的思路,主要有三种场景:
1、“边界检查绕过”:通过污染分支预测,来绕过kernel或hypervisor的内存对象边界检测。比如,攻击者可以对高权级的代码段,或虚拟环境中hypercall,通过构造的恶意代码来触发有越界的数据下标,造成越界访问;
2、“分支目标注入”: 污染分支预测。抽象模型比较好的代码往往带有间接函数指针调用的情况,CPU在处理时需要会进行必要的内存访问,这个过程有点慢,所以CPU会预测分支。攻击者可以通过类似的ROP的方式来进行信息泄露;
3、“流氓数据加载”:部分CPU上,为了速度并不是每次都对指令作权限检查的,检查的条件存在一定的缺陷。
 
实际攻击场景中,攻击者在一定条件下可以做到:
泄露出本地操作系统底层运作信息,秘钥信息等;
通过获取泄露的信息,可以绕过内核(Kernel), 虚拟机超级管理器(HyperVisor)的隔离防护;
云服务中,可以泄露到其它租户隐私信息;
通过浏览器泄露受害者的帐号,密码,内容,邮箱, cookie等用户隐私信息;
 
修复漏洞将对性能造成影响
该漏洞无法通过芯片的微码(microcode)更新进行修复,各厂商需要对操作系统的内核关键部分做一定的修改来解决,而修复该漏洞会牺牲5%-30%的相关性能。针对云厂商主机,漏洞修补后将会影响I/O性能,不影响主机计算性能;而对于个人电脑的性能影响不是很大。
  • 漏洞来源
  1. https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
  2. https://portal.msrc.microsoft.com/en-us/security-guidance
  3. https://www.anquanke.com/post/id/93455
  4. http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5715(可将CVE编号替换于此)
三、漏洞影响范围
本次漏洞影响范围非常广泛,包括:
处理器芯片:英特尔为主、ARM、AMD,对其他处理器同样可能存在相关风险;
操作系统:Windows、Linux、macOS、Android;
云服务提供商:亚马逊、微软、谷歌、腾讯云、阿里云等;
各种私有云基础设施。
桌面用户可能遭遇到结合该机理组合攻击。
受影响CPU列表:
厂商 型号 Meltdown漏洞 Spectre漏洞
INTEL Intel® Core™ i3 processor (45nm and 32nm) Y Y
Intel® Core™ i5 processor (45nm and 32nm) Y Y
Intel® Core™ i7 processor (45nm and 32nm) Y Y
Intel® Core™ M processor family (45nm and 32nm) Y Y
2nd generation Intel® Core™ processors Y Y
3rd generation Intel® Core™ processors Y Y
4th generation Intel® Core™ processors Y Y
5th generation Intel® Core™ processors Y Y
6th generation Intel® Core™ processors Y Y
7th generation Intel® Core™ processors Y Y
8th generation Intel® Core™ processors Y Y
Intel® Core™ X-series Processor Family for Intel® X99 platforms Y Y
Intel® Core™ X-series Processor Family for Intel® X299 platforms Y Y
Intel® Xeon® processor 3400 series Y y
Intel® Xeon® processor 3600 series Y Y
Intel® Xeon® processor 5500 series Y Y
Intel® Xeon® processor 5600 series Y Y
Intel® Xeon® processor 6500 series Y Y
Intel® Xeon® processor 7500 series Y Y
Intel® Xeon® Processor E3 Family Y Y
Intel® Xeon® Processor E3 v2 Family Y Y
Intel® Xeon® Processor E3 v3 Family Y Y
Intel® Xeon® Processor E3 v4 Family Y Y
Intel® Xeon® Processor E3 v5 Family Y Y
Intel® Xeon® Processor E3 v6 Family Y Y
Intel® Xeon® Processor E5 Family Y Y
Intel® Xeon® Processor E5 v2 Family Y Y
Intel® Xeon® Processor E5 v3 Family Y Y
Intel® Xeon® Processor E5 v4 Family Y Y
Intel® Xeon® Processor E7 Family Y Y
Intel® Xeon® Processor E7 v2 Family Y Y
Intel® Xeon® Processor E7 v3 Family Y Y
Intel® Xeon® Processor E7 v4 Family Y Y
Intel® Xeon® Processor Scalable Family Y Y
Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series Y Y
Intel® Atom™ Processor C Series Y Y
Intel® Atom™ Processor E Series Y Y
Intel® Atom™ Processor A Series Y Y
Intel® Atom™ Processor x3 Series Y Y
Intel® Atom™ Processor Z Series Y Y
Intel® Celeron® Processor J Series Y Y
Intel® Celeron® Processor N Series Y Y
Intel® Pentium® Processor J Series Y Y
Intel® Pentium® Processor N Series Y Y
ARM Cortex-R7 N Y
Cortex-R8 N Y
Cortex-A8 N Y
Cortex-A9 N Y
Cortex-A15 N Y
Cortex-A17 N Y
Cortex-A57 N Y
Cortex-A72 N Y
Cortex-A73 N Y
Cortex-A75 Y Y
AMD 锐龙 N Y
锐龙PRO N Y
锐龙Threadripper  N Y
RYZEN N Y
A系列 N Y
皓龙 N Y
霄龙 N Y
说明:
1.Y代表存在对应漏洞,N代表不存在对应漏洞。
2.不出现在列表的上诉厂商设备将很可能不受到影响。
四、安全处理建议
一、相关的安全补丁及修复方案。
硬件厂商
(1)INTEL:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
公告包含了受影响设备,基本覆盖了目前市面的所有INTEL CPU产品。
(2)AMD:
https://www.amd.com/en/corporate/speculative-execution
AMD处理器拥有内核页表隔离功能,据称仅受 Spectre影响而不受Meltdown影响。
(3)NVIDIA:
https://forums.geforce.com/default/topic/1033210/nvidias-response-to-speculative-side-channels-cve-2017-5753-cve-2017-5715-and-cve-2017-5754/
公告表示确信不受影响并通过更新GPU驱动帮助CPU出现的安全问题。
(4)ARM:
https://developer.arm.com/support/security-update
部分ARM处理器受影响,其中大部分受到Spectre漏洞影响,而极少受到Meltdown漏洞影响。
操作系统厂商:
(1)Android:
https://source.android.com/security/bulletin/2018-01-01
通过减少了对高精度定时器的访问来限制旁路攻击。
(2)Windows:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
微软本次更新应该是解决了Meltdown 漏洞,对于Spectre漏洞仅做了缓解。
但部分用户在更新时遇到了一些问题,其Meltdown 和 Spectre 安全更新似乎与反病毒软件们相处得并不融洽。在测试中发现,部分第三方应用程序已经对windows内核内存进行了不受支持的调用,更新导致蓝屏错误的发生,让设备无法boot。
如果用户在自己系统的Windows更新功能中看到“检查更新”有新内容,则可以进行安装。不同的系统会有不同的补丁KB编号,主要是系统和硬件平台差别导致的。如果没有新内容出现,则意味着Windows检查到该用户的电脑上存在不兼容的反病毒软件!
微软表示他们已经在和各种厂商进行了沟通,部分不兼容的产品需要创建一个注册表项目,确保不会在本次安全更新后系统崩溃。
    但在本次补丁安装时,系统会自动检测注册表项是否存在;如果键值存在,Windows更新进程才会相信反病毒软件已经得到更新,可以兼容补丁,系统才能正确更新。——这里就是问题点
部分厂商表示他们不打算创建这个注册表值,部分厂商表示自己无法在“技术上”实现,其他厂商则在之后的几天内会将自己的AV产品更新,满足要求。
所以,如果用户使用的反病毒软件不巧处在“无法添加注册表项”的一类中,可以通过如下步骤实现更新:
请在再三确认自己的厂商是否兼容,不兼容的话,才建议使用这个 .reg 文件!
Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat" Value="cadca5fe-87d3-4b96-b7fb-a231484277cc" Type="REG_DWORD”
运行文件或者手动添加注册表项后,就可以正常安装微软补丁了
安全更新和杀毒软件的兼容性问题可以参考:
https://docs.google.com/spreadsheets/d/184wcDt9I9TUNFFbsAVLpzAtckQxYiuirADzf3cL42FQ/htmlview?sle=true#gid=0。
(3)MAC OS&IOS:
https://support.apple.com/en-us/HT208394
苹果已经在 iOS 11.2、macOS 10.13.2 和 tvOS 11.2 上发布了修复措施,以应对 Meltdown。并称计划在 Safari 中发布修复方案,应对 Spectre 漏洞。
(4)LINUX:
如下版本均以发布更新具体细节可通过公告查看。
RED HAT:
https://access.redhat.com/security/vulnerabilities/speculativeexecution?sc_cid=701f2000000tsLNAAY
DEBIAN:
https://security-tracker.debian.org/tracker/CVE-2017-5754
UBUNTU:
https://security-tracker.debian.org/tracker/CVE-2017-5754
SUSE:
https://www.suse.com/c/suse-addresses-meltdown-spectre-vulnerabilities/
虚拟化:
(1)VMWARE:
https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html
ESXi,Workstation,Fusion均已发布更新。
(2)Xen:
https://xenbits.xen.org/xsa/advisory-254.html
目前还没有更新发布,但是对于SP1和SP2可以开启SMEP来环境漏洞被利用。
(3)Citrix:
https://support.citrix.com/article/CTX231399
Citrix NetScaler SDX和Citrix XenServer被指出受到影响。Citrix XenMobile Server和Citrix NetScaler (MPX/VPX)被确认不受影响,部分已经提供更新。
云服务厂商:
(1)亚马逊云修复工作已到尾声
https://aws.amazon.com/cn/security/security-bulletins/AWS-2018-013/
(2)腾讯云将于1月10日凌晨通过热升级方式对虚拟化平台底层进行修复
http://bbs.qcloud.com/thread-48531-1-1.html
(3)阿里云已经启动了云平台底层基础架构的漏洞修复更新,会根据批次依次修复,最迟于北京时间1月12日24点之前完成
https://help.aliyun.com/noticelist/articleid/20700730.html?spm=5176.789004748.n2.6.NQN44f
(4)金山云与合作伙伴Intel就此问题已进行协商
https://www.ksyun.com/news/art/id/2138
(5)UCloud已开展修复工作,具体时间未定
http://blog.ucloud.cn/archives/2991
(6)青云在密切观察并与 Intel 保持持续沟通
https://log.qingcloud.com/archives/3599
二、检测方法
1、Windows用户
1月3日深夜,微软发布了针对Meltdown和Specter的系统安全更新,而两个安全漏洞影响了几乎所有自1995年以来发布的CPU(不止Intel)。根据微软的安全建议来看,这些 Windows 安全更新能够解决了各种Windows 发行版中的Meltdown和Spectre漏洞。
微软发布了一个Powershell来检查是否安装了正确的更新程序,或是否需要额外的固件更新。
用户在启动PowerShell时,请确保是以管理员权限启动的,以便安装所需的模块。
 
下面的Powershell命令,将下载并安装Powershell模块,用于测试Meltdown和Specter的缺陷。
Install-Module SpeculationControl
如果用户运行该命令返回的是错误,则可以运行以下命令:
Set-ExecutionPolicy Bypass
然后,用户可以运行第二条命令:
Get-SpeculationControlSettings
如果在运行Get-SpeculationControlSettings时出现如下错误,需要开启脚本执行权限,且需要将SpeculationControl模块导入。
命令如下:
 
set-executionpolicy  remotesigned
Import-Module  SpeculationControl
如果用户在运行这些命令后看到很多红色的文字,那么可以确认该用户的CPU处在威胁之中。例:

安装补丁后再执行Get-SpeculationControlSettings命令有两种可能的情况:
 
此为最常见的,意思是说 Meltdown补丁已经成功,但是Spectre漏洞修复不完整。红色的文字内容是指改名用户还是需要额外的芯片组固件更新。如果用户的笔记本电脑/台式机/服务器供应商提供了额外的芯片组固件更新,他们可以从官方站点获取,安装并完成修补程序。
如果一切正常,所有检查将以绿色文本显示,如下所示:
 
Github也有公开的检测工具:
https://github.com/ionescu007/SpecuCheck
2、Linux用户
https://github.com/raphaelsc/Am-I-affected-by-Meltdown
以下测试工具可以编译后运行在64位linux系统下。
地址:https://github.com/paboldin/meltdown-exploit
3、其他较为通用的工具及POC代码特征
https://github.com/Viralmaniar/In-Spectre-Meltdown
https://github.com/RealJTG/Meltdown
https://github.com/Eugnis/spectre-attack
https://github.com/feruxmax/meltdown
https://github.com/gkaindl/meltdown-poc
https://github.com/turbo/KPTI-PoC-Collection
https://github.com/dendisuhubdy/meltdown
https://github.com/HarsaroopDhillon/Meltdow
https://github.com/paboldin/meltdown-exploit
https://github.com/feruxmax/meltdown
https://github.com/corsix/meltdown-poc
https://github.com/ssstonebraker/meltdown_specre
https://github.com/cloudsriseup/Meltdown-Proof-of-Concept
https://github.com/sampuka/meltdown
https://github.com/douyamv/MeltdownTool
https://github.com/gentilkiwi/spectre_meltdown
https://github.com/willyb321/meltdown-spectre-poc-grabber
https://github.com/mniip/spectre-meltdown-poc
https://github.com/1nF0rmed/meltdownExploit
 
现已出现该漏洞的在野攻击,对于此漏洞望多加关注。
 
若需要进一步获得有关安全咨询,欢迎垂询北京安信天行科技有限公司安全服务专家。
 
联系电话:58543888
邮箱地址:security@bjca.org.cn
 
北京安信天行科技有限公司  云安全中心
2018年1月8日