A Systematic Evaluation of Transient Execution Attacks and Defenses (对暂态执行的攻击和防御的系统评估)(第五节)

A Systematic Evaluation of Transient Execution Attacks and Defenses (对暂态执行的攻击和防御的系统评估)(第五节)

  1. 针对幽灵和熔断的防御措施
    • 针对幽灵的防御措施
      • 减轻或降低用于提取秘密数据的隐蔽信道的准确性
      • 如果数据在暂态执行过程中会被访问,则减少或者终止推测执行
      • 确保隐私数据不会被接触到
    • 针对熔断的防御措施
      • 确保在体系结构上不可访问的数据在微观体系结构级别上仍然不可访问
      • 防止fault的发生
  2. (幽灵)减轻或降低用于提取秘密数据的隐蔽信道的准确性
    • (硬件)SafeSpec:暂态执行时使用影子硬件结构保存所有执行过程中的信息,当发现推测错误时将所有微架构状态压缩。原型中只包括了cache和tlb,其它信道仍然可用
    • (硬件)InvisiSpec:保证暂态执行过程中的load不会在cache中可见。增加推测缓冲区,所有暂态执行中的load都加载到该缓存区中。如果预测错误,缓冲区无效;如果正确将缓冲区的内容加载到实际cache中(会涉及存储一致性的问题,如果发现buffer中load的数据和cache中最新的数据不一致,此时需要重新做)
    • (硬件)DWAG是一种cache的安全分区的方法,通过引入在缓存命中,丢失和元数据级别的隔离保护域,基于cache的隐蔽信道能够得到缓解。(更改缓存,适应cache的一致性协议,在软件上正确的管理保护域)
    • (硬件)Kocher提出通过改变污染跟踪来限制数据进入隐蔽信道。主要思想:跟踪在暂态执行期间load的数据,并且防止在可能泄露数据的后续操作中使用这些数据
    • (软件)隐蔽信道攻击大多需要一个精确的定时器来区分微架构状态,例如cache hit/miss。因此可以通过使得定时器的精度降低以减少泄露的信息。(有论文提出定时器可以利用许多种不同的方式构建出来)
    • (软件)针对于NetSpectre攻击,有论文体出使用DDos检测机制来减轻攻击,此时攻击者必须发送数千个相同的数据包。另一种方式是在网络延迟中加入人工噪声
  3. (幽灵)如果数据在暂态执行过程中会被访问,则减少或者终止推测执行
    • (软件)增加FENCE指令。第一种是在分支的两个目的指令之前加入IFENCE之类的串行指令,但是严重降低性能。改进:使用静态分析来最小化引入的FENCE指令的个数。FENCE指令也可以减少间接分支指令所带来的影响。通过在分支之前增加FENCE指令,加快分支指令的解决时间。问题:虽然增加FENCE指令停止了推测式执行,但是推测式的code fetches和一些其它微架构行为(执行之前的)
    • (软件)有论文提出软件开发者可以指示某些分支将会泄露敏感数据,此时处理器不应该预测分支结果,而进行推测执行
    • (软件)“You Shall Not Bypass"方法利用处理器的一种检查指令之间的数据相关的机制,并且对分支指令的比较参数引入这种依赖关系,只有当分支的参数都是寄存器或者L1 cache时(很快可以获取到)时才会启动load,此时推测执行的窗口将会非常小,以致于无法利用
    • (软件)Google提出了一种repoline的方法,使用返回指令替代间接分支指令,从而防止分支带来的问题**(不太懂)**
    • (软件)SSBD:store buffer bypass disable。阻止处理器推测的检查store buffer。类似的还有SSBS (speculative store bypass safe),arm提出的用于阻止loads和stores的乱序
    • (软件)为了防止RSB填充不足和之后的回退到BTB,intel提出对RSB进行填充。每当上下文切换到kernel时,RSB将会被用一个良性的小工具的地址填充,该工具的功能类似于retpoline
    • (硬件)为了防止分支的误训练(mistraining),intel和AMD扩展了ISA以控制间接分支(包括条件分支)指令
      • IBRS(间接分支指令限制推测)阻止当前级别的间接分支的执行不会收到更低级别的影响
      • STIBP(单线程间接分支预测器)保证在执行过程中,分支预测器不会被共享
      • IBPB(间接分支预测器栅栏)通过刷新BTB,防止在栅栏之前执行的代码影响之后的分支预测
    • (硬件)ARM在v8.5-A指令集中,引入了新的栅栏指令限制之后的指令的推测执行。同时新的控制寄存器允许限制推测执行,新的预测控制指令可以阻止控制流预测、数据值预测或者缓存预取预测
    • (硬件)SLoth方法用于限制store-to-load之间的前递,包括三个微架构防御措施。
      • SLoth Bear通过微代码更新,阻止从暂态执行的Store传递数据或者传递到暂态执行中的load
      • SLoth 利用编译器将指令标记为前递的候选指令
      • Arctic SLoth 动态检查load和store对,以确定转发的候选项
  4. (幽灵)确保隐私数据不会被接触到
    • Google提出了网站隔离。网站隔离在自己的进程中执行每个网站,因此限制了暴露域侧信道攻击的数据量,因为只能够从自己的进程中读取数据
    • Kiriansky提出了使用保护键值的方式限制访问敏感数据,该方式类似于intel的MPK技术。为了防止攻击者会先修改key值,需要在会更改key值的指令之前增加FENCE指令
  5. (熔断)确保在体系结构上不可访问的数据在微观体系结构级别上仍然不可访问
  • 确保在发生错误时,执行不会继续或执行不会访问不可访问的数据
  • Gruss提的KAISER虽然不是为了解决熔断,但是它通过防止内核敏感数据映射到用户空间,从而抵挡meltdown-US攻击。
  1. (熔断)防止fault的发生
    • SGX中在从外部访问enclav内存储时,会返回-1而不产生fault,从而避免了Meltdown-US的攻击,但是确防止布料meltdown-P的攻击
    • 针对于FPU的meltdown-NM攻击,选择在切换上下文时,立即保存FPU的状态,从而能够避免攻击
  2. 防御手段的评估
    在这里插入图片描述
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值