GoFetch:人们会永远学习吗?

  • 上个月研究人员报告称苹果 M1 芯片上的数据内存依赖预取器(DMP)可用于破解加密,且有迹象表明类似攻击在英特尔芯片上可能也可行。触发预取器会大大降低访问延迟,即导致泄漏(来自 GoFetch 论文)。研究人员发现,任何(64 位)对齐的数据字,其值与自身地址的[53:32]位匹配,都会被 DMP 视为指针,然后 DMP 推测性地取消引用该假定指针并将目标字加载到(共享)L2 缓存中。名为 GoFetch 的攻击非常巧妙:通过向加密过程提供特定数据(明文),并使用“prime&probe”观察 L2 状态,可根据 DMP 是否预取来确定密钥的位。

    • 该机制已知会造成安全问题,但因未展示实际攻击而未被重视,如两年前的 Augury 工作表明 DMP 会导致内存内容泄露,但相关方未在意。这是整个社区和行业的一贯否认模式,一些学者指出问题但系统未被实际黑客攻击就忽视。作者曾担心利用微架构进行隐蔽通道,并提出“时间保护”方法来系统地防止。只有 Spectre 攻击改变了这种情况,Spectre 利用推测执行从无辜代码中的组件构造特洛伊木马,然后利用隐蔽通道提取信息。重视安全意味着要主动处理问题,而不是等出问题了才行动。
    • 时间保护(如给 L2 缓存着色)能有效关闭通道,其核心思想是在安全域之间空间或时间上划分任何内容的微架构资源,对于 GoFetch 攻击中的 L2 缓存,可在并发进程之间划分,这样攻击者只能影响自己的缓存分区,prime&probe 攻击就会失败。当代处理器无法实现完全的时间保护,因为缺乏重置所有无法空间划分的微架构状态的机制,但 ETH 苏黎世的合作者证明添加这样的机制很容易且成本低。
    • 人们不断为特定攻击发明临时解决方案,如推测污点跟踪,虽能阻止某些攻击但会使硬件更复杂且易出错,而 GoFetch 论文的作者也落入此陷阱,提出通过在硬件 - 软件接口暴露 DMP 来处理攻击,作者主张改进硬件 - 软件合同应是最小化和高级别的,如识别可空间划分的资源及重置无法空间划分的所有微架构资源的机制。
    • OpenSSL 维护者的一些惊人言论,他们称本地侧信道攻击不在其威胁模型内,这意味着如果机器上有任何不可信代码,OpenSSL 就不适用,包括云服务、手机、笔记本电脑甚至汽车等,这令人震惊。
  • 总结:研究发现苹果 M1 芯片的 DMP 可用于破解加密,时间保护可阻止此类攻击,人们应重视安全主动处理问题,而不是发明临时解决方案,OpenSSL 维护者的言论也引发了对安全的担忧,目前是否有人在意这些问题尚不明确。
阅读 13
0 条评论