操作系统/虚拟化安全知识域:攻击者模型
发布时间:2023-02-22 15:19:58 所属栏目:安全 来源:
导读:攻击者也会利用硬件上的漏洞进行攻击,例如许多DRAM芯片中存在的Rowhammer错误。由于内存芯片中的位是按行组织并非常紧密地打包在一起的,因此访问一行中的位可能会导致相邻位中的相邻位,将少量电荷泄漏到其电容器上
攻击者也会利用硬件上的漏洞进行攻击,例如许多DRAM芯片中存在的Rowhammer错误。由于内存芯片中的位是按行组织并非常紧密地打包在一起的,因此访问一行中的位可能会导致相邻位中的相邻位,将少量电荷泄漏到其电容器上-即使该位位于内存中完全不同的页面中。通过高频(“锤击”)反复访问该行,干扰会累积,因此在某些情况下,相邻位可能会翻转。我们事先不知道连续哪个位(如果有的话)会翻转,但是一旦一个位翻转,如果我们重复实验,它会再次翻转。如果攻击者成功翻转内核内存中的位置,他们就会启用类似于基于软件的内存损坏的攻击。例如,损坏页表以获取对其他域内存的访问权限。 另一类攻击是并发错误和双重获取。双重获取对于操作系统来说是一个重要的问题,当它两次使用用户空间中的值时就会发生(例如,大小值一次用于分配缓冲区,然后复制到该缓冲区中)。如果操作系统和攻击者之间存在争用,并且攻击者在两次访问之间更改用户空间值并使其更小,则会出现内存损坏等安全问题。它类似于检查使用时间(TOCTOU)攻击,不同之处主要在于上面修改的值被不可避免地使用了两次。 除了直接攻击之外,攻击者还可以使用侧信道间接泄漏信息,例如通过缓存侧信道。有许多变体,但常见的变体包括攻击者用自己的数据或代码填充缓存集,然后定期访问这些地址。如果任何访问明显变慢,他们将知道其他人(可能是受害者)也访问了属于同一缓存集中的数据/代码。现在假设受害者代码以秘密依赖的方式调用函数。例如,加密例程逐位处理密钥,如果位为0,则调用函数foo,如果为1,则调用bar,其中foo和bar位于不同的缓存集中。通过监控侧信道使用哪些缓存集,攻击者可以快速了解密钥。 另一个著名的硬件侧信道家族滥用投机和无序执行。为了提高性能,现代CPU可能会在上述指令完成之前提前执行指令。例如,在等待条件分支的条件被解析时,分支预测器可能会推测结果将是“分支被接受”(因为那是最后n次的结果),并推测性地执行与taken分支对应的指令。如果事实证明它是错误的,CPU将压缩推测执行指令的所有结果,以便没有任何存储存在于寄存器或内存中。但是,在微架构状态下可能仍然存在执行的痕迹(例如在指令集架构中不直接可见的缓存、TLB和分支预测器的内容)。例如,如果用户程序中的推测指令从寄存器中的内存中读取一个敏感且通常无法访问的字节,随后将其用作用户空间数组中的偏移量,该偏移量的数组元素将位于缓存中,即使一旦CPU发现寄存器中的值不应该允许访问,寄存器中的值就会被压缩。攻击者可以对数组中每个元素的访问进行计时,并查看一个元素是否明显更快(在缓存中)。该元素的偏移量将是机密字节。换句话说,攻击者可以使用缓存侧通道来提取推测访问的数据。)。我们的目标是在未来几年内实现这一目标。"他说。"我们希望能够通过我们的技术和产品,帮助客户更好地管理他们的业务。" (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐