发现了两个新的严重安全漏洞,即Spectre和Meltdown。
Raspberry Pi是否容易受到幽灵和/或崩溃的影响?
发现了两个新的严重安全漏洞,即Spectre和Meltdown。
Raspberry Pi是否容易受到幽灵和/或崩溃的影响?
Answers:
根据ARM本身,Pi 4之前所有型号中使用的处理器内核都不易受到攻击。
大多数Arm处理器不受此侧通道推测机制的任何变化的影响。可以在下面找到有关Arm设计的处理器的子集的明确列表。[请参阅表格链接]
较早的Pis使用的处理器核心是:
Pi 1和零(W):ARM11
Pi 2 V1:ARM Cortex-A7
Pi 2 V1.2和Pi 3:ARM Cortex-A53
以上任何一个内核都没有被列出容易受到任何版本的攻击(实际上,根本没有列出它们,因为这些攻击没有已知的漏洞)。
的覆盆子裨4使用的Cortex-A72,其被列为容易变体1,2,图3a和4中所述是对树莓裨4易受幽灵攻击?,Raspbian包含针对这些漏洞的软件缓解措施,因此被利用的风险应该较低。其他操作系统可能没有适当的缓解措施,尽管ARM表示已为Cortex-A72发布了硬件缓解措施,但尚不清楚这是否已应用于Pi 4。
请注意,变体1和2(CVE-2017-5753和CVE-2017-5715)被称为Spectre,而变体3(CVE-2017-5754)和3a(ARM研究的相关攻击)被称为Meltdown。因此,没有人认为Pi 4之前的Raspberry Pi设备容易受到Spectre或Meltdown的影响。
我想对此提出不同的看法。
关于Meltdown,这在某些处理器中是一个非常特殊的漏洞,因此如果ARM表示Raspberry Pi中的CPU不易受攻击,则它可能会受到信任。
但是,Spectre是一个更普遍的漏洞。到目前为止,仅展示了两个变体,但我敢肯定还有更多变体。CPU中的故障是执行上下文切换时分支预测器状态没有刷新,并且分支预测器状态由分支指令地址的低位索引,并且根本没有标记。因此,即使跨越过程边界,您也可能有两个分支共享相同的分支预测变量状态。
我非常有信心,所有Raspberry Pi型号中的CPU都几乎与那里的所有其他CPU相似,因为分支预测变量只是一大堆2位饱和计数器(强采用,弱采用,弱不采用,强不采取)。该数组的索引是分支指令地址的低位,并且没有标签,并且永远不会清除此预测变量状态。
现在,如果两个分支共享相同的预测变量状态,则可以测量特定分支在最近的过去采取的方式。因此,Spectre的信息泄漏就在那里!如果您可以可靠地触发浏览器对您的密码执行一些来自JavaScript的代码分支,并测量分支经过的方式,那么您确实可以提取密码。现在这是一个极端的例子,没有人理智地以可以从JavaScript触发的方式在密码的每一位上分支,但这证明了问题所在。
不要相信ARM所说的一切。ARM的意思可能是Google开发的漏洞利用方法不适用于这些ARM CPU。这并不意味着它们将对Spectre不可侵犯。其他某种利用方式也可能起作用。
请参阅以下问题:https : //security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix,并了解其答案的含义。在浏览器中运行的恶意JavaScript代码可能会由于Spectre来衡量进程中其他分支的走出方式。甚至分支预测变量刷新指令也无法解决这个恶意的JavaScript问题,除非浏览器在运行不受信任的代码之前主动刷新分支预测变量。
幽灵将与我们在一起非常长的时间,因为使用14位作为索引的分支预测变量不会被32位地址空间的其余18位标记,因为这将需要20位(2位饱和计数器) ,18位标记),而不仅仅是2位。这会将分支预测变量的大小乘以10!我期望CPU制造商添加一条分支预测变量刷新指令,该指令甚至可以在没有特殊特权的用户空间中工作,而内核在上下文切换时可以使用它,而在用户空间中运行不受信任的JIT代码时可以使用它。这将在实践中解决大多数“幽灵”问题,但从理论上讲,并不是全部。