内存随机化作为应用程序安全增强?

Pau*_*sik 6 .net c++ memory security windows-7

我最近发表了一篇微软文章,吹捧Windows 7的新"防御性增强".具体来说:

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

文章继续说"......其中一些防御在核心操作系统中,而Microsoft Visual C++编译器提供其他防御",但没有解释这些策略如何实际提高安全性.

有人知道为什么内存随机化会增加安全性,如果有的话?其他平台和编译器是否采用类似的策略?

Jer*_*fin 9

它通过难以预测内存中的某些内容来提高安全性.相当多的缓冲区溢出漏洞通过将(例如)已知例程的地址放在堆栈上然后返回到它来工作.在不知道相关例程的地址的情况下,这样做要困难得多.

据我所知,OpenBSD是第一个这样做的,至少在众所周知的PC操作系统中.