首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存随机化作为应用程序安全性增强?

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

Stack Overflow用户
提问于 2010-04-21 19:30:58
回答 3查看 714关注 0票数 7

最近,我遇到了一篇关于Windows 7的新的“防御性增强”的微软文章。

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

文章接着说,“这些防御系统的...some位于核心操作系统中,而MicrosoftVisualC++编译器提供了其他的”,但没有解释这些策略如何真正提高安全性。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-21 19:34:32

它增加了安全性,因为它很难预测内存中的东西在哪里。相当多的缓冲区溢出利用了工作,例如,将已知例程的地址放入堆栈,然后返回到它。如果不知道相关例程的地址,就很难做到这一点。

据我所知,OpenBSD是第一个这么做的,至少在相当知名的个人电脑OSes中是如此。

票数 10
EN

Stack Overflow用户

发布于 2010-04-21 19:33:06

这使得像返回libc这样的攻击(或者在后两种情况下返回到用户提供的数据缓冲区)更加困难。是的,它可以在Linux、BSD和Mac中使用。正如您所预期的,操作系统的细节各不相同。有关导论,请参阅维基百科。

票数 2
EN

Stack Overflow用户

发布于 2010-04-21 20:14:23

通过随机化堆栈,可以使普通的缓冲区溢出攻击(如Aleph One为了好玩而捣毁了那堆东西 )成为不可能的。之所以如此,是因为攻击依赖于将少量可执行代码放入内存中可预测的位置,将壳代码放入可预测的位置。函数堆栈帧已损坏,其返回地址被攻击者选择的值覆盖。当损坏的函数返回时,执行流会移动到攻击者的外壳代码。传统上,这个内存地址是如此可预测,以至于在所有运行相同版本软件的机器上都是相同的。

尽管在Windows 7上实现了高级内存保护,但仍然可以执行远程代码。最近在CanSecWest,一台运行Windows7和IE8的机器在几秒钟内被黑客入侵。下面是一个现代内存损坏攻击的技术描述,它利用一个悬挂的指针和一个堆溢出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2685977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档