[论文解读] Speculose: Analyzing the Security Implications of Speculative Execution in CPUs
该论文介绍了 Speculose,这是对现代 CPU 中推测执行的首次全面分析,揭示了未提交的推测执行所引发的侧信道泄漏可被利用以绕过内核和用户空间的 ASLR。通过观察缓存状态和流水线刷新时间,攻击者可以检测到映射的内核页,并在 Linux 上不到三秒、在 Windows 10 上不到一秒内破坏 KASLR。
Whenever modern CPUs encounter a conditional branch for which the condition cannot be evaluated yet, they predict the likely branch target and speculatively execute code. Such pipelining is key to optimizing runtime performance and is incorporated in CPUs for more than 15 years. In this paper, to the best of our knowledge, we are the first to study the inner workings and the security implications of such speculative execution. We revisit the assumption that speculatively executed code leaves no traces in case it is not committed. We reveal several measurable side effects that allow adversaries to enumerate mapped memory pages and to read arbitrary memory---all using only speculated code that was never fully executed. To demonstrate the practicality of such attacks, we show how a user-space adversary can probe for kernel pages to reliably break kernel-level ASLR in Linux in under three seconds and reduce the Windows 10 KASLR entropy by 18~bits in less than a second.
研究动机与目标
- 调查现代 CPU 中推测执行的安全影响,尽管其在性能上至关重要,但长期以来被忽视。
- 挑战推测执行即使在指令未被提交时也不会留下可观测副作用的假设。
- 展示如何利用推测执行中的侧信道来破坏内核和用户空间地址空间布局随机化(ASLR)。
- 分析利用推测执行访问受保护内存区域(包括内核内存)而不触发传统保护机制的可行性。
- 使用通用硬件和真实操作系统(如 Linux 和 Windows 10)评估此类攻击的实用性。
提出的方法
- 逆向工程 CPU 行为,以分析现代 x86 和 ARM 处理器中的分支预测和推测执行机制。
- 识别出两种主要的侧信道:缓存状态变化和推测执行期间指令流水线刷新时间的差异。
- 设计并实现了利用推测执行探测内存页而不提交指令的攻击。
- 利用页面错误(停顿)与访问违规(结果为零)之间的区别,区分映射与未映射的内核页。
- 使用时间测量和缓存探测技术,检测虚拟内存页是否在内核空间中映射。
- 在真实系统(Ubuntu 16.04、Windows 10)上使用通用硬件评估攻击,以验证性能和可靠性。
实验结果
研究问题
- RQ1现代 CPU 中的推测执行是否能通过可观测的副作用泄露信息,即使执行的指令从未被提交?
- RQ2非特权用户空间攻击者在多大程度上可利用推测执行绕过内核级内存保护机制(如 KASLR)?
- RQ3允许从推测执行中窃取数据的可测量侧信道是什么,以及如何可靠地利用它们?
- RQ4推测执行如何影响用户空间和内核空间内存布局中 ASLR 的安全保证?
- RQ5能否利用推测执行区分映射与未映射的内存页?如果是,此类攻击的性能特征是什么?
主要发现
- 即使指令未被提交,推测执行仍可通过缓存状态变化和流水线刷新时间差异泄露数据。
- 攻击者可通过观察访问违规(对未映射页)导致推测执行停顿,而有效访问不会停顿,来检测映射的内核页。
- 作者仅使用用户空间代码,在不到三秒内成功破坏了 Ubuntu 16.04 上内核版本 4.13.0 的内核 ASLR。
- 在 Windows 10 上,该攻击在不到一秒内将 KASLR 的熵减少了 18 位,显著削弱了内核地址随机化。
- 推测执行不允许直接读取内核内存,因为违规访问的读取会被清零,但这种行为创造了用于检测页面映射的可靠侧信道。
- 该攻击在通用硬件上具有可行性,且早于 Meltdown 和 Spectre 的公开披露,表明推测执行侧信道在广泛认知之前已是已知威胁。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。