论文部分内容阅读
在各种安全问题中,缓冲区溢出漏洞已成为主要问题之一。信息系统的系统软件和应用软件自身的安全性是信息系统安全保障的基础,然而无论是系统软件还是应用软件都不乏有缓冲区溢出漏洞的存在。在对信息系统的安全发动的攻击中,针对缓冲区漏洞进行的攻击已经成为一种最重要的攻击方式之一。截至到2004年12月,在CERT/CC新发布的100个最严重的漏洞中,近一半的漏洞是程序中的缓冲区溢出漏洞带来的。
本文首先对缓冲区溢出的基本原理和检测技术作了简单概述,接着分析了现有的国内外相关研究及其工具,并从六个方面系统介绍了缓冲区溢出的保护方法。
本文的研究主要是借助IDA PRO这一强大的反汇编平台,基于IDC脚本语言对二进制代码进行缓冲区溢出漏洞检测。在利用IDC脚本发掘漏洞方面,Halvar Flake用IDC编写了一个静态分析工具BugScam。BugScam是一个采取针对可能导致缓冲区溢出和格式化字符串的库函数进行检查的方式来确定程序中是否存在安全隐患,是一种汇编级的检查。本文重点分析了Bugscam脚本,采用自顶向下的方法,依次分析每一个函数模块,总结出对应的流程图。针对Bugscam的一些错误与不足进行了适当的修正和改进。
最后的实现模块是在IDA PRO平台中对二进制代码进行反汇编,利用IDC脚本语言从汇编代码中提取函数依赖关系图和控制流分析,使用MFC程序输出缓冲区溢出检测结果。提取函数依赖关系图采用深度优先的算法,同时基于控制流的分析能够有效地提高漏洞发掘的准确性。最后与Bugscam检测的结果进行了比较和分析,并提出了存在的不足和可改进之处。