【问题标题】:How to have a guard page between heap and stack?如何在堆和堆栈之间有一个保护页?
【发布时间】:2013-10-29 07:41:42
【问题描述】:

我在 xv6 中定义了一个向上的堆栈(它有一个向下的堆栈),想知道我是如何在堆栈和堆之间放置一个保护页的。我可以使用任何特定的系统调用吗?另外,如何保持一页地址空间始终位于堆栈和堆之间?

【问题讨论】:

  • 另见 OSS-Security 邮件列表上的Qualys Security Advisory - The Stack Clash。它展示了一些巧妙的技巧,以及它对保护页面的诅咒。令人惊讶的是,他们用它删除了多少操作系统。

标签: linux linux-kernel heap-memory stack-memory xv6


【解决方案1】:

所以你确切地知道你的堆栈从哪里开始增长?在那种情况下,你为什么不留下一页,然后从下一页开始。而且您可能需要使用一些数据分配和污染内存,以便可以检测到它。就像其中一些内存溢出检测工具的工作方式一样。或者您可能需要为该页面设置一些自定义标志,以便在尝试访问它们时,如果发现不合适,您可以检查标志和故障。

顺便说一句,我没听错你的问题吗?

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 2011-07-30
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多