[论文解读] SMoTherSpectre: exploiting speculative execution through port contention
SMoTherSpectre 提出了一种推测执行攻击,利用同时多线程(SMT)处理器中的端口争用作为非缓存侧信道,从用户空间应用程序泄露秘密信息。该研究在无需攻击者提供代码的情况下,成功针对 OpenSSH 和 OpenSSL 实施了实际攻击,证明了仅依赖缓存侧信道防护措施不足以应对此类侧信道攻击。
Spectre, Meltdown, and related attacks have demonstrated that kernels, hypervisors, trusted execution environments, and browsers are prone to information disclosure through micro-architectural weaknesses. However, it remains unclear as to what extent other applications, in particular those that do not load attacker-provided code, may be impacted. It also remains unclear as to what extent these attacks are reliant on cache-based side channels. We introduce SMoTherSpectre, a speculative code-reuse attack that leverages port-contention in simultaneously multi-threaded processors (SMoTher) as a side channel to leak information from a victim process. SMoTher is a fine-grained side channel that detects contention based on a single victim instruction. To discover real-world gadgets, we describe a methodology and build a tool that locates SMoTher-gadgets in popular libraries. In an evaluation on glibc, we found hundreds of gadgets that can be used to leak information. Finally, we demonstrate proof-of-concept attacks against the OpenSSH server, creating oracles for determining four host key bits, and against an application performing encryption using the OpenSSL library, creating an oracle which can differentiate a bit of the plaintext through gadgets in libcrypto and glibc.
研究动机与目标
- 探究推测执行攻击是否能够通过利用其他微体系结构侧信道(如端口争用)绕过传统的基于缓存的侧信道防护机制。
- 证明 SMT 处理器中的端口争用可作为推测执行期间信息泄露的细粒度、高效侧信道。
- 开发一种方法论和工具,用于自动发现广泛使用的库(如 glibc 和 libcrypto)中可利用的代码小工具(SMoTher-gadgets)。
- 构建端到端的 PoC 攻击,针对真实世界的服务(如 OpenSSH 和 OpenSSL),仅使用现有代码而无需注入攻击者代码。
- 表明仅通过回滚推测状态或缓解缓存侧信道的架构防御措施,对基于端口争用的侧信道攻击无效。
提出的方法
- 利用同时多线程(SMT)在共享执行单元上制造受害者线程与攻击者线程之间的受控端口争用。
- 使用分支目标注入(BTI)将推测执行重定向到现有二进制文件中的良性代码路径,从而在不注入代码的情况下实现信息泄露。
- 采用一种新颖的侧信道机制,通过测量因端口争用导致的性能下降来推断受害者指令的执行情况。
- 开发一种小工具发现工具,对二进制文件进行静态分析,以定位在推测执行时会引起可测量端口争用的指令序列。
- 通过观察端口争用的定时差异构建预言机,以推断秘密位——例如 OpenSSH 中的 RSA 密钥位或 OpenSSL 加密过程中的明文位。
- 在 OpenSSH 和 OpenSSL 的最新版本上验证了该攻击,成功实现了无需目标代码中存在已知漏洞的位级信息泄露。
实验结果
研究问题
- RQ1是否可以不依赖基于缓存的侧信道,而通过其他微体系结构侧信道(如端口争用)实施推测执行攻击?
- RQ2SMT 处理器中的端口争用在推测执行期间作为细粒度侧信道用于信息泄露的程度如何?
- RQ3在 glibc 和 libcrypto 等广泛使用的库中,是否存在可用于通过端口争用泄露秘密的可利用代码序列(小工具)?
- RQ4是否可以仅使用现有代码且不注入代码,针对 OpenSSH 和 OpenSSL 等真实世界服务实施实际攻击?
- RQ5现有的防御措施(如内核页表隔离或推测状态回滚)是否对基于端口争用的侧信道有效?
主要发现
- SMT 处理器中的端口争用可作为精确且高效的推测执行攻击侧信道,且与缓存行为无关。
- 在 glibc 中发现了数百个可利用的 SMoTher-gadgets,表明此类攻击在常见用户空间库中具有广泛潜在影响。
- 一个 PoC 攻击成功仅通过端口争用和 BTI 泄露了 OpenSSH 主机 RSA 密钥的四位,而无需依赖存在漏洞的代码模式。
- 另一个 PoC 攻击通过利用 libcrypto 和 glibc 中的小工具,成功实现了 OpenSSL 加密过程中明文数据的位级泄露。
- 即使缓存侧信道已被缓解,该攻击依然有效,表明仅依赖缓存侧信道缓解的防御措施不足以应对基于端口争用的侧信道攻击。
- 本研究揭示,仅通过回滚推测状态的架构防御措施对基于端口争用的侧信道无效,因为信息泄露发生在推测执行完成之前。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。