有没有办法从 ubuntu 获取缓存数据?
如何从 Ubuntu 虚拟机获取 L3 缓存数据。
虚拟机管理程序是 XEN 虚拟机管理程序或 VMWARE
答案1
你不知道。
这就是为什么它们被称为“侧信道”攻击,因为你不能直接读取缓存中的值(这在安全性上相当于在你家门外的白板上写下你的密码),但你可以推断数据的存在方式CPU 指令所花的时间取决于缓存中的内容。
读取 CPU 缓存比 Spectre 和 Meltdown 更加危险,从安全角度来看,它会立即使虚拟机的所有保护措施变得毫无价值。
绝对没有正常任务需要关心 CPU 缓存中的内容,相反,它们关心寄存器状态和读取/写入内存位置,如果一个值来自缓存,你会得到加速,但你不会需要在正常使用过程中读取缓存。
我甚至看不到任何真实的管理员甚至操作系统内核应该需要读取 CPU 缓存行。从安全角度来看,我可以看到几个原因系统中绝对没有任何程序可以访问缓存行但只有模糊的便利原因应该被)允许。
我认为不允许显式缓存行访问,或者至少拒绝除最高处理器访问状态之外的任何访问(如果允许的话)。虚拟机永远无法在此状态下运行,因此任何缓存访问都将被拒绝。
我认为虚拟机被视为第 3 环,因为它们对主机来说只不过是“又一个”应用程序。主机操作系统本身在 Ring 0 中运行,允许直接访问硬件,但应用程序本身以低得多的权限运行。
任何来自 VM 对特权指令的访问都将被 VM 软件而不是实际 CPU 或系统硬件捕获和处理。