借助统一建模语言,概括近十年来利用缓冲区溢出进行攻击的攻击模式,从预防、发现、抵御缓冲区溢出攻击以及攻击后的程序恢复等方面对目前有代表性的防御、检测方法和攻击恢复技术进行了归纳、分析和比较,指出这些方法和技术的弊端以及可能采取的规避手段。提出了在攻击技术不断发展的情况下,彻底、有效地解决缓冲区溢出所面临的问题,编写安全的程序是解决缓冲区溢出的关键,并对将来解决缓冲区溢出可采用的有效方法和手段进行了讨论。
关 键 词 攻击模式; 缓冲区溢出; 防御方法; 统一建模语言; 安全编程
缓冲区溢出的攻击模式
缓冲区定义为连续的一段存储空间。当写入缓冲区的数据量超过该缓冲区能容纳的最大限度时,缓冲区溢出发生,溢出的数据将改写相邻存储单元上的数据。造成缓冲区溢出的根本原因是代码在操作缓冲区时,没有有效地对缓冲区边界进行检查。缓冲区溢出可以成为攻击者实现攻击目标的手段,但是单纯地溢出缓冲区并不能达到攻击的目的。在绝大多数情况下,一旦程序中发生缓冲区溢出,系统会立即中止程序,并报告“段错误”。只有对溢出缓冲区适当地加以利用,攻击者才能通过其实现攻击目标。
根据实现目标的不同,缓冲区溢出攻击分为和改变程序逻辑两类攻击。目前已出现的利用缓冲区溢出进行的攻击主要属于改变程序逻辑。与破坏敏感数据的攻击相比,此类攻击的目标不是仅仅针对某个或者某些数据,而是针对整个被攻击系统;虽然破坏的不是敏感数据,但是攻击者可以通过改来变这些数据来改变原有的程序逻辑,以此获取对本地/远程被攻击系统的控制权。
实施缓冲区溢出攻击的具体方法多种多样,其攻击手段为如图1所示的同一种模式。图中,缓冲区溢出的攻击模式用统一建模语言(UML)的泳道(Swimlanes)活动图进行描述。对于仅破坏敏感数据的缓冲区溢出攻击,只涉及该模式的前两个活动(Activity),可以概括为以下步骤:
1) 注入恶意数据
恶意数据是指用于实现攻击的数据,它的内容将影响攻击模式中后续活动能否顺利进行。恶意数据可以通过命令行参数、环境变量、输入文件或者网络数据注入被攻击系统。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !