时间:2018-03-22
事件的起点是Intel市售处理器被爆出因为设计的缺漏,会造成原本普通的程序却可以拥有前所未有的高权限,甚至可以直接访问核心内存当中的数据,这对于用户隐私和设备安全无疑是多年来前所未有的噩梦。
很快漏洞迅速升级演变,研究人员称其为Meltdown”(熔断)和“Spectre”(幽灵),不仅可以拥有内核级别的高权限,潜在的危害性、影响的广阔性、解决的棘手性都始料未及,因此这次曝光的漏洞才会闹得沸沸扬扬,关于漏洞的详细信息,捷普安全实验室做了进一步的跟踪分析。
漏洞原理分析
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中,从而推测出内核地址的内容
Spectre漏洞原理
与Meltdown类似,Spectre的原理是,当CPU发现分支预测错误时会丢弃分支执行的结果,恢复CPU的状态,但是不会恢复CPU Cache的状态,利用这一点可以突破进程间的访问限制(如浏览器沙箱)获取其他进程的数据。
Spectre的利用代码片段:
if (x < array1_size) {
y = array2[array1[x] * 256];
// do something using Y that is
// observable when speculatively executed
}
具体攻击过程可以分为三个阶段:
1) 训练CPU的分支预测单元使其在运行利用代码时会进行特定的预测执行
2) 预测执行使得CPU将要访问的地址的内容读取到CPU Cache中
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
腾讯玄武实验室开放了在线检测当前浏览器是否易受spectre漏洞攻击的网址:
http://t.cn/RHkuFNl
影响环境
现代处理器(CPU)的运作机制中存在两个用于加速执行的特性,推测执行(Speculative Execution)和间接分支预测(Indirect Branch Prediction)。这两组CPU漏洞的利用依靠推测执行特性,通过用户层面应用从CPU 内存中读取核心数据。推测执行技术从1995年开始应用,所以近20年的Intel, AMD, Qualcomm厂家和其它ARM的处理器几乎都受到影响;
Intel CPU用户:几乎所有(1995年之后的所有的CPU型号,除了2013年之前的Intel 安腾和Atom外);
AMD CPU用户:根据AMD公司的声明,目前AMD CPU不受Meltdown漏洞影响;
ARM CPU用户:根据ARM公司的声明,包括Cortex-A75在内的少数ARM核心CPU受影响。
Intel CPU用户:几乎所有(1995年之后的所有的CPU型号,除了2013年之前的Intel 安腾和Atom外);
AMD CPU用户:根据AMD公司的声明,目前AMD CPU不受Meltdown漏洞影响;
ARM CPU用户:根据ARM公司的声明,包括Cortex-A75在内的少数ARM核心CPU受影响。
教您如何修复
针对这两组漏洞,各家芯片厂商,操作系统厂商,浏览器厂商,以及云服务厂商,都积极采取措施,发布安全公告,并及时推出缓解措施和修复补丁。
〖 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
〖 ARM 〗
ARM确认大部分处理器不受漏洞影响,但给出了一个受影响的处理器列表。ARM认为,利用这些漏洞进行攻击需要在本地运行恶意软件,用户及时更新软件和不点击来历不明的链接会降低攻击风险。针对linux上的程序,ARM提供了新编译器,可用新编译器重新编译。另外发布了Linux ARM内核补丁,用于修补漏洞,相关页面如下:
https://developer.arm.com/support/security-update/download-the-whitepaper
https://developer.arm.com/support/security-update
〖 AMD 〗
AMD针对每个漏洞做了回复,第一个漏洞由软件、操作系统厂商发布补丁解决,性能影响非常轻微,其他两个漏洞由于AMD CPU特殊的架构,都不受影响。具体如下:
https://www.amd.com/en/corporate/speculative-execution
〖 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
〖 Linux 〗
Linux内核开发者Thomas Gleixner在2017年12月在Linux内核邮件列表中就新的KAISER隔离补丁发布了说明。目前有人怀疑这批补丁可能正是为了解决Linux系统当中的Metldown与Spectre漏洞。具体如下:
https://lkml.org/lkml/2017/12/4/709
〖 RedHat 〗
红帽公司已经发布一项建议,其中列出受到影响的产品及其当前状态。建议内容表明:对于正在运行受影响版本产品的红帽客户,强烈建议用户尽快根据指导清单进行更新。所有受影响产品都应安装修复补丁,借以缓解CVE-2017-5753 (变种1)与CVE-2017-5754 (变种3)漏洞。CVE-2017-5715(变种2)可通过本地以及虚拟访客边界两种方式被加以利用。具体如下:
https://access.redhat.com/security/vulnerabilities/speculativeexecution?sc_cid=701f2000000tsLNAAY&
〖 安卓 〗
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
利用漏洞在浏览器中进行攻击依赖于新特性SharedArrayBuffer和用于高精度时间计算的函数performance.now。各个浏览器表示都采取了以下两个缓解措施:
移除浏览器中可用于攻击的SharedArrayBuffer特性
降低用于高精度时间计算的函数performance.now的精确性
加上这两个缓解措施后,JS版本的漏洞PoC代码将无法触发。
〖 Microsoft Edge 〗
微软已经发布了浏览器补丁:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
〖 FireFox 〗
Mozilla从FireFox 57版本开始采取了这两个缓解措施:
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
〖 Chrome 〗
谷歌从Chrome 64版本开始采取了这两个缓解措施:
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html
〖 Amazon 〗
Amazon方面已经发布一项安全公告,指出:此项安全漏洞广泛存在于过去20年推出的英特尔、AMD以及ARM等各类现代处理器架构当中,影响范围涵盖服务器、台式机以及移动设备。Amazon EC2体系中除极少数实例外,其余皆受到严格保护。剩余部分的修复工作将在接下来数小时内完成,并附有相关实例维护通知。虽然AWS所执行的更新能够切实保护底层基础设施,但为了充分解决此次问题,客户还应对实例中的操作系统进行修复。目前Amazon Linux更新已经开始发布,具体如下:
https://aws.amazon.com/security/security-bulletins/AWS-2018-013/
〖 阿里云 〗
为解决处理器芯片的安全问题,阿里云将在北京时间2018年1月12日凌晨1点进行虚拟化底层的升级更新。届时,阿里云将采用热升级的方式,绝大多数客户不会受到影响。但个别客户可能需要手动重启,阿里云建议客户提前准备运营预案及数据备份。
〖 腾讯云 〗
腾讯云将于北京时间2018年1月10日凌晨01:00-05:00通过热升级技术对硬件平台和虚拟化平台进行后端修复,期间客户业务不会受到影响。对于极少量不支持热升级方式的,腾讯云另行安排时间手动重启修复,这部分服务器腾讯云安全团队将会另行进行通知,协商升级时间。
修复建议
对于操作系统的修复建议,三中科技提醒您,及时打上官方的最新补丁,并且及时注意官方的安全公告;对于云服务器的防护建议:听从云计算服务商的建议,如若对业务存在影响请及时与云计算提供商协商解决措施以及应对方法;对于浏览器的防护措施:及时升级浏览器至最新版本。
文章来自网络
Copyright © 2017-2024 河南中瀚安全技术有限公司 版权所有 豫ICP备18011434号-1 豫公网安备 41019702002746号