3.1 缓冲区溢出漏洞
2025年09月21日
3.1 缓冲区溢出漏洞
在计算机操作系统中,“缓冲区”是指内存空间中用来存储程序运行时临时数据的大小有限并且连续的内存区域。根据程序中内存的分配方式和使用目的,一般可分为栈缓冲区和堆缓冲区两种类型。程序在处理用户数据时,未能对其大小进行恰当的限制,在进行复制、填充时没对这些数据限定边界,导致实际操作的数据大小超过了内存中目标缓冲区的大小,使得内存中一些关键数据被覆盖。或者说当向为某特定数据结构分配的内存空间边界之外写入数据时,即会发生缓冲区溢出。
如果攻击者通过精心设计的数据进行溢出覆盖,则有机会成功利用缓冲区溢出漏洞,修改内存中数据,改变程序执行流程,劫持进程,执行恶意代码,最终获得主机控制权。
高级编程语言由于其设计的不同考虑,受缓冲区溢出问题的影响程度会有所不同。但自1988年的莫里斯蠕虫病毒事件以来,缓冲区溢出攻击一直是最普遍同时也是危害最大的一种攻击手段。
因此,对于基于缓冲区溢出攻击与防范的研究具有重要意义。
在深入理解缓冲区溢出这种攻击方式之前,我们先回顾一些计算机结构方面的基础知识,理解CPU、寄存器、内存是怎样协同工作而让程序顺利执行的。