基于静态分析的缓冲溢出漏洞检测研究

基于静态分析的缓冲溢出漏洞检测研究

论文摘要

随着计算机技术的普及和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 LEX
  • 5.2.1.1 LEX 的功能
  • 5.2.1.2 LEX 规范
  • 5.2.2 YACC
  • 5.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 测试1
  • 6.2.2 测试2
  • 6.2.3 测试3
  • 6.3 本章小结
  • 第七章 总结与展望
  • 致谢
  • 参考文献
  • 攻硕期间取得的研究成果
  • 相关论文文献

    标签:;  ;  ;  ;  

    基于静态分析的缓冲溢出漏洞检测研究
    下载Doc文档

    猜你喜欢