警惕僵尸:通过监控失效行缓解共享缓存上的Flush+Reload攻击
密码学与安全
2019-06-07 v1
摘要
基于操作系统的页面共享是现代系统中减少内存占用的一种常用优化手段。然而,这种共享可能导致Flush+Reload缓存攻击,即间谍定期刷新共享数据的缓存行(使用clflush指令)并重新加载,以推断受害者应用程序的访问模式。当前缓解Flush+Reload攻击的方案不实用,因为它们要么禁用页面共享,要么需要重写应用程序,要么需要操作系统支持,要么需要修改指令集架构。理想情况下,我们希望在不依赖任何操作系统或指令集架构支持的情况下容忍攻击,同时产生可忽略的性能和存储开销。本文的关键观察是:当缓存行因刷新导致的失效(FCI)而失效时,失效行的标签和数据仍然驻留在缓存中,可用于检测基于刷新的攻击。我们将因FCI失效的行称为僵尸行。我们的设计明确地将这些行标记为僵尸,将僵尸行保留在缓存中,并利用对僵尸行的命中与未命中来容忍攻击。我们提出了基于僵尸的缓解(ZBM)方案,这是一种简单的硬件设计,通过将僵尸行的命中视为未命中,从而避免向攻击者泄露任何时序信息,成功防御了攻击。我们使用三种间谍程序分析了ZBM的鲁棒性:攻击AES T表、攻击RSA平方乘以及函数监视器(FW),结果表明ZBM成功防御了这些攻击。我们的方案仅需极少的存储开销(每缓存行4比特),保留了基于操作系统的页面共享,无需操作系统/指令集架构修改,且不会对良性应用程序造成性能下降。
关键词
引用
@article{arxiv.1906.02362,
title = {Lookout for Zombies: Mitigating Flush+Reload Attack on Shared Caches by Monitoring Invalidated Lines},
author = {Gururaj Saileshwar and Moinuddin K. Qureshi},
journal= {arXiv preprint arXiv:1906.02362},
year = {2019}
}