基于静态源码分析的软件安全测试技术研究与实现

基于静态源码分析的软件安全测试技术研究与实现

论文摘要

随着计算机技术的快速发展,软件在各行各业得到了广泛应用,它已经成为我们日常生活不可缺少的组成部分。软件经过编译和测试,每千行代码中平均有10-20个缺陷。虽然软件公司通常花费超过80%的开发预算在质量控制上,但缺陷仍然存在,不断发布的补丁就是其表现。计算机软件日益庞大和复杂,使得软件中的漏洞越来越难以发现。在软件生存期中软件测试占有重要地位,是验证软件正确性及检测软件漏洞的重要手段。如何通过软件测试提高软件的质量及安全性是一个需要研究人员及软件公司关注的问题。和传统的采用测试用例的动态软件测试技术相比,静态分析技术不需要实际运行程序,通过分析程序源码或中间代码的方式,检查程序中潜在的错误。静态分析虽然具有优势,但也存在不足之处。现有静态分析工具在检测源码时大都存在误报以及漏报的情况,而且问题比较严重。如何降低静态分析工具在检测错误时的误报率和漏报率,也是研究人员及软件公司关注的问题。本文以软件测试中的静态分析技术为基础,主要研究了C程序中数组越界、未初始化变量和空指针解引用等软件漏洞的检查。通过阅读国内外大量文献,总结出传统软件测试技术的不足。通过对比研究静态分析的各种测试方法,指出现有静态分析工具的局限性。在以上理论知识的基础上,在Linux开发环境下,基于开源工具CallTree的源代码,开发出一种支持用户自定义属性规则的静态分析工具CTCheck,并且定义了一组原语操作便于属性规则文件的编写。开发过程中使用严格的控制流图和函数调用图生成算法,使得CTCheck具有低误报率和低漏报率的特点。最后,本文通过分类测试包含使用未初始化变量、数组越界、空指针解引用等错误的小程序以及综合测试较大系统的源码证明了该工具的有效性。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 引言
  • 1.1 研究背景及意义
  • 1.2 国内外研究现状
  • 1.3 本文主要研究内容
  • 1.4 论文组织结构
  • 第二章 软件安全静态分析技术
  • 2.1 软件测试技术
  • 2.1.1 软件测试方法分类
  • 2.1.2 常用软件测试工具
  • 2.1.3 传统软件测试技术的不足
  • 2.2 软件安全漏洞及检测方法
  • 2.2.1 使用未初始化变量
  • 2.2.2 数组越界
  • 2.2.3 空指针解引用
  • 2.2.4 软件安全漏洞检测方法
  • 2.3 静态分析测试技术
  • 2.3.1 静态分析能解决的问题
  • 2.3.2 静态分析测试原理
  • 2.3.3 现有静态分析的局限性
  • 2.4 本章小结
  • Check 分析与设计'>第三章 CTCheck 分析与设计
  • 3.1 系统概述
  • Check 系统框架'>3.2 CTCheck 系统框架
  • Check 各模块功能'>3.3 CTCheck 各模块功能
  • 3.3.1 文件解析模块
  • 3.3.1.1 主要接口和数据结构
  • 3.3.1.2 抽象语法树
  • 3.3.2 局部分析模块
  • 3.3.2.1 主要接口和数据结构
  • 3.3.2.2 控制流图
  • 3.3.3 全局分析模块
  • 3.3.3.1 主要接口和数据结构
  • 3.3.3.2 函数调用图
  • 3.4 本章小结
  • Check 检测算法'>第四章 CTCheck 检测算法
  • 4.1 算法概述
  • 4.2 局部分析
  • 4.2.1 构造控制流图
  • 4.2.2 使用未初始化变量
  • 4.2.3 数组越界
  • 4.3 全局分析
  • 4.3.1 构造函数调用图
  • 4.3.2 函数调用图举例
  • 4.4 自定义属性规则
  • 4.4.1 断言的副作用
  • 4.4.2 连续赋值错误
  • 4.4.3 锁规则和中断屏蔽
  • 4.4.4 空指针解引用
  • 4.5 本章小结
  • 第五章 实验与测试
  • 5.1 测试环境
  • 5.2 测试命令
  • 5.3 测试结果
  • 5.3.1 使用未初始化变量
  • 5.3.2 数组越界
  • 5.3.3 空指针解引用
  • 5.3.4 连续赋值错误
  • 5.3.5 综合测试
  • 5.4 本章小结
  • 第六章 结论
  • 6.1 工作总结
  • 6.2 今后的研究方向
  • 致谢
  • 参考文献
  • 附录A 控制流图生成算法
  • 附录B 函数调用图生成算法
  • 攻硕期间取得的研究成果
  • 相关论文文献

    标签:;  ;  ;  ;  

    基于静态源码分析的软件安全测试技术研究与实现
    下载Doc文档

    猜你喜欢