目录
一、预取侧信道简介
硬件数据预取器可以通过在当前执行之前提前获取数据来提高CPU性能。这是通过跟踪软件执行的内存访问模式并重用它们来预测未来访问的方式实现的。如果预取器成功地预测了软件的访问模式,那么在下次运行代码时,数据将在缓存中可用,访问时间将大大减少。可检测模式的复杂性因预取器类型而异。
硬件预取器是一种共享资源,因此,如果不采取预防措施(如在上下文切换期间刷新或按上下文标记),它们可能存在安全风险。共享资源的安全问题包括:
- 冲突,导致侧信道
- “状态污染”,其中一个上下文使用另一个上下文创建的状态,这可能导致侧信道(预测泄漏)或注入攻击(利用性控制)
cache侧信道是由冲突引起的安全问题的一个例子。分支预测器可能同时受到冲突和状态污染的影响;两者都可能导致分支预测器侧信道,但状态污染还引入了更高风险的漏洞,比如分支目标注入(BTI),即Spectre v2。
Arm注意到一种基于状态污染的侧信道攻击[1],影响一些Arm核心上的数据预取器。在这种攻击中,一个非特权的攻击者从另一个上下文中的受害者成功地观察依赖于密钥的内存访问,并利用该信息恢复了Mbed TLS 3.3.0 AES实现中的部分密钥。请注意,这是一种基于查找表的AES实现。
侧信道不直接泄漏秘密数据,而是泄漏元数据,如程序执行的内存访问或分支。如果程序根据这些数据执行内存访问或分支