Linux下非特权模式下可以读取页表吗?

Linux下非特权模式下可以读取页表吗?

这是我在 Unix 和 Linux 中的第一个问题,我目前正在学习虚拟内存。

我很欣赏这篇很棒的论文鼓手 (CCS'16)。在 Android 6.0.1 中,它欺骗伙伴分配器在易受攻击的页面中分配页表页面(相应的 Linux 内核可能是~3.18.10.)进行非特权操作(因为它们的最终目的是Root 权限提升.)。

虽然,我不知道如何在用户模式下访问页表页面。因为我们知道在虚拟内存中,整个虚拟内存地址会被分割为内核空间和用户空间(例如,最上面的1GB/4GB是内核空间),其中内核空间在用户模式下无法访问。我的两个相应的问题引起了:

  • 页表页是否位于内核空间完全?我的意思是,我们能否找到这样一个特定的页表页面,它位于特定进程的用户空间中(请参阅这个帖子.)?我假设答案是否定的。

  • malloc会在用户空间分配虚拟内存,我们可以在核心空间只是非特权操作?

是否有一些棘手的事情,比如通过 DMA,我们可以随意读取内核空间中的内存?或者说这就是linux和Android之间的一些深刻的区别?或者我错过了什么?

谢谢。

相关内容