[发明专利]计算机程序实际运行时触发软件漏洞的检测系统无效
申请号: | 201010513779.9 | 申请日: | 2010-10-21 |
公开(公告)号: | CN101968766A | 公开(公告)日: | 2011-02-09 |
发明(设计)人: | 张若愚;王卓;周侃;黄实秋;黄山 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海交达专利事务所 31201 | 代理人: | 王锡麟;王桂忠 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 计算机 程序 实际 运行 触发 软件 漏洞 检测 系统 | ||
技术领域
本发明涉及的是一种计算机技术领域的检测系统,具体是一种计算机程序实际运行时触发软件漏洞的检测系统。
背景技术
程序分析技术是指针对计算机程序推导出其结构和数据流程的分析技术。在软件维护检测和软件理解的过程中,我们需要对目标程序的结构和数据流程进行分析,程序分析系统的输出一般为数据流图和控制流图。数据流图以图表的方法表达程序系统中信息的变换和传递过程,特别是数据被引用和被定义的情况;控制流图经常使用图或抽象语法树的形式刻画程序结构。
动态程序分析技术是对实际执行中的程序进行分析的技术,即在程序执行的情况下,通过对程序的运行环境(环境变量、内存、堆栈等)进行分析,来检测程序是否存在漏洞的技术。动态程序分析技术能检测到那些在程序实际运行时才会触发的漏洞,不需要修改目标程序源代码或其二进制代码,在一定程度上提高了程序的保密性。与之相对的是静态程序分析技术,指在不执行程序的情况下获得程序编译时的信息,并根据这些信息对特定的漏洞模式进行检测的技术,简称为静态分析。大多数情况下,静态分析的输入都是程序的源代码,只有少数情况会使用其二进制代码。现阶段,静态分析技术越来越多地被应用到程序优化、软件错误检测等领域。
但是,无论动态程序分析还是静态程序分析,都有其无法克服的缺点。对于动态程序分析技术而言,因为程序在每一次动态执行的过程中只能沿一条路径执行下去,所以为了能达到满意的路径覆盖率,我们必须重复执行动态分析足够多的次数,但即使这样路径覆盖率也难以达到百分之百。对于静态程序分析技术而言,虽然能够达到百分之百的程序路径覆盖率,但是它并不能检测到那些在程序实际运行时才会触发的漏洞,并且一般漏洞的误报率较高,同时,直接对整个大型程序进行静态分析会导致很大的时间和系统资源开销。更重要的一点是,现有的相关系统往往需要程序源代码才能进行程序分析和漏洞检测,并不能直接分析目标程序的二进制代码,这个缺点也限制了这些系统的用途。
发明内容
本发明针对现有技术中的系统上存在的上述不足,提出了一种计算机程序实际运行时触发软件漏洞的检测系统。本发明通过结合动态程序分析和静态分析路径补全这两种技术,既能检测到那些在程序实际运行时才会触发的漏洞,又能达到较高的程序路径覆盖率,对动态分析过程中没有覆盖到的路径进行漏洞检测,提高了漏洞检测的成功率,降低了漏洞误报率。同时,静态分析路径补全技术只分析动态分析未执行到的路径,而并非全部的程序路径,这样大大降低了时间和系统资源的开销。
本发明是通过以下技术方案实现的:
本发明包括:二进制代码动态插入模块、程序基本块识别模块、函数调用图构建模块、控制流图构建模块、函数识别模块、静态分析模块;二进制代码动态插入模块将用户自定义的分析代码插入程序的任意位置,并跟踪程序调用的系统API,最后将分析结果通过自定义程序分析文件提供的回调函数返回并传递给程序基本块识别模块;程序基本块识别模块根据二进制代码动态插入模块传递的分析结果将目标程序按基本块规则划分,并将划分的基本块集合传递给函数调用图构建模块和控制流图构建模块;函数调用图构建模块对基本块识别模块传递过来的基本块集合进行处理,得到基本的函数块集合,并将此函数块集合传递给函数识别模块,根据返回的函数行为特征得到函数之间的相互调用关系,以此构建函数调用图,并将函数调用信息传递给控制流图构建模块;控制流图构建模块根据程序基本块识别模块传递来的基本块集合构建控制流节点集合并维护它们的相互关系,并将构建的节点集合和程序执行时获得的动态信息传递给静态分析模块,根据返回的包含未执行路径的完整执行信息构建完整的程序控制流信息和程序控制流图,并将此信息作为系统输出传递给用户;函数识别模块提取函数调用图构建模块传递过来的基本函数块的调用地址,根据此信息查找API数据库获得函数的索引值和行为特征,并将找到的函数索引值和行为特征作为输出返回给函数调用图构建模块;静态分析模块接受控制流图构建模块传递来的节点集合和记录的动态执行路径信息,补全未执行到的路径信息,生成完整的程序执行路径信息,并将这些信息作为输出返回给控制流图构建模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010513779.9/2.html,转载请声明来源钻瓜专利网。