The complexity of modern processor architectures has given rise to sophisticated interactions among their components. Such interactions may result in potential attack vectors in terms of side channels, possibly available to user-land exploits to leak secret data. Exploitation and countering of such side channels require a detailed understanding of the target component. However, such detailed information is commonly unpublished for many CPUs. In this paper, we introduce the concept of Leakage Templates to abstractly describe specific side channels and identify their occurrences in binary applications. We design and implement Plumber, a framework to derive the generic Leakage Templates from individual code sequences that are known to cause leakage (e.g., found by prior work). Plumber uses a combination of instruction fuzzing, instructions' operand mutation and statistical analysis to explore undocumented behavior of microarchitectural optimizations and derive sufficient conditions on vulnerable code inputs that, if hold can trigger a distinguishing behavior. Using Plumber we identified novel leakage primitives based on Leakage Templates (for ARM Cortex-A53 and -A72 cores), in particular related to previction (a new premature cache eviction), and prefetching behavior. We show the utility of Leakage Templates by re-identifying a prefetcher-based vulnerability in OpenSSL 1.1.0g first reported by Shin et al. [40].
翻译:现代处理器结构的复杂性已导致其各组成部分之间复杂的相互作用。这种相互作用可能导致从侧端渠道(可能供用户-土地利用以泄露秘密数据)获取潜在的攻击矢量,可能供用户-土地利用以泄露秘密数据。对这些侧端渠道的利用和打击要求详细了解目标组成部分。然而,对于许多CPU来说,这类详细信息通常没有公布。在本文件中,我们引入了渗漏模板的概念,抽象描述具体的侧端渠道,并查明其在二进制应用中发生的情况。我们设计并实施了管道,这是从已知会造成渗漏的单个代码序列(例如,以前的工作发现)中产生通用渗漏模板的框架。 管道使用各种指示的模糊、指令的操作突变和统计分析相结合,以探索微结构优化的无记录行为,并为脆弱的代码输入创造充分的条件,如果持有这些条件,可以引发一种截然不同的行为。我们用管道确定了基于渗漏模板(ARM Cortex-A53和-A72核心)的新渗漏原始原始原始线索,特别是与披露前的易流失行为(通过披露前的惯性)相比,通过披露前的惯性驱逐,展示了公开性示范。