2018年1月,“熔断”(Meltdown)与“幽灵”(Spectre)安全事件以爆炸性的速度与方式占据了各大新闻媒体的头条和IT工作者的朋友圈,在整个安全界闹得沸沸扬扬。正所谓几家欢喜几家愁:一方面,新鲜出炉且又影响力深远的安全漏洞让无数安全从业人员和研究者兴奋不已;另一方面,漏洞带来的安全隐患让Intel、AMD、ARM、NVIDIA、Microsoft和Apple等各类厂商陷入了极度的紧张之中,危机公关、应急响应和下发补丁等措施相继呈现在公众的视线当中。作为一种安全防御技术,TEE是否能够抵御Meltdown & Spectre的攻击呢?答案是否定的,本文博主就详细分析一下这个令人痛心的问题,文章后面部分也将附带聊一聊包括虚拟化、SGX和TPM在内的相关隔离技术与沙箱(Sandbox)技术对于本次安全事件的防御能力。

Meltdown & Spectre安全事件背景

Meltdown和Spectre攻击的核心思想均是利用了现代CPU 中普遍存在的预测执行这一特性。预测执行通过同时执行多个指令来提高速度,执行的顺序可能与指令进入CPU 时的顺序不同。为了提高性能,CPU 会预测分支的哪个路径最有可能被采用,甚至会在分支完成之前继续预测性地执行该路径。如果预测错误,这种预测执行将会回滚,而这个过程软件代码是无法感知到的。两种攻击凭借特定方式滥用CPU预测执行,能够从权限较低的用户进程(例如设备上运行的恶意应用)访问高权限进程的内存(包括内核内存),这有可能导致攻击者获取到用户设备上的一些敏感数据,例如密码、登录密钥、用户的私人照片、邮件、即时通讯信息甚至是商业秘密文件等。

Meltdown利用的漏洞被分配的正式CVE编号为CVE-2017-5754,其实质为“rogue data cache load”(恶意数据缓存读取),能够使普通用户进程读取系统内核内存。Spectre利用了两个漏洞来实现攻击,这两个漏洞编号为CVE-2017-5753和CVE-2017-5715,其中前者的实质为“bounds check bypass”(绕过边界检查),后者为“branch target injection”(分支目标注入),组合应用这两个漏洞能使攻击者利用CPU 检查内存访问调用有效性的时间延迟,让普通权限的用户进程访问高权限内核的内存页表项。

                                     

值得说明的是,虽然这两种攻击是最近被呈现在人们眼前的,但他们均需要建立在已有的缓存攻击(cache attack)的基础之上,实施基于缓存的侧信道攻击(cache-based side channel attack),以获取所要探测的高权限内存内容。对于ARM架构cache attack感兴趣的读者,可参见ARMageddon: Cache Attacks on Mobile Devices

TEE无法有效抵御Meltdown & Spectre

本节中提到的TEE特指移动嵌入式平台中的可信执行环境,主要以GlobalPlatform给出的定义为主,可参见可信执行环境(TEE)技术介绍。当前主流的TEE实现依赖于ARM TrustZone硬件架构技术,平台中一块整体的SoC包括了一颗基于硬件隔离的ARM CPU,可以在安全与非安全状态间进行切换。

TEE核心思想源于隔离理念,将非安全的OS及应用与安全敏感的OS及应用相互隔离,以保护高安全的OS及应用免受恶意攻击。TEE的隔离建立在硬件隔离技术之上,较纯软的隔离技术如进程隔离和虚拟化技术等,在理论上安全性更高一些。当前ARM TrustZone技术的实现基于硬件隔离,对CPU、内存和一些相关外设实施了隔离管理机制,对cache内存储的数据也有区别对待。

然而,TEE仍然无法有效抵御Meltdown和Spectre,其核心原因是安全世界与非安全世界的数据项在CPU cache中共存,即CPU cache并没有实现完全的物理隔离,而是采用共享的模式。这样一来,攻击者利用上面讲到的CPU漏洞再借助基于缓存的侧信道攻击,可以在非安全世界的进程中获取安全世界进程的敏感信息。虽然从实际攻击角度上来看,攻击的实施需要克服很多困难,如cache数据项的定位与识别、在隔离环境下成功触发CPU漏洞以及减少内存隔离带来的影响等,但从理论上讲,这些困难都是可以寻找方法逐一解决的,因而TEE确实无法抵御Meltdown和Spectre的攻击。

相关隔离技术与沙箱技术对于Meltdown& Spectre的抵御能力

虚拟化技术是较早的源于隔离思想的技术实现之一,代表的成果和产品有VMware、Intel TXT、Xen、KVM和QEMU,虽然这些成果的初衷可能不都是为了满足特定的安全需求,但它们确实在某种层面上解决了一部分安全问题。此外,很多沙箱技术成果也是基于虚拟化技术实现的,例如VirtualBox、WindowBox和Sandboxie等等。虚拟化技术大多以软件实现为主,虽然有的成果需要底层硬件技术的支持,如Intel VT技术,但底层技术的设计与实现并没有专门地、成体系地考虑安全问题。在具有Intel VT等隔离技术的通用X86平台上,其CPU、cache和内存等硬件资源基本上在主机与虚拟机、虚拟机与虚拟机之间共享,即使采用各种安全机制实现软隔离,它们依然无法抵抗Meltdown和Spectre的攻击。从相关新闻报道中可知,Meltdown和Spectre对于虚拟化隔离的安全机制是无法感知的,即可以成功突破隔离界限,实现所谓的虚拟机逃逸(virtual machine escape)。

基于规则的沙箱技术如AppArmor和TRON等,大多使用纯软的访问控制或白名单机制,它们的防御能力较弱,在Meltdown和Spectre面前不堪一击。

Intel SGX技术是Intel专为增强软件安全性而设计和实现的架构,这种架构方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统或者和VMM(Hypervisor)也无法影响enclave里面的代码和数据。SGX创建的enclave也可以理解为一个TEE,其与传统虚拟化技术有很多类似之处。同样的,SGX仍使用一套CPU、cache和内存硬件资源,无法对Meltdown和Spectre进行免疫,事实上,在Spectre公开仅数日之后,一个成功攻击SGX上安全enclave的Spectre攻击案例被披露,相关报道可参考Side Channels, Spectre, Meltdown and Trusted Execution

可信计算技术的研究成果TPM,是目前可以较好抵御Meltdown和Spectre的技术,这里说的抵御指的是成功保护TPM中的安全敏感资源,如密钥等。传统的TPM在PC上以独立芯片的形式存在,高敏感信息从不暴露在芯片之外,该芯片有自己的处理器和存储器,能够自行处理敏感运算,只对外提供处理结果。这样一来,PC上主CPU的漏洞及基于缓存的侧信道攻击无法影响到TPM内部,也就无法获取TPM内部的安全敏感资源。事实上,TPM充当了一个安全单元(SE)的作用,理论上独立SE的解决方案均能够有效保护内部资源,抵御Meltdown和Spectre的侵扰。

可能的防御措施

消除Meltdown和Spectre攻击的根本措施是很难在短时间内简单实现的,需要CPU厂商做出具体的设计或实现调整,而且很有可能以牺牲性能为前提。当前的修补措施多是从OS角度出发,阻止预测执行的滥用,这同样会造成性能的衰减。

除了上述措施,针对Meltdown和Spectre攻击,可能的防御机制还有:

1. 物理隔离的cache:对于安全敏感数据和非安全数据的隔离,实现完全的物理隔离cache,以此抵御基于缓存的侧信道攻击,可以同时有效阻止一系列基于缓存的强力攻击;

2. 各类平台广泛采用SE:SE能够有效保护内部敏感数据,抵御来自外部的非授权攻击行为;

3. 多方计算(Multiparty Computation,MPC):MPC可以将安全敏感的信息拆分成多部分由不同实体方保存或处理,虽然它无法根本解决Meltdown和Spectre的攻击问题,但可以大大提升利用攻击获取有效敏感数据的难度。

思考与警示

此次Meltdown和Spectre安全事件轰动了整个安全圈,由于绝大部分架构平台的CPU都存在类似的漏洞,而CPU又是所有软硬件的根基,这让很多长久以来所设计和研发出的安全机制与方案都瞬间崩塌,毫无招架之力。

这次事件也再次告诉我们,一套硬件或软件系统的效用性与安全性往往很难做到完美的两全,它们常常存在此消彼长的矛盾。在设计系统的时候,不能仅为了大幅提高便捷性和效率性而抛弃安全性,一旦东窗事发,其后果将不堪设想。因此,还是应该多次重复地论证与测试系统方案,尽可能减少和控制方案设计的风险性问题。

TEE技术与Meltdown Spectre相关推荐

  1. 写文章 TEE技术分析【转】

    转自:https://zhuanlan.zhihu.com/p/24222064 首先介绍一下TEE的主要关键技术: 1.安全启动(Secure Boot) 安全启动技术可以用于需要防止篡改系统镜像, ...

  2. 重磅!中国电信研究院、浦发银行、冲量在线和中国信通院联合发布-隐私计算之TEE技术实践分析

    隐私计算之TEE技术和应用实践分析 大数据时代,数据流通.安全等问题接踵而至. 据IDC预测,全球数据总量预计2020年达到44ZB,我国数据量将达到8060EB,占全球数据总量的18%.2025年全 ...

  3. linux命令之tee,技术|为初学者介绍的 Linux tee 命令(6 个例子)

    有时候,你会想手动跟踪命令的输出内容,同时又想将输出的内容写入文件,确保之后可以用来参考.如果你想寻找这相关的工具,那么恭喜你,Linux 已经有了一个叫做 tee 的命令可以帮助你. 本教程中,我们 ...

  4. 劳斯莱斯Spectre EV将采用新的悬架技术

    幽灵也将是劳斯莱斯最坚硬.最具空气动力学的汽车. 劳斯莱斯的第一辆全电动汽车,Spectre coupe,在2023年末首次交付客户之前,仍在进行250万公里的测试过程.周四,该公司发布了一组新的图像 ...

  5. TEE(Trusted Execution Environment)简介

    TEE(Trusted Execution Environment),可信执行环境,该环境可以保证不被常规操作系统干扰的计算,因此称为"可信".这是通过创建一个可以在TrustZo ...

  6. 号称最安全的苹果TEE被黑客攻破了,怎么办?

    苹果产品一直以其高安全性著称,严格的应用审查制度帮助苹果系统打造了一个所谓"没有病毒的桃花源",而独立于系统之外单独运行在特制芯片上的"安全区(TEE - Trust E ...

  7. 编程实现基于二维易位置换机制进行信息加解密_基于TEE的TBOX安全技术

    TBOX面临的安全威胁 车载终端TBOX(Telematics BOX),是具备数据输入输出.数据存储.计算处理以及通信等功能的车联网控制单元.TBOX与主机通过CAN总线通信,实现对车辆状态信息.控 ...

  8. 遇见OFFER,阿里云最强技术团队现身招聘,“职”为你来

    简历投递入口: https://bss.csdn.net/delivery/resume/ali 在5·15 遇见OFFER大厂梦招聘活动中,近20家企业来到CSDN[遇见OFFER]直播招聘栏目,其 ...

  9. 蚂蚁区块链第10课 可信计算及TEE硬件隐私合约链智能合约开发实践

    1,摘要 本文介绍可信计算分类INTEL SGX技术和ARM TRUSTZONE技术技术方案概要,以及应用INTEL SGX技术的蚂蚁区块链TEE硬件隐私链的智能合约开发实践. 2,可信计算和2种技术 ...

最新文章

  1. SQL group by 和 order by 、where、having
  2. solr快速入门的地址,spring-data/solr
  3. 打开应用蜂窝移动数据就关闭_基于移动应用行为数据的客户流失预测
  4. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(安装TensorFlow2.0)
  5. ZOJ 3962 Seven Segment Display(数位DP)题解
  6. java add方法实例_java.util.TreeSet.add()方法实例
  7. 不知风险 何谈 5G?
  8. 中小企业监控体系构建实战
  9. mc1.8.1怎么局域网java_同一台电脑同时装jdk1.8和jdk1.7
  10. 醒醒吧!只努力了一个礼拜就想成功,你不觉得无耻吗?
  11. 如何减少java里的分支_idea切换分支的时候,忽略一些无用的修改设置
  12. 服务器lsass状态代码c0000005,提示lsass.exe失败状态代码c0000005
  13. 标鸽知产商标自助注册流程
  14. img、link、html使用样式
  15. BIGD牛魔王UI图标设计iocn主题设计全套高清视频教程
  16. 数学系列:数学在计算机图形学中的应用
  17. 原生JavaScript实现AJAX、JSONP
  18. Stochastic Approximation
  19. 赣州php微信群,PHP微信群加群强制分享转发裂变源码
  20. 计算机等级考试一级ps内容,计算机等级考试《一级ps》备考练习及答案

热门文章

  1. Visual studio 2013安装失败总结
  2. 在vc中使用xtremetoolkit界面库-----安装及环境配置
  3. 大前端 - react- 服务端渲染 - Gatsby
  4. java运行库未能修复,如何修复Microsoft Visual Studio错误:“程序包未正确加载”?...
  5. ORB-SLAM3 IMU(李群)+Frame+KeyFrame+MapPoint
  6. java js方法_JAVA调用js方法
  7. AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕
  8. IntelliJ IDEA--配置导入导出
  9. [opencv][cpp] 学习手册3:多边形拟合
  10. 201521123064 《Java程序设计》第7周学习总结