Linux内核代码空间写保护

时间:2011-02-26 21:12:27

标签: linux-kernel

我对linux内核内存页写保护有几个问题。

  1. 如何判断内核是否正确 代码(文本段)是写的 受保护与否。我可以看看 /proc/<process-id>/map看到了 各种进程的内存映射。 但不知道在哪里寻找 内核代码内存映射。

  2. 如果内核代码段是写的 保护,然后是可能的 代码段页面 被任何其他内核覆盖 级别代码。换句话说,是吗 在文本段页面上写保护 仅防止用户空间 代码写入或将它 防止写入甚至从内部 内核空间代码。

  3. 由于

2 个答案:

答案 0 :(得分:1)

  1. 在内核中运行的代码可以直接访问当前地址空间的页表,因此可以通过检查它们来检查写访问权限。可能有一些功能可以帮助您进行检查,但我对mm代码不够熟悉,无法指出它们。有没有更简单的方法?我不确定。

  2. 内核文本永远不能从用户空间写入。此外,还可以保护文本不受内核代码的编写(我认为这就是你所说的)。这只是对bug的基本保护。内核代码,如果它真的想要,可以通过直接修改页表来禁用该保护。

答案 1 :(得分:0)

有一篇论文在谈论这个问题。基本上,它使用一个小型管理程序来保护操作系统内核。

SecVisor:为商品操作系统提供终身内核代码完整性的微型管理程序。

http://www.sosp2007.org/papers/sosp079-seshadri.pdf