我理解 Meltdown 可以访问内核内存,因为 Windows 上的程序至少共享相同的虚拟内存空间。我们有一个补丁可以取消映射尽可能多的内核数据。Meltdown 可以访问其他进程的内存吗?
但是 Spectre 1/2 呢?它可以访问哪些内存?它可以像 Meltdown 一样访问内核内存吗?它可以访问其他进程的内存吗?
答案1
正如在熔毁纸,现代操作系统只是将所有物理内存映射到内核虚拟地址空间。这意味着,在大多数情况下,您可以假设访问内核内存 = 访问任何其他进程的内存。
这projectzero 博客文章表明specter可以用来访问内核内存。
变体 1 可以通过在沙箱中以内核模式运行任意代码来读取内核内存(例如使用伯克利包过滤器),然后利用漏洞访问沙箱外的内存。
变体 2 可以访问它,因为分支预测跨安全上下文工作,因此用户模式下的分支可用于训练内核模式下的分支预测。