6

经过一些研究,我没有找到任何描述方法的论文(甚至没有不可靠的)。似乎 SSP (StackSmashing Protection)/Propolice

4

3 回答 3

3

Canary 是一种非常好的安全措施,可以防止某些缓冲区溢出。多年来,各种 Canary 实现已经被破坏,然后变得更加安全。重要的是,即使在 Vista、Windows 7 和 Fedora 11 上仍然使用高级内存保护缓冲区溢出...

一件非常重要的事情是 Canary 只保护函数的调用框架(其中包括强大的 EIP!)。缓冲区溢出可能发生在另一段内存(例如堆)中,而金丝雀则没有影响。此外,可以使用缓冲区溢出攻击应用程序,而无需覆盖 EIP。控制 EIP 是一种非常直接且简单的方法,可以将缓冲区溢出变成杀手级漏洞利用,这就是为什么它是最常见的漏洞利用方法。

这些利用方法以及其他利用方法在Exploiting Software: How to break code中有详细介绍。

于 2010-01-19T08:32:03.197 回答
1

我对微软的 GS 堆栈保护比较熟悉,但是这两种方法看起来很相似

以下来自 Microsoft 的博客文章显示了一个示例,即使在使用堆栈 cookie 时攻击者仍然可以控制(第一个示例应该适用于非 Windows 系统):


这篇博文讨论了一些即将到来的堆栈保护改进:

于 2009-05-13T02:34:52.327 回答
0

如果应用程序在堆栈上有一个数组/缓冲区,并且使用调用者控制的索引值而不进行边界检查,那么调用者将能够访问任意内存位置,并且堆栈保护将无法阻止或检测它。

于 2009-07-31T19:52:01.083 回答