gpt4 book ai didi

c - 为什么不捕获 ebp 之上的堆栈写入以避免溢出漏洞?

转载 作者:行者123 更新时间:2023-11-30 19:56:12 24 4
gpt4 key购买 nike

我一直在研究 StackGuard 和类似的技术,以及英特尔关于“控制流执行”(基本上是影子堆栈)的新技术预览,此处:https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf .

显然,我想知道的东西要么会破坏所有内容,要么不能防止缓冲区溢出,这是有原因的,但它很简单,所以我确信有人可以解释为什么我吠错了树。

enter image description here

为什么不在 CPU 硬件中实现一个可选功能,以便在写入高于或等于 ebp 的堆栈地址时中止/陷阱?这将防止返回地址和函数参数因缓冲区溢出而被覆盖。

最佳答案

使用ebp作为帧指针是可选的,但当然可以改变。更糟糕的问题是,您可以在堆栈框架之外合法地进行写入,例如,如果您有一个指向属于调用者的变量的指针:

int foo;
scanf("%d", &foo);

显然&foo指向scanf的框架之外。

函数参数不需要保护,也可以合法修改。不过,这也可以改变。

关于c - 为什么不捕获 ebp 之上的堆栈写入以避免溢出漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37801075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com