查看原文
其他

基于硬件方法的“熔断”和“幽灵”CPU 漏洞应对机制!

CSDN 2019-10-30

以下文章来源于程序人生 ,作者DespacitoA

作者 | DespacitoA
责编 | 胡巍巍
出品 | 程序人生(ID:coder_life)

随着信息技术的飞速发展,云计算、大数据、物联网、移动计算等新型应用已逐渐走进日常生活,人们一边享受信息技术带来的便利,一边更加关注诸如支付安全、隐私数据安全等信息安全问题。

通常信息安全可分为软件安全和硬件安全。工业界和学术界对操作系统及运行在其上的软件安全的研究已经持续了数十年时间,但对硬件安全特别是信息系统核心部件CPU芯片硬件安全的研究工作近几年才刚起步,这主要是由两个原因造成的。

一是绝大部分用户只与操作系统及运行在其上的软件进行交互,对于软件漏洞及病毒等造成的问题感受强烈,因此这类问题更容易得到工业界和学术界的重视;

二是硬件木马、漏洞利用难度较大,偶尔出现的漏洞也会很快以补丁等形式修复,导致人们忽视了硬件安全问题。

事实上,硬件安全(特别是CPU芯片的硬件安全)是计算机系统的安全根基,无法确保硬件的安全,其上运行的软件安全便无从谈起,且由于硬件漏洞更难被发现,一旦被恶意利用,其造成的影响将会更加广泛和严重。

2018年初曝出的“熔断”(Meltdown)和“幽灵”(Spectre)CPU硬件漏洞是迄今为止影响最广泛的硬件安全漏洞,全球几乎所有高性能CPU都会受到该漏洞的影响,同时,针对这两个漏洞的恶意软件及其变种迅速出现,并以惊人的速度发展。


“熔断”和“幽灵”漏洞的本质与影响


由于CPU的计算速度要远远的快于存储的读写速度,为了弥补因存储速度造成的计算延迟,提升计算机整体的性能,出现了缓存、主存储器、辅助存储器的三级存储结构,其中缓存的作用是改善主存储器与CPU的速度匹配问题,往往被集成到CPU中。

为了进一步提升CPU的性能,基于超标量流水技术的微架构被广泛应用于现代CPU当中,微架构可以不按照指令指定的顺序执行,仅需保证对程序员可见状态的影响和顺序执行指令一致。

这种以数据流为驱动的设计大幅度提高了微架构设计的灵活性,诞生了如乱序执行、分支预测等超前执行机制,极大的提升了CPU的效率。

然而,侧信道攻击技术的出现为攻击者提供了观测微架构行为的方法,实现了对操作系统受保护内存区域的关键信息的直接读取,从而窃取一些从指令上无法直接访问的状态,例如高速缓存的状态,内部物理寄存器的值。

利用这些微架构内部状态,攻击者可以利用巧妙的办法推断出本没有权限访问的数据。 

“熔断”和“幽灵”攻击便是利用了处理器的超前执行机制(如乱序执行、分支预测)和对缓存的侧信道攻击实现的。

此次漏洞本质上是由一系列硬件问题或者硬件缺陷造成的,软件技术手段无法察觉,也无法实现有效检测、预警和抵御。

已经证明微软公司提供最新操作系统补丁无法有效应对这两个CPU漏洞、所有已知杀毒软件和安全软件也无法有效应对这两个CPU漏洞。



基于硬件方法的应对机制


“熔断”和“幽灵”漏洞出现以来,主流CPU芯片厂商、操作系统供应商、电脑手机等硬件厂商,提出了许多方案来缓解或消除“熔断”和“幽灵”漏洞对现有设备的影响。

在学术界,在操作系统、计算机体系结构、集成电路设计、信息安全等领域的学者也在积极探索从根本上解决问题的方法。由于这两个漏洞属于硬件安全的范畴,因此,本文重点对近两年在硬件层面提出的有代表性的研究工作进行介绍。

(1)CPU动态检测管控技术

清华大学团队提出的“CPU硬件安全动态监测管控技术”能够对CPU运行过程中的行为进行实时检测和管控。

该技术将CPU从逻辑上分为两部分:一部分是 CPU 运算引擎,另一部分是 CPU 监测控制电路。

其中,运算引擎用于完成通常的运算任务,而监测控制电路则借助可重构计算处理器实现,在不影响运算引擎正常工作的情况下,通过对比CPU运行时硬件的实际行为与指令集给出的预期行为的差异来实时判断CPU是否产生了非预期的操作,进而判定其是否存在硬件安全威胁。

得益于可重构处理器的高灵活性和高安全性,使得对CPU的检测和管控开销在可接受的范围之内。

基于该技术研发的津逮高性能CPU芯片已正式发布,这是全球首款采用第三方芯片来动态监控处理器内核硬件安全的CPU芯片,该芯片选用英特尔至强处理器作为运算引擎,实验表明在互联网中同时运行多块津逮服务器CPU芯片,可以实现对至强处理器99.8%以上生命周期的实时监控,性能仅损失0.98% [1]。该工作发表于高性能芯片顶级会议Hot Chips 2019。

图1 在微架构层面对幽灵攻击的检测策略[1]

上图1表示津逮高性能CPU对幽灵攻击的检测流程。当分支发生时,分支路径都将被回放,比对MTRs记录可以检测到推测执行的内存读取操作,对该地址的侧信道攻击能够通过高精度定时指令被识别,从而综合检测出幽灵攻击。

测试数据表明,采用100us采样长度时,幽灵V1攻击的检测率可以达到94.0%以上[1]。 

(2)采用地址加密和重映射解决基于冲突的缓存攻击

佐治亚理工学院团队提出了一种将原始地址通过加密来随机映射到缓存地址以缓解缓存攻击的方法——CEASE,此外,通过定期重映射方法来进一步提高安全性——CEASER[2]。 

图2 CEASE原理图[2],CEASE使用了低延迟分组密码来转换PLA和ELA,ELA仅对LLC可见,其他所有对cache的外部操作仍然使用PLA 

CEASE方法设计思想如上图2所示,处理器使用物理地址(Physical Line Address, PLA)访问内存,首先使用低延迟分组密码(Low-Latency Block-Cipher ,LLBC)对该地址进行加密,获得加密地址ELA,检查ELA对应的内存块是否已经在缓存中,如果在缓存中则“命中”,从缓存中读取数据;如果ELA对应的内存块未在缓存中则“未命中”。

此时,通过相同的低延迟分组密码将ELA解密,获得对应的物理地址PLA,然后将被驱逐块写回内存。由于加密地址仅存在于缓存内部,对处理器和内存都是不可见的,因此,无须对缓存之外的任务部分修改。

由于采用了低延迟分组密码对缓存地址信息加密,致使攻击者难以利用侧信道攻击获得想要的数据。

该方法能够有效应用得益于设计了一个极低延迟的分组密码器,同时,通过定期重新映射地址空间增加攻击者的学习映射关系的难度。

CEASER提供了强大的安全性,能够容忍超过100年的连续攻击,且仅造成1%的降速。该工作发表于计算机体系结构顶级会议MICRO 2018。

随后,该团队又设计了两种针对CEASER的攻击方法及改进结构CEASER-S,对前述工作进行了完善。相关工作发表于计算机体系结构顶级会议ISCA 2019。


总结


现代CPU动辄集成数十亿的晶体管,需要借助全球化分工与协作才能完成设计(功能设计、逻辑设计、物理设计)、制造、封装和测试等研制工作,往往涉及到成千上万的企业参与,在这个过程中无论是被恶意植入硬件木马、后门,或者由于疏忽造成设计漏洞,都难以实现高效、全面的检测。

“熔断”、“幽灵”漏洞的出现使人们开始意识到硬件安全的重要性,近两年计算机体系结构顶级会议ISCA、MICRO、HPCA、ASPLOS,高性能芯片顶级会议Hot Chips,分布计算顶级会议USENIX ATC等均有文章研究如何应对“熔断”、“幽灵”的攻击,相信随着研究工作的不断深入,相应的硬件安全问题会逐步得到缓解。

作者简介:DespacitoA,关注计算机硬件安全、密码芯片技术发展,并尝试在该领域做一点研究工作。

【END】

 热 文 推 荐 

为何优秀如程序员,也会构建 Bug 满格的软件?

日本互联网 20 年沧桑路

☞ 三大运营商回复 4G 降速;微信上线语音转文字功能;IntelliJ IDEA 2019.2.1 发布 | 极客头条

 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台

☞ 我是如何通过开源项目月入 10 万的?

深度 | 语音识别技术简史:从不温不火到炙手可热
意大利黑手党四大家族做了条"犯罪链", 把家族的权利被分的明明白白的……
Istio 庖丁解牛六:多集群网格应用场景
如何写出让同事无法维护的代码?

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存