幽灵安全漏洞

什么是幽灵安全漏洞?

null

幽灵 是一个安全漏洞,影响所有使用分支预测和推测操作等机制的现代处理器。 幽灵攻击涉及诱使受害者推测性地执行在正确的程序执行过程中不会发生的操作,并通过旁道将受害者的机密信息泄露给对手。这还会暴露受保护的内存空间,从而允许恶意代理访问数据,甚至修改数据。它是在同一时间被发现的 熔毁脆弱性 .

什么是分支预测和推测作用机制?

  • 预测分支: 分支预测技术允许处理器通过将指令转换为谓词逻辑来加速流水线处理器中的执行。因此,只执行谓词为true的指令。这允许CPU避免检查每个分支的执行情况。
  • 投机执行: 推测执行和分支预测是无序执行的一个组成部分,用于在基于管道的微处理器中加速执行。我们从前面的定义中了解到,分支预测用于确定在条件跳转的情况下将执行哪个指令。投机行为更进一步。它确定执行下一条指令的结果。如果分支预测正确,则使用结果,否则,将丢弃该结果。

幽灵脆弱性是如何工作的?

幽灵漏洞有两种工作方式: 1.当地开发: 在这种情况下,恶意代理位于计算机本身。以下是发生的步骤:

  1. 它操纵进程来执行一条永远不会执行的指令
  2. 当CPU评估执行的指令时,它会放弃计算。
  3. 但是,缓存的扩展大小不会恢复。
  4. 通过简单地查找缓存,就可以推断出缓存中的内容及其实际内存位置,从而将它们暴露给恶意程序

2.远程利用: 在这种情况下,恶意代理通过Javascript工作。脚本恶意软件可以访问浏览器映射的所有内存。采取以下步骤:

  1. 由于javascript中的数组内存是使用LRU策略维护的,因此必须通过对大型数据集进行增量读取来刷新缓存。
  2. 然后,通过使用位操作在非常大的数据集上迭代,将索引设置为范围内的值,然后使用越界地址进行最终迭代,分支预测器将被误训练。
  3. 通过使用逐位操作来设置范围内的值,在大型数据集上进行迭代,并在最后一次迭代中使用越界地址,分支预测器可能会出现错误
  4. 定时读取使脚本能够读取位置

正在采取哪些缓解措施?

这一安全问题的发现导致许多预防和缓解措施有待开发。不同的处理器和软件供应商通过以下方式解决了这个问题:

  1. 2018年3月,英特尔为Spectre开发了硬件修复程序。新的分区系统改善了进程和权限级别的分离,从而缓解了这些漏洞。
  2. 微软的做法是隔离内核和用户页面表。它还设计了新的CPU指令(与Windows兼容),消除了分支猜测。
  3. Chrome 64默认包含针对攻击的缓解措施。Chrome 63用户可以通过启用站点隔离功能手动缓解攻击(chrome://flags#enable-每个过程的站点)
  4. 谷歌创造了一种名为“Retpoline”的新技术,它涉及编译器级别的间接分支转向不同的目标,而不会导致易受攻击的推测性无序执行。
  5. Mozilla正在降低JavaScript定时器的分辨率,以帮助防止定时攻击,并计划在未来的版本中增加时间模糊技术。

然而,需要注意的是,软件补丁的引入导致了严重的性能问题,尤其是在旧计算机上。此外,即使是较新的英特尔芯片,也有不必要的重新启动的报道。

参考资料: https://en.wikipedia.org/wiki/Spectre_(安全漏洞)

https://www.csoonline.com/article/3247868/vulnerabilities/spectre-and-meltdown-explained-what-they-are-how-they-work-whats-at-risk.html

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享