Exploring Branch Predictors for Constructing Transient Execution Trojans(木马)
1. 摘要:
- 针对于幽灵攻击,工业界迅速采取了一系列软件和硬件上的缓解措施,其中微码补丁最为流行和受信任(microcode patch)
- 问题:现有的防护策略仍旧存在被攻击的漏洞
- 论文工作:
- 提出了暂态木马(transient trojans),即一种软件模块会在暂态执行模式中隐藏自身的恶意活动。这些木马看起来完全正常,能够通过静态/动态的分析检查,但是在被触发后能够获取隐私数据
- 论文根据推荐的缓解技术对当今系统中存在的攻击面进行了详细的分析,以构建这些暂态木马
- 论文对一些最新的x86-64处理器中的转移预测器进行了逆向工程,以发现以前未知的可能的攻击方法。根据这些发现,论文构造了三种类型的暂态木马,并证明了他们的隐身性和使用性
2. 介绍:
-
暂态执行攻击,包括meltdown和spectre,能够利用处理器中的一些性能优化策略,例如转移预测,迫使受害者程序通过在一些微体系结构中留下可被检测的踪迹来泄露隐私数据。这些攻击能够违反内存安全的最基本原则,包括用户-内核隔离。
-
已有的抵御暂态执行攻击的策略:
- 串行化指令
- 避免危险代码序列
- 刷新硬件数据结构
- 限制推测执行(safespec,invisiSpec)
- 禁止微体系结构的隐蔽信道
- 硬件制造商Intel&AMD使用一系列的微码更新来应对攻击,但是会产生明显的性能下降
-
论文工作:提出暂态木马,能够隐藏在暂态执行模式下的恶意功能的软件模块
- 对处理器中的转移预测器进行逆向工程,发现了一些新的分支冲突触发技术(branch collision triggering technologies)(间接转移预测)。这些技术是的轻便(portable,可移指)的,独立的木马能够包含在敏感的软件中,例如恶意的开源代码中
- 构建软件模块,将所有攻击组件封装在一个进程中
-
暂态木马中的在暂态执行模式下的恶意功能并不会在软件代码中引起注意,并且能够通过严格的安全检查,例如:
-
符号执行
-
污点分析,taint analysis( Dytan: a generic dynamic taint analysis framework )
-
模型检查
-
传统的检查软件后门的策略:
- Backdoor detection system using artificial neural network and genetic algorithm
- Towards reducing the attack surface of software backdoors.
- Firmalice-Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware
- HumIDIFy: a tool for hidden functionality detection in frmware.
- Static detection of application backdoors
-
已有的幽灵检测工具:
- oo7: Low-overhead Defense against Spectre attacks via Program Analysis
- SPECTECTOR: Principled Detection of Speculative Information Flows.
- Detecting Spectre vulnerability exploits with static analysis
- LWN.net: Finding Spectre vulnerabilities with smatch
-
-
论文认为,当今几乎所有CPU中普遍存在的暂态执行很自然的适合隐藏恶意代码,因为它提供的执行模式对于现有的二进制和源码分析技术来说是完全不可见的
-
论文贡献:
- 论文对BPU进行了逆向工程研究,发现了负责间接转移预测的机制和操纵方式。基于这些发现,论文依赖于不同的BPU异常,构造了三种类型的木马
- 论文提出了一种基于前期BPU访问的新的分支指令冲突机制。该机制允许攻击者构建木马,并且可以避免被检测到。其次该机制允许创建小型,便携的木马
- 论文提出