System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种防御前向幽灵攻击的方法技术_技高网

一种防御前向幽灵攻击的方法技术

技术编号:40395383 阅读:4 留言:0更新日期:2024-02-20 22:24
本发明专利技术提出一种防御前向幽灵攻击的方法,用于具有硬件CFI特性的处理器的前向幽灵攻击防御,所述方法将CFI机制应用到处理器流水线的预测执行阶段,利用处理器中已有的硬件CFI特性来实现高效的BTB预测地址的检查,通过维护处理器前端预测时的控制流完整性,阻止错误的预测执行,以防御前向的幽灵攻击;所述方法还通过跟踪间接跳转指令预测执行过程的状态机和lfence指令来防御跨地址空间的前向幽灵攻击;包括以下方法;方法A、BTB跳转目标地址检测;方法B、通过代码填充来控制目标集合的槽位,所述槽位即指令地址的低位;方法C、利用有限状态机跟踪BTB跳转目标地址的检测过程;本发明专利技术能实现高安全性、低性能损耗、低硬件开销的前向幽灵攻击防御技术。

【技术实现步骤摘要】

本专利技术涉及处理器安全,尤其是一种防御前向幽灵攻击的方法


技术介绍

1、分支预测(branch prediction)和预测执行(speculative execution)被广泛应用于现代处理器中。当处理器正确预测分支指令的跳转目标地址时,可以减少流水线停顿;当预测错误时,虽然指令预测执行的结果不会被提交,但是预测执行对微体系结构的影响却没有被消除,例如高速缓存中的数据不会被清空。攻击者利用这种缺陷,首先训练分支预测器,注入攻击配件的地址,然后诱导处理器预测执行攻击配件,将敏感数据带入微体系结构中,最终使用侧信道攻击等方式泄露出微体系结构中的敏感数据。这种基于预测执行漏洞的攻击方式被称为幽灵攻击(spectreattack),它影响了主流的intel、amd、arm和risc-v处理器,对个人电脑、服务器、智能手机等数以亿计设备上的数据机密性产生了严重的威胁。

2、在本申请提案中,基于分支目标缓存btb(branch target buffer)的spectre-btb攻击称为前向幽灵攻击,它利用了间接跳转(jmp)和间接调用(call)指令预测地址失效的情况。

3、控制流完整性cfi(control flow integrity)是一种包含间接跳转的内存安全技术,通过约束指令跳转到合法的目标集合,从而维护程序正常的执行顺序。cfi首先通过静态分析得到程序的控制流图,然后在控制流图中计算出所有间接跳转指令的合法目标地址集合,并为这些目标地址集合分配标签。在生成代码时,cfi对间接跳转指令增加目标地址的标签检查逻辑。在程序运行过程中,如果指令跳转到非法的目标地址,程序就会被终止。

4、现在部分处理器中已经部署了硬件cfi机制,例如intel的cet技术(control-flowenforcement technology)。cet在每个基本块的入口添加一条endbranch指令,在间接跳转时检查下一条指令是否为endbranch。如果不是,则视为非法控制流。

5、现有技术:

6、谷歌提出retpoline技术,把间接跳转指令替换成push+ret指令,避免处理器使用btb中被污染的预测地址,从而缓解前向幽灵攻击。然而这种方法禁用了call、jmp指令的预测执行,严重降低处理器性能。

7、intel和amd拓展了新的指令,对预测执行的call、jmp指令进行细粒度的权限检查。但频繁的权限检查在实际应用中带来很高的性能损耗:在skylake处理器上的性能损耗最高为24%,在haswell处理器上的性能损耗最高为53%。

8、safespec和invisispec使用双倍的微体系结构分离预测数据和提交数据。如果预测错误,则将影子结构里的数据清空。然而这种方式需要将所有的微体系结构都增加一倍,例如高速缓存、页表缓存等,实现上较为复杂,不容易部署到实际系统中。

9、现有技术的缺点在于较高的性能损耗或硬件开销,造成性能损耗的原因要么是因为禁用了分支预测的功能,要么是因为预测阶段进行复杂的权限检查操作;高硬件开销则使得该技术难以部署到实际系统中。


技术实现思路

1、本专利技术提出一种防御前向幽灵攻击的方法,能实现高安全性、低性能损耗、低硬件开销的前向幽灵攻击防御技术。

2、本专利技术采用以下技术方案。

3、一种防御前向幽灵攻击的方法,用于具有硬件cfi特性的处理器的前向幽灵攻击防御,其特征在于:所述方法将cfi机制应用到处理器流水线的预测执行阶段,利用处理器中已有的硬件cfi特性来实现高效的btb预测地址的检查,通过维护处理器前端预测时的控制流完整性,阻止错误的预测执行,以防御前向的幽灵攻击;所述方法还通过跟踪间接跳转指令预测执行过程的状态机和lfence指令来防御跨地址空间的前向幽灵攻击;包括以下方法;

4、方法a、btb跳转目标地址检测;

5、方法b、通过代码填充来控制目标集合的槽位,所述槽位即指令地址的低位;

6、方法c、利用有限状态机跟踪btb跳转目标地址的检测过程。

7、所述方法a中,根据槽位来区分不同指令的合法跳转目标集合,所述方法对btb预测地址按以下规则进行约束;

8、规则一、基于粗粒度cfi,跳转目标指令需为endbranch指令;

9、规则二、预测地址和跳转目标地址的槽位必须相同,槽位视同为cfi标签,槽位的匹配作业通过硬件比对完成。

10、当根据槽位匹配规则来检测btb的跳转目标地址是否正确时,call、jmp指令在译码阶段根据其指令地址索引btb,得到跳转目标地址,再根据跳转目标地址取出目标地址指令;

11、当取出的目标地址指令不是endbranch指令时,不满足规则一,判定该预测地址错误;

12、当跳转目标地址的槽位与跳转指令地址的槽位不同时,不满足规则二,判定该预测地址错误;

13、当同时满足槽位匹配和目标地址指令为endbranch时,判定该预测地址正确。

14、方法b中,为了控制目标集合的槽位,在程序的编译过程中生成控制流图cfg,然后为这些目标集合分配槽位并添加汇编伪指令org,该指令能够将下一条指令填充至指定位置;槽位分配能够从0开始依次分配,也能随机分配。

15、方法c用于解决跨地址空间的前向幽灵攻击问题;所述有限状态机用于跟踪间接跳转指令预测执行过程,其执行时的状态包括空闲、等待和插入lfence;具体为:初始状态下,状态机处于空闲状态,并保持该状态直到间接跳转指令被执行时,状态机才进入等待状态;在等待状态下,如果处理器执行的下一条指令为endbranch指令,则回到空闲状态,即执行槽位匹配规则一;如果不是,则可能发生了同地址空间内的前向幽灵攻击或者发生了进程切换,为了防御跨地址空间的攻击,此时插入lfence指令,防止使用错误的预测地址。

16、所述方法用于不关闭预测执行的处理器,结合硬件cfi机制来在预测取指阶段判断目标地址指令是否为endbranch、判断两条指令的槽位是否匹配,即检查btb预测地址是否正确。

17、所述不关闭预测执行的处理器,其包括用于预测阶段的cfi检查和跨地址空间的检查的硬件,具体为一个2比特位的状态机和对应的逻辑控制单元。

18、本专利技术申请提案相比于现有技术的优点在于,本专利技术所述方法的性能和硬件开销都很低;具体为:

19、1、性能损耗低的原因在于,结合了硬件cfi机制,在预测取指阶段判断目标地址指令是否为endbranch、判断两条指令的槽位是否匹配,即可检查btb预测地址是否正确。该方案没有关闭预测执行,不影响处理器应有的性能;相比于复杂的权限检查,该方法的性能开销几乎可以忽略不计。

20、2、硬件开销小的原因在于,本专利技术仅需要增加一个2比特位的状态机和少量的逻辑控制,就能实现预测阶段的cfi检查和跨地址空间的检查。

本文档来自技高网...

【技术保护点】

1.一种防御前向幽灵攻击的方法,用于具有硬件CFI特性的处理器的前向幽灵攻击防御,其特征在于:所述方法将CFI机制应用到处理器流水线的预测执行阶段,利用处理器中已有的硬件CFI特性来实现高效的BTB预测地址的检查,通过维护处理器前端预测时的控制流完整性,阻止错误的预测执行,以防御前向的幽灵攻击;所述方法还通过跟踪间接跳转指令预测执行过程的状态机和lfence指令来防御跨地址空间的前向幽灵攻击;包括以下方法;

2.根据权利要求1所述的一种防御前向幽灵攻击的方法,其特征在于:所述方法A中,根据槽位来区分不同指令的合法跳转目标集合,所述方法对BTB预测地址按以下规则进行约束;

3.根据权利要求2所述的一种防御前向幽灵攻击的方法,其特征在于:当根据槽位匹配规则来检测BTB的跳转目标地址是否正确时,call、jmp指令在译码阶段根据其指令地址索引BTB,得到跳转目标地址,再根据跳转目标地址取出目标地址指令;

4.根据权利要求1所述的一种防御前向幽灵攻击的方法,其特征在于:方法B中,为了控制目标集合的槽位,在程序的编译过程中生成控制流图CFG,然后为这些目标集合分配槽位并添加汇编伪指令org,该指令能够将下一条指令填充至指定位置;槽位分配能够从0开始依次分配,也能随机分配。

5.根据权利要求2所述的一种防御前向幽灵攻击的方法,其特征在于:方法C用于解决跨地址空间的前向幽灵攻击问题;所述有限状态机用于跟踪间接跳转指令预测执行过程,其执行时的状态包括空闲、等待和插入lfence;具体为:初始状态下,状态机处于空闲状态,并保持该状态直到间接跳转指令被执行时,状态机才进入等待状态;在等待状态下,如果处理器执行的下一条指令为ENDBRANCH指令,则回到空闲状态,即执行槽位匹配规则一;如果不是,则可能发生了同地址空间内的前向幽灵攻击或者发生了进程切换,为了防御跨地址空间的攻击,此时插入lfence指令,防止使用错误的预测地址。

6.根据权利要求2所述的一种防御前向幽灵攻击的方法,其特征在于:所述方法用于不关闭预测执行的处理器,结合硬件CFI机制来在预测取指阶段判断目标地址指令是否为ENDBRANCH、判断两条指令的槽位是否匹配,即检查BTB预测地址是否正确。

7.根据权利要求2所述的一种防御前向幽灵攻击的方法,其特征在于:所述不关闭预测执行的处理器,其包括用于预测阶段的CFI检查和跨地址空间的检查的硬件,具体为一个2比特位的状态机和对应的逻辑控制单元。

...

【技术特征摘要】

1.一种防御前向幽灵攻击的方法,用于具有硬件cfi特性的处理器的前向幽灵攻击防御,其特征在于:所述方法将cfi机制应用到处理器流水线的预测执行阶段,利用处理器中已有的硬件cfi特性来实现高效的btb预测地址的检查,通过维护处理器前端预测时的控制流完整性,阻止错误的预测执行,以防御前向的幽灵攻击;所述方法还通过跟踪间接跳转指令预测执行过程的状态机和lfence指令来防御跨地址空间的前向幽灵攻击;包括以下方法;

2.根据权利要求1所述的一种防御前向幽灵攻击的方法,其特征在于:所述方法a中,根据槽位来区分不同指令的合法跳转目标集合,所述方法对btb预测地址按以下规则进行约束;

3.根据权利要求2所述的一种防御前向幽灵攻击的方法,其特征在于:当根据槽位匹配规则来检测btb的跳转目标地址是否正确时,call、jmp指令在译码阶段根据其指令地址索引btb,得到跳转目标地址,再根据跳转目标地址取出目标地址指令;

4.根据权利要求1所述的一种防御前向幽灵攻击的方法,其特征在于:方法b中,为了控制目标集合的槽位,在程序的编译过程中生成控制流图cfg,然后为这些目标集合分配槽位并添加汇编伪指令org,该指令能够将下一条指令填充至指定位置;...

【专利技术属性】
技术研发人员:许奇臻阮丽婷杜侠肖蕾朱顺痣
申请(专利权)人:厦门理工学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1