论文部分内容阅读
随着计算机技术的发展,软件规模的不断扩大,软件的安全问题正成为业界日益关注的焦点。导致软件安全问题的根本原因是其中存在的脆弱性,而脆弱性的检测作为保障软件安全的有效手段,正逐渐发展成为信息安全领域的一个重要研究课题。本文立足于脆弱性的检测目的,研究了其相关的分类方法,检测技术和预防保护机制等几个重点问题: (1)研究和分析了目前常见的软件脆弱性分类技术,并总结了其各自的特点及应用场景。根据脆弱性检测的实际需要,将脆弱性分为注入型和非注入型两类,本文将选取注入型脆弱性作为检测和处理对象。 (2)介绍和总结了目前针对注入型脆弱性及相关漏洞的检测技术。通过对静态和动态两类检测方法的比较,分析了其各自在检测能力上的优缺点。针对目前注入型脆弱性检测在效率和精确程度上的不足,本文分析和明确了检测系统的设计需求。 (3)使用了未经验证的外部数据是导致程序脆弱性的主要原因之一,污点传播分析是对这些非可信数据影响范围的评估过程。本文基于流和上下文敏感的SSA信息流分析技术,提出了一种细粒度、可扩展的污点传播检测方法。利用控制流和数据流的相关信息,跟踪污染数据及其传播路径,可以检测缓冲区溢出、格式化串漏洞等程序脆弱性。分析过程在潜在问题点自动插装动态验证函数,在无需用户干预的情况下保证了程序的运行时安全。 (4)基于改进的污点传播分析方法,设计并实现了一个针对注入型脆弱性的检测和验证系统。本文在Linux和GCC编译器的基础上实现了自动化的分析工具,并选取了一些开源程序作为检测的对象。最后的实验结果表明,该方法具有较高的精确度和时空效率。