在过去几十年中,预测执行无疑在处理器发展方面发挥了重要作用。熔断和幽灵两个漏洞展示了这种技术的潜在危险,因为灵活的代码可以利用预测行为执行攻击。随着intel对这两个漏洞进行的补丁修正,我们现在拥有针对Intel secure enclave (SGX),虚拟机以及超线程通过L1终端故障攻击(L1TF)的防范。
Foreshadow L1终端故障攻击
Foreshadow L1终端故障攻击是另一种难以想象的攻击。L1是低级处理器缓存。在英特尔体系结构中,当推测性页表查找失败时会发生“终端故障”。有了这种术语,攻击的本质就是攻击者可以利用英特尔cpu执行L1缓存页表查找的方式来获取敏感信息。
英特尔SGX被排除在幽灵事件和崩溃讨论之外。英特尔新交所(Intel SGX)创建了一个安全区用来存储敏感信息,即使是系统管理员也不应该看到这些信息。有了预兆,研究人员就能窥探新交所内部,获得极为敏感的数据。
主流服务器和桌面CPU上的超线程允许在同一执行核心上同时执行两个线程,该功能称为超线程。超线程的“魔力”之一是芯片设计者意识到核心部分,尤其是缓存,可以被多个线程使用。与增加物理核心相比,添加超线程的成本相对较小,这使它具有很大的性能优势。只有极少的用户会关闭英特尔超线程技术,比如HPC,大多数情况下CPU通过该技术提高了约30%的性能提升。
由于英特尔超线程内核上的两个线程都是使用相同的缓存资源执行的,因此提高性能的主要方法也意味着有一个共享的一级缓存。在PC端,这不是问题,因为操作系统供应商可以修复操作系统;而如果黑客在虚拟机中创建了一个损坏的扩展页表,那么系统可能被欺骗攻击,hypervisor可以向其他虚拟机显示信息。多用户云的超线程程意味着来自两个不同用户的vm可以像两个线程一样运行在同一个物理内核上,一个虚拟机可以使用L1TF来获取另一个虚拟机的信息。这对于云提供商来说是件大事。
缓解
几个月前,英特尔和第三方都披露了此漏洞。与此同时,补丁已经发布。我们曾经说过,裸机服务器对性能的影响可以忽略不计。在虚拟化系统中,给服务器打L1缓存刷新补丁就意味着关闭Intel超线程,关闭该功能会对性能产生巨大的负面影响。