Skip to main content
QUICK REVIEW

[论文解读] SpectreRewind: Leaking Secrets to Past Instructions

Jacob Fustos, Michael M. Bechtel|arXiv (Cornell University)|Mar 27, 2020
Security and Verification in Computing参考文献 33被引用 8
一句话总结

SpectreRewind 提出了一种新型基于竞争的隐蔽信道,用于瞬态执行攻击,该信道仅需单个硬件线程即可运行,利用浮点除法单元的竞争而非基于缓存的技术。其性能极高(约 100 KB/s),噪声极低(错误率 <0.01%),可在 Meltdown 攻击及 Chrome JavaScript 沙箱环境中实现有效数据外泄,从而绕过依赖于回滚微体系结构状态变化的防御机制。

ABSTRACT

Transient execution attacks utilize micro-architectural covert channels to leak secrets that should not have been accessible during logical program execution. Commonly used micro-architectural covert channels are those that leave lasting footprints in the microarchitectural state, for example, a cache state change, from which the secret is recovered after the transient execution is completed. In this paper, we present SpectreRewind, a new approach to create contention based covert channels for transient execution attacks. In our approach, a covert channel is established by issuing the necessary instructions logically before the transiently executed victim code. Unlike prior contention based covert channels, which require simultaneous multi-threading (SMT), SpectreRewind supports single hardware thread based covert channels, making it viable on systems where attacker cannot utilize SMT. We show that contention on the floating point division unit on commodity processors can be used to create a high-performance (~100 KB/s), low-noise covert channel for transient execution attacks instead of commonly used flush+reload based cache covert channels. We implement a Meltdown attack utilizing the proposed covert channel showing competitive performance compared to the stateof-the-art cache based covert channel implementation. We also show that the covert channel works in the JavaScript engine of a Chrome browser.

研究动机与目标

  • 解决现有瞬态执行攻击的局限性,即需要同时多线程(SMT)才能利用基于竞争的隐蔽信道。
  • 开发一种可在单线程执行上下文中运行的隐蔽信道,使其在 SMT 被禁用或不可用的系统中依然可行。
  • 证明功能单元竞争——特别是浮点除法单元上的竞争——可作为高性能、低噪声的微体系结构隐蔽信道。
  • 将隐蔽信道集成到真实世界攻击场景中,包括 Meltdown 类型的利用和浏览器中的 JavaScript 沙箱。
  • 评估该信道在绕过依赖于状态回滚或隐藏瞬态微体系结构变化的硬件防御机制方面的有效性。

提出的方法

  • 作者通过将发送方和接收方指令在逻辑上置于瞬态执行触发器之前,构建攻击,从而在乱序执行核心上实现并发执行。
  • 他们利用主流 Intel、AMD 和 ARM 处理器中的浮点除法单元竞争作为隐蔽信道的物理介质。
  • 该方法通过指令执行时间差异来编码和解码秘密数据,其原理与 flush+reload 类似,但基于功能单元竞争而非缓存状态。
  • 该隐蔽信道被集成到 Meltdown 的概念验证中,展示了从特权内存区域端到端的数据外泄。
  • 通过在 Google Chrome JavaScript 引擎沙箱中实现该信道,验证了其在真实世界环境中的可行性。
  • 通过受控实验测量性能和噪声,将传输速率和错误率与传统的基于缓存的信道进行对比。

实验结果

研究问题

  • RQ1能否在单线程执行上下文中,利用功能单元竞争建立高性能、低噪声的隐蔽信道?
  • RQ2该信道是否可用于在推测执行指令被丢弃前外泄秘密信息?
  • RQ3所提出的信道是否能绕过依赖于回滚或隐藏微体系结构状态变化的硬件防御机制?
  • RQ4该隐蔽信道能否在基于浏览器的 JavaScript 沙箱环境中有效部署?
  • RQ5基于功能单元的信道在性能和可靠性方面与传统的 flush+reload 基于缓存的隐蔽信道相比如何?

主要发现

  • SpectreRewind 在单线程环境中成功建立了一个高性能隐蔽信道,数据泄露速率高达 100 KB/s。
  • 该信道表现出极低的噪声,错误率低于 0.01%,与最先进的基于缓存的 flush+reload 信道相当。
  • 该技术能够在推测执行指令被丢弃前实现数据外泄,从而绕过依赖于状态回滚或隐藏的防御机制。
  • 该隐蔽信道在 Google Chrome JavaScript 沙箱中可正常运行,证明了其在真实世界浏览器攻击场景中的可行性。
  • 该方法在主流的 Intel、AMD 和 ARM 处理器上均有效,表明其在现代架构中的广泛适用性。
  • 该方法证明,功能单元竞争——特别是浮点除法单元上的竞争——可作为基于缓存的隐蔽信道的可行且高性能的替代方案。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。