Print

COM组件栈缓冲区溢出漏洞检测技术研究

论文摘要

为了解决软件复用,缩短软件开发时间,降低维护成本和实现程序动态升级,软件设计领域产生了组件化程序设计结构,并且日益成为发展趋势。微软的COM组件对象模型是当今比较成熟的软件组件模型之一,被广泛应用于Windows操作系统和应用程序中。随着COM组件技术的大量使用,COM组件暴露出越来越多的安全问题,其中,缓冲区溢出安全问题占了很大比例。缓冲区溢出漏洞一直是安全漏洞最常见的一种形式。缓冲区溢出问题主要出现在C/C++这类非类型安全语言中,而在新一代的编程语言,例如Java、C#中不存在。一个重要的原因就是C/C++允许通过指针进行间接内存访问但没有缓冲区边界检查和提供了大量对缓冲区可能存在不安全操作的库函数,在Windows操作系统中也存在类似的函数。因此,如果能采用有效的手段对COM组件的缓冲区溢出漏洞进行检测,将能极大地提高组件软件的安全性。根据COM组件多数情况下源代码未可知的测试特点,基于COM组件的二进制代码实现对其可能存在的栈缓冲区溢出漏洞的检测。检测方法是将检测缓冲区溢出问题转化为整数范围分析问题。建立适用COM组件的危险函数库,在汇编代码中识别危险函数的调用位置,然后根据危险函数参数的类型通过扫描识别不同的缓冲区,将声明的缓冲区大小和使用的缓冲区大小等价为整数范围,依据制定的缓冲区溢出标准检测溢出漏洞。根据COM组件使用虚表定位函数的结构特点,实现了COM组件中用户函数的精确定位;同时利用IDC脚本语言提取了COM组件中的函数依赖关系图。基于以上工作,实现了一个COM组件栈缓冲区溢出漏洞检测原型系统。

论文目录

  • 摘要
  • ABSTRACT
  • 1 绪论
  • 1.1 课题背景
  • 1.2 国内外概况
  • 1.3 论文主要研究工作
  • 1.4 论文结构
  • 2 COM 组件及栈缓冲区溢出漏洞检测方法基础
  • 2.1 COM 组件
  • 2.2 缓冲区溢出原理
  • 2.3 栈缓冲区溢出检测技术
  • 2.4 小结
  • 3 COM 组件栈缓冲区溢出漏洞检测技术
  • 3.1 函数的识别
  • 3.2 参数的识别
  • 3.3 函数的返回值
  • 3.4 变量的识别
  • 3.5 COM 组件危险函数库建立
  • 3.6 小结
  • 4 COM 组件栈缓冲区溢出漏洞检测系统设计与实现
  • 4.1 模块结构和功能
  • 4.2 主要数据结构
  • 4.3 函数定位模块实现
  • 4.4 栈溢出静态分析模块实现
  • 4.5 结果输出模块实现
  • 4.6 与CSTS 的接口
  • 4.7 小结
  • 5 实验与测试
  • 5.1 实验目的
  • 5.2 实验环境
  • 5.3 测试用例
  • 5.4 测试结果
  • 6 总结与展望
  • 6.1 工作总结
  • 6.2 工作展望
  • 致谢
  • 参考文献
  • 附录 攻读学位期间参与的科研项目
  • 相关论文文献

    本文来源: https://www.lw50.cn/article/1786ab322550c8960e80cd61.html