目录:
定义-堆栈粉碎是什么意思?
堆栈粉碎是一种漏洞形式,计算机应用程序或OS的堆栈被迫溢出。 这可能导致颠覆程序/系统并使之崩溃。
堆栈(先进先出电路)是一种缓冲区,用于保存其中的中间操作结果。 为简化起见,堆栈粉碎会将超过其容纳容量的更多数据放入堆栈。 熟练的黑客可以故意将过多的数据引入堆栈。 过多的数据可能存储在其他堆栈变量中,包括函数返回地址。 函数返回时,它将跳转到堆栈上的恶意代码,这可能会破坏整个系统。 堆栈上的相邻数据会受到影响,并导致程序崩溃。
Techopedia解释了堆栈粉碎
如果受堆栈破坏影响的程序接受来自不受信任网络的数据并以特殊特权运行,则属于安全漏洞。 如果缓冲区包含不可信用户提供的数据,则可能通过将可执行代码注入程序而损坏堆栈,从而获得对计算机的未授权访问。 攻击者还可以覆盖存储在堆栈中的控制流信息。
随着堆栈粉碎已成为一个非常严重的漏洞,已实施某些技术来克服堆栈粉碎灾难。 堆栈缓冲区溢出保护更改了函数调用的堆栈帧中的数据组织,以包含canary值。 这些值在销毁时表明内存中位于其之前的缓冲区已溢出。 金丝雀值监视缓冲区溢出,并位于控制数据和堆栈上的缓冲区之间。 这样可以确保缓冲区溢出首先损坏金丝雀。 金丝雀数据验证失败表示堆栈中有溢出。 金丝雀的三种类型是随机,终止符和随机XOR。
终止符金丝雀基于以下事实:堆栈缓冲区溢出攻击取决于以终止符结尾的字符串操作。 随机金丝雀是从熵收集守护程序中随机生成的,这可以防止攻击者知道值。 随机金丝雀在程序初始化时生成,并存储在全局变量中。 随机XOR Canary是使用控制数据进行XOR加密的随机载波。 它类似于随机金丝雀,不同之处在于“读取堆栈方法”来获取金丝雀很复杂。 黑客需要Canary,算法和控制数据来生成原始Canary。 它们可防止涉及将结构中的缓冲区溢出到指针中以更改指针以指向控制数据的攻击。
