KASLR 真的提供了更多的安全性来抵御攻击吗?

信息安全 视窗 linux windows-8 aslr
2021-09-02 13:20:15

我完全了解ASLR的工作原理,以及它是如何在 Linux 和 Windows 系统上实现的。它提供了恶意软件必须考虑的额外保护层。但是现在随着计算机长时间处于开启状态,ASLR 似乎并没有像我们希望的那样随机化地址空间。Windows 8采取了额外的措施来确保 ASLR 有效。

当我构建和升级我的 Linux 内核时,我刚刚发现了内核级 ASLR,并注意到在启动时它说:

KASLR not enabled

在进行了一些搜索之后,我在一般的 KASLR 上并没有找到那么多。所以现在我很好奇这里是否有人有经验。

  1. KASLR值得吗?它是否提供了显着的优势?我将不得不重建我的内核,为 KASLR 和所有爵士乐配置它。不可怕,但有点烦人。
  2. 这在 Windows 世界中存在吗?如果是这样,Windows 在其实施方面做得更好吗?

或者也许这个世界还没有准备好……

1个回答

KASLR 在为 Linux 发布的那天就受到了严厉的批评,并且在那天它也被击败了。grsecurity 的 Spender 写了一篇关于它的帖子连同 LWN 评论),我只会以简单的方式总结。我强烈鼓励阅读原始资料。

众所周知,地址空间布局随机化最初是通过随机化堆栈上许多指针的位置来应用于复杂的漏洞利用的。击败 ASLR 需要以下任一条件:

  • 暴力破解,直到您意外找到正确的随机地址(这需要重新启动应用程序并且几乎不会适用于 KASLR)
  • 检索泄露有关内存布局信息的指针

第二种选择对内核来说非常有前途:它们不能有太大的随机偏移量,因为某些硬件配置可能具有有限的地址空间,最重要的是内核不能在其整个生命周期中改变它们的偏移量这意味着单个内存布局泄漏将破坏 KASLR,直到机器重新启动。事实证明,这种错误据说是 Spender 经常发生的。

这正是 Linux KASLR 薄弱的原因,根据 Spender 的说法,甚至是“失败”。该机制不适用于内核。如果您想了解更多详细信息,请阅读他的文章。他确实谈到了其他实现,您应该从上面的观点中理解,弱的不仅仅是实现,而是设计。与传统的 ASLR 相比,KASLR 在实现方式上需要更加小心,因为利用的条件要好得多

编辑:显然你只是一个谷歌搜索,不知道如何利用 Windows KASLR implementation