论文摘要
随着计算机技术的普及和Internet的飞速发展,信息安全问题日益突出,信息系统面临着前所未有的安全挑战和日益增多的威胁。其中,基于缓冲区溢出漏洞的攻击方式在当前和过去的几十年内被广泛采用,并可能长期存在。缓冲区溢出问题源于C/C++等高级语言相应的安全缺陷以及编程者的疏忽。其解决方法可分为攻击行为发生时的实时保护,和攻击行为发生前针对程序代码的漏洞发现和检测。前者由于实现代价较高且容易演化为拒绝服务攻击,其应用受到了限制,而后者则成为当前研究的重点,相关技术得到了深入的探讨和发展,并取得了许多成果。但它们具有以下不足:(1)早期检测工具仅作词法分析,存在较多的误报;(2)一些工具通过在源码中添加注释的方法进行分析,自动化程度受到限制;(3)许多检测方法依赖于一些通用的代码分析工具,检测效率不高。针对现有方法的不足,本文提出了一种针对C源码中缓冲溢出漏洞的静态检测方案。其设计目标包括(1)针对漏洞的词法、语法、语义特征,分层次实现检测器的功能模块,使漏洞特征提取更充分;(2)检测器的实现环节和执行过程均不依赖于其它的通用代码分析工具,以避免与漏洞检测无关的语义分析开销。基于以上设计目标,本方案提出并实现了一种C的等价文法:漏洞特征文法,并借助编译器生成工具YACC构造出一个对漏洞形式化特征敏感的语法分析器;以该分析器为框架,配合漏洞信息表示和漏洞判定等工作,最终实现了一个完整的漏洞检测工具原型。由于这种等价文法实现了漏洞形式化特征与普通C语法的分离,因此,由它生成的语法分析器具有对缓冲区溢出漏洞敏感的特点,从而使漏洞信息收集工作比较可靠和准确;另外,这种基于漏洞特征的文法分解为整个方案提供了一个形式化框架,保证了后期语义分析的针对性,并降低了算法设计的复杂度;由于方案并不依赖于已有的一些通用代码分析工具,从而使项目实施过程具有一定的灵活性。最后的实验结果证明,该检测工具有较好的检测准确性,并对一些较隐蔽的漏洞形式具有检测能力。
论文目录
摘要ABSTRACT第一章 绪论1.1 课题研究背景及现状1.1.1 缓冲区溢出及利用的历史1.1.2 现有防护措施分类及特点1.1.2.1 攻击发生时的动态防护1.1.2.2 漏洞的检测和发现1.2 本论文的选题和研究内容第二章 缓冲区溢出概述2.1 缓冲区溢出原因2.1.1 进程虚存空间管理机制2.1.2 非类型安全语言2.1.3 其它原因2.2 缓冲区溢出攻击原理及手段2.2.1 栈溢出2.2.2 堆溢出2.3 本章小结第三章 检测方案3.1 设计思路3.2 方案框架及特征3.2.1 目标系统的结构3.2.2 目标系统的预期特征3.3 本章小结第四章 漏洞特征文法构造4.1 漏洞特征描述4.1.1 漏洞词法成份4.1.2 漏洞语法成份4.1.3 漏洞语义4.2 文法构造的目标4.3 基于等价分划的漏洞特征文法生成4.3.1 文法规则等价分划的集合描述4.3.2 漏洞特征文法的构造流程4.3.3 文法等价性保持4.3.3.1 分解路径上结点的分解问题4.3.3.2 对合并点的处理4.4 本章小结第五章 基于漏洞特征文法的方案实现5.1 漏洞语义分析5.1.1 语义工作的内容5.1.1.1 漏洞特征的表示5.1.1.2 漏洞信息的登记5.1.1.3 漏洞的判定5.1.2 基于漏洞特征文法的语义工作特点5.2 LEX 和YACC 工具5.2.1 LEX5.2.1.1 LEX 的功能5.2.1.2 LEX 规范5.2.2 YACC5.2.2.1 YACC 的功能5.2.2.2 YACC 规范5.3 检测工具构造5.3.1 文法实现的几个具体问题5.3.1.1 充分形式化问题5.3.1.2 语义工作便利性的保证问题5.3.1.3 分解深度问题5.3.2 支持语义的数据结构5.3.2.1 描述缓冲区信息的相关数据结构5.3.2.2 描述函数定义和调用关系的数据结构5.3.3 关键算法5.3.3.1 函数调用关系图的创建算法5.3.3.2 针对函数定义的约束求解递归算法5.3.3.3 后期漏洞判定算法5.4 本章小结第六章 检测实验6.1 检测工具使用方法6.2 实验及结果分析6.2.1 测试16.2.2 测试26.2.3 测试36.3 本章小结第七章 总结与展望致谢参考文献攻硕期间取得的研究成果
相关论文文献
标签:缓冲区溢出论文; 静态检测论文; 等价分划论文; 文法论文;