【问题标题】:Linux kernel code space write protectionLinux内核代码空间写保护
【发布时间】:2011-07-05 00:38:21
【问题描述】:

我有几个关于 linux 内核内存页面写保护的问题。

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

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

谢谢

【问题讨论】:

    标签: linux-kernel


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

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

    【讨论】:

      【解决方案2】:

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

      SecVisor:为商品操作系统提供终生内核代码完整性的微型 Hypervisor。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 2015-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多