研究员发现Spectre漏洞新分支
威廉玛丽学院,卡内基梅隆大学,加州大学河滨分校和宾厄姆顿大学的研究人员已经描述了一种安全攻击,它利用现代处理器的推测执行功能来泄漏敏感信息并破坏操作系统和软件直立的安全边界 保护重要数据。这可能听起来很熟悉。
2018年早些时候发布的Spectre攻击利用了现代处理器的推测执行功能来泄漏敏感信息。 由研究人员命名为BranchScope的新攻击与Spectre攻击的变体2有一些相似之处,因为BranchScope和Spectre 2都利用了处理器分支预测器的行为。
通过推测性执行,处理器在程序实际运行之前运行,并且在可以确定这些指令是否真正运行之前尝试执行指令。 例如,如果一个程序测试两个数字是否相等,并且如果它们是一样就做一件事,如果不是,则处理器会猜测结果并推测执行所产生的动作。 如果后来证明处理器猜测错误,那么投机结果就会被抛弃,至少在抽象意义上,就好像猜测从未发生过。 处理器从停止的地方开始,执行应该采取的操作。整体而言,幽灵攻击事件是由于处理器没有把事情回复到原来的样子。虽然处理器确实恢复了它的推测性执行 – 如果没有,程序会停止正常工作 – 它并不完美。当涉及到处理器的高速缓存时,这一点尤为明显:推测性执行可能导致处理器将数据加载到高速缓存中(或者,或者从高速缓存中逐出数据),即使进行了糟糕的推测,这些高速缓存更改也会持续存在。仔细编写的软件可以检测到这些缓存更改并使用它们来推断机密信息。
处理器的分支预测器是其投机执行机构的核心部分之一。虽然最新处理器中的分支预测器非常复杂,但从广义上讲,它们的操作方式相似。处理器跟踪分支指令的地址,分支是否被采用,以及分支是否被采用,应该执行的下一条指令的地址 – 即分支的目标。分支预测器提供了两个相关的预测:分支是否被采用,以及是否采用,目标是什么。
PHT保留最近采取的分支的一种运行得分,以记住这些分支是否被采用。通常情况下,这是一个两位计数器,有四种状态:强力拍摄,弱拍,弱拍不拍,强拍不拍。每次采取分支时,计数器的值将移向“强烈采取”。每次没有采取,它都会转向“强烈不被采取”。这种设计意味着偶然的误预测不会改变预测的结果:即使偶尔没有实际采用,几乎总是采用的分支仍然会预测为已采用。改变预测需要两次背靠背错误预测。这种设计被证明可以提供比一位计数器更好的结果,该计数器根据上次发生的情况简单预测分支。
与Spectre 2一样,目前还不清楚有多少软件真的容易受到BranchScope攻击。 在这两种情况下,攻击者都需要能够在受害者系统上运行代码,所以这些攻击永远不会用于初始进入系统。 然而,他们所做的事情表明,长期以来被认为存在的隔离边界被高性能处理器必不可少的推测性执行硬件所渗透。 而且,BranchScope表明,Specter不是通过这种投机性执行可以被利用的唯一途径。基本上,处理器包含许多推测执行可修改的内部状态(包括寄存器,缓存,分支预测器,存储缓冲区等)。架构状态 – 由处理器发布的文档说明直接暴露和操纵的部分 – 由推测硬件正确保存。像Spectre和BranchScope这样的攻击存在是因为非体系结构状态 – 代表处理器的实现细节的部分,这些细节可能会从家族变为家族,并且不能直接被程序访问 – 并未完全保留。推测性执行(以及它所依赖的非体系结构状态)旨在无形地发生,并且没有迹象表明正在运行的程序正在发生。
像Spectre 2和BranchScope这样的攻击是结果。研究人员可能需要数年的时间才能确定以这种方式使用投机执行硬件来泄漏信息的各种方式,而在强大的通用防御措施可用于阻止攻击之前,这种方法将持续更长的时间。
相关文章
- 1条评论
性许鸢旧2022-06-06 15:27:35
- ,目前还不清楚有多少软件真的容易受到BranchScope攻击。 在这两种情况下,攻击者都需要能够在受害者系统上运行代码,所以这些攻击永远不会用于初始进入系统。 然而,他们所做的事情表明,长期以来