最近,我遇到了一篇Microsoft文章,该文章吹捧Windows 7的新“防御性增强”。特别是:

  • 地址空间布局随机化(ASLR)
  • 堆随机化
  • 堆栈随机化

  • 文章继续说:“...其中一些防御措施在核心操作系统中,而Microsoft Visual C++编译器提供了其他防御措施”,但没有解释这些策略如何真正提高安全性。

    任何人都知道为什么内存随机化可以提高安全性吗?其他平台和编译器是否采用类似策略?

    最佳答案

    通过使其难以预测内存中的内容,可以提高安全性。通过将(例如)一个已知例程的地址放到堆栈上,然后返回到它,相当多的缓冲区溢出漏洞利用得以发挥作用。在不知道相关例程地址的情况下很难做到这一点。

    据我所知,OpenBSD大约是第一个这样做的,至少在相当知名的PC操作系统中如此。

    关于.net - 内存随机化可以增强应用程序的安全性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2685977/

    10-09 20:28