我对linux内核内存页写保护有几个问题。
如何判断内核是否正确
代码(文本段)是写的
受保护与否。我可以看看
/proc/<process-id>/map
看到了
各种进程的内存映射。
但不知道在哪里寻找
内核代码内存映射。
如果内核代码段是写的 保护,然后是可能的 代码段页面 被任何其他内核覆盖 级别代码。换句话说,是吗 在文本段页面上写保护 仅防止用户空间 代码写入或将它 防止写入甚至从内部 内核空间代码。
由于
答案 0 :(得分:1)
在内核中运行的代码可以直接访问当前地址空间的页表,因此可以通过检查它们来检查写访问权限。可能有一些功能可以帮助您进行检查,但我对mm代码不够熟悉,无法指出它们。有没有更简单的方法?我不确定。
内核文本永远不能从用户空间写入。此外,还可以保护文本不受内核代码的编写(我认为这就是你所说的)。这只是对bug的基本保护。内核代码,如果它真的想要,可以通过直接修改页表来禁用该保护。
答案 1 :(得分:0)
有一篇论文在谈论这个问题。基本上,它使用一个小型管理程序来保护操作系统内核。
SecVisor:为商品操作系统提供终身内核代码完整性的微型管理程序。