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预测执行,能够从权限较低的用户进程(例如设备上运行的恶意应用)访问高权限进程的内存(包括内核内存),这有可能导致攻击者获取到用户设备上的一些敏感数据,例如密码、登录密钥、用户的私人照片、邮件