当前位置: 首页 > 专利查询>清华大学专利>正文

基于规约导向的错误处理缺陷的检测方法及系统技术方案

技术编号:32026989 阅读:24 留言:0更新日期:2022-01-22 18:58
本发明专利技术提供一种基于规约导向的错误处理缺陷的检测方法及系统,属于计算机程序漏洞检测技术领域,通过获取待测的源代码文件以及规约文件;源代码文件以及规约文件进行预处理获得CFA图结构和规约实例;将规约实例中各个目标接口的调用者对应的CFA图结构分别作为待分析入口,通过符号执行技术获得两个以上的覆盖上下文信息的符号路径信息;对每个符号路径信息根据规约实例的目标接口进行路径提取,获得路径集合;利用符号路径以及规约实例,进行规约导向的错误处理缺陷检测,为多种类别的错误处理缺陷检测提供了可行的解决方法。本发明专利技术达到了提升错误处理缺陷的检测精度和效率的技术效果。术效果。术效果。

【技术实现步骤摘要】
基于规约导向的错误处理缺陷的检测方法及系统


[0001]本专利技术属于计算机程序漏洞检测
,具体涉及一种基于规约导向的错误处理缺陷的检测方法、系统、电子设备以及存储介质。

技术介绍

[0002]软件开发者常使用应用程序编程接口(Application Program Interface, API)来快速构建软件系统。在使用接口进行开发时,软件开发者需要遵循接口的功能和约束。当接口使用出错时,要及时的进行错误处理操作,否则可能会造成模块功能失效、程序崩溃等灾难。
[0003]静态分析是一种检测错误处理缺陷的常用方法。传统的静态分析工具(例如Cppcheck、Clang Static Analyzer、Infer等)大多基于固定的缺陷模式进行检测,导致对很多的库函数以及用户自定义函数引发的错误处理缺陷支持不足,降低了传统静态分析工具在错误处理缺陷检测中的适用性。而现有的专门针对错误处理缺陷搭建的工具如EH

Miner、EPEx、ErrDoc等,存在的弊端如下:1)EH

Miner工具通过数据挖掘方法找到常见的规则,而后利用该规则进行错误处理缺陷的查找;这种方法虽然能够找到常见的错误处理缺陷,但是对复杂模式的缺陷,如错误处理导致的资源泄露问题,并没有好的解决方案;并且由于这类缺陷往往具有不同的上下文信息,导致难以通过数据挖掘的方法找到通用的错误处理代码规则。也就是说,对多种错误处理缺陷模式支持不足,难以找到适用于复杂模式的错误处理缺陷的检测方法。
[0004]2)而EPEx和ErrDoc工具在对复杂模式的缺陷检测的过程中,大量上下文信息的获取导致了消耗大量时间,存在缺陷检测效率低下的问题。

技术实现思路

[0005]本专利技术提供一种基于规约导向的错误处理缺陷的检测方法、系统、电子设备以及存储介质,用以克服现有技术中存在的至少一个技术问题。
[0006]为实现上述目的,本专利技术提供一种基于规约导向的错误处理缺陷的检测方法,方法包括:获取待测的源代码文件以及规约文件;将源代码文件进行编译获得程序的中间表示,并将程序的中间表示进行转化获得CFA图结构;以及,将规约文件解析为规约实例;对规约实例进行筛选,获得存在目标接口的调用者的CFA图结构的规约实例;将规约实例中各个目标接口的调用者对应的CFA图结构分别作为待分析入口,对所有待分析入口逐个进行CFA图结构分析;其中,CFA图结构分析包括通过符号执行技术获得两个以上的覆盖上下文信息的符号路径信息;对每个符号路径信息根据规约实例的目标接口进行路径提取,获得路径集合;利用缺陷检测算法和规约实例,对路径集合中每条路径进行缺陷检测,并获得错
误处理缺陷检测数据;利用错误处理缺陷检测数据形成错误处理缺陷报告。
[0007]进一步,优选地,利用错误处理缺陷检测数据形成错误处理缺陷报告,包括:根据目标接口使用情况对错误处理缺陷检测数据进行主观缺陷判定,其中,将因目标接口的规约描述错误引起的错误处理缺陷作为主观缺陷;过滤错误处理缺陷检测数据中的主观缺陷,形成错误处理缺陷报告。
[0008]进一步,优选地,通过符号执行技术获得两个以上的覆盖上下文信息的符号路径信息,包括:对规约实例中每个目标接口的调用者的CFA图结构,通过符号执行技术对CFA图结构的路径进行抽象描述,获得多个覆盖上下文信息的符号路径信息;其中,每条路径由各个动作和各个动作的结束时值的映射关系组成。
[0009]进一步,优选地,通过符号执行技术对CFA图结构的路径进行抽象描述,获得多个覆盖上下文信息的符号路径信息;包括:提取CFA图结构的每条路径上的每个动作并对动作的结束时值进行分析;基于设定的符号值对动作分配唯一的ID;其中,符号值包括动作产生的ID、动作产生的接口以及所对应的参数位置n;分析每条路径的条件判断语句Assume,函数调用语句 Call 和返回语句 Return,获得覆盖上下文的符号路径信息。
[0010]进一步,优选地,规约文件包括描述目标接口的错误处理规约和资源申请和释放函数对规约;将规约文件解析为规约实例,包括将描述目标接口的错误处理规约进行解析获得错误处理规约实例,以及将资源申请和释放函数对规约解析为函数对约束实例;对路径集合中每条路径进行缺陷检测中,缺陷检测为依次进行第一缺陷检测,第二缺陷检测以及第三缺陷检测;其中,第一缺陷为错误处理过程中检测条件缺失,第二缺陷为错误处理过程中检测条件错误以及第三缺陷为错误处理导致资源泄漏。
[0011]进一步,优选地,对路径集合中的每一条路径依次进行第一缺陷,第二缺陷以及第三缺陷检测,并获得错误处理缺陷信息;包括,对路径集合中的每一条路径是否存在第一缺陷进行判定;若待检测路径不包含针对目标接口条件判断语句Assume,则确定当前路径存在第一缺陷;若路径包含针对目标接口条件判断语句Assume;则对路径继续进行是否存在第二缺陷进行判定;若待检测路径的检测条件与错误处理规约实例描述的检测条件不匹配,则确定当前路径存在第二缺陷;若路径的检测条件与错误处理规约实例描述的检测条件匹配;则对路径继续进行是否存在第三缺陷进行判定;判断路径在目标接口进行错误处理之前是否存在资源申请的操作,若存在,则判断路径在目标接口进行错误处理之后是否存在资源释放动作;若在目标接口进行错误处理之后不存在资源释放动作,则确定当前路径存在第三缺陷。
[0012]进一步,优选地,根据目标接口使用情况对错误处理缺陷检测数据进行主观缺陷判定,包括:对当前错误处理缺陷数据进行目标接口的使用情况分析,获得统计信息;其中,统
计信息包括目标接口的各个类别的错误处理缺陷个数和目标接口被调用的总次数;利用过滤阈值对错误处理缺陷检测数据进行是否是主观缺陷进行判定;其中,过滤阈值为当前错误处理缺陷信息的目标接口的预设类别的错误处理缺陷个数与目标接口被调用的总次数的比值;当过滤阈值不低于0.75时,则确定当前错误处理缺陷数据为主观缺陷信息。
[0013]为了解决上述问题,本专利技术还提供一种基于规约导向的错误处理缺陷的检测系统,包括:获取单元,用于获取待测的源代码文件以及规约文件;预处理单元,用于将源代码文件进行编译获得程序的中间表示,并将程序的中间表示进行转化获得CFA图结构;以及,将规约文件解析为规约实例;对规约实例进行筛选,获得存在目标接口的调用者的CFA图结构的规约实例;分析单元,用于将规约实例中各个目标接口的调用者对应的CFA图结构分别作为待分析入口,对所有待分析入口逐个进行CFA图结构分析;其中, CFA图结构分析包括通过符号执行技术获得两个以上的覆盖上下文信息的符号路径信息;用于对每个符号路径信息根据规约实例的目标接口进行路径提取,获得路径集合;利用缺陷检测算法和规约实例,对路径集合中每条路径进行缺陷检测,并获得错误处理缺陷检测数据;错误处理缺陷报告获取单元,用于利用错误处理缺陷检测数据形成错误处理缺陷报告。
[0014]为了解决上述问题,本专利技术还提供一种电子设备,电子设备包括:存储器,存储至少本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于规约导向的错误处理缺陷的检测方法,其特征在于,包括:获取待测的源代码文件以及规约文件;将所述源代码文件进行编译获得程序的中间表示,并将所述程序的中间表示进行转化获得CFA图结构;以及,将所述规约文件解析为规约实例;对所述规约实例进行筛选,获得存在目标接口的调用者的CFA图结构的规约实例;将所述规约实例中各个目标接口的调用者对应的CFA图结构分别作为待分析入口,对所有待分析入口逐个进行CFA图结构分析;其中,所述CFA图结构分析包括通过符号执行技术获得两个以上的覆盖上下文信息的符号路径信息;对每个符号路径信息根据所述规约实例的目标接口进行路径提取,获得路径集合;利用缺陷检测算法和所述规约实例,对所述路径集合中每条路径进行缺陷检测,并获得错误处理缺陷检测数据;利用所述错误处理缺陷检测数据形成错误处理缺陷报告。2.根据权利要求1所述的检测方法,其特征在于,利用所述错误处理缺陷检测数据形成错误处理缺陷报告,包括:根据目标接口使用情况对所述错误处理缺陷检测数据进行主观缺陷判定,其中,将因目标接口的规约描述错误引起的错误处理缺陷作为主观缺陷;过滤所述错误处理缺陷检测数据中的主观缺陷,形成错误处理缺陷报告。3.根据权利要求1所述的检测方法,其特征在于,通过符号执行技术获得两个以上的覆盖上下文信息的符号路径信息,包括:对规约实例中每个目标接口的调用者的CFA图结构,通过符号执行技术对所述CFA图结构的路径进行抽象描述,获得多个覆盖上下文信息的符号路径信息;其中,每条路径由各个动作和各个动作的结束时值的映射关系组成。4.根据权利要求3所述的检测方法,其特征在于,通过符号执行技术对CFA图结构的路径进行抽象描述,获得多个覆盖上下文信息的符号路径信息;包括:提取所述CFA图结构的每条路径上的每个动作并对所述动作的结束时值进行分析;基于设定的符号值对所述动作分配唯一的ID;其中,所述符号值包括动作产生的ID、动作产生的接口以及所对应的参数位置n;分析每条路径的条件判断语句Assume,函数调用语句 Call 和返回语句 Return,获得覆盖上下文的符号路径信息。5.根据权利要求1所述的检测方法,其特征在于,所述规约文件包括描述目标接口的错误处理规约和资源申请和释放函数对规约;将所述规约文件解析为规约实例,包括将所述描述目标接口的错误处理规约进行解析获得错误处理规约实例,以及将所述资源申请和释放函数对规约解析为函数对约束实例;对路径集合中每条路径进行缺陷检测中,所述缺陷检测为依次进行第一缺陷检测,第二缺陷检测以及第三缺陷检测;其中,第一缺陷为错误处理过程中检测条件缺失,第二缺陷为错误处理过程中检测条件错误以及第三缺陷为错误处理导致资源泄漏。6.根据权利要求5所述的检测方法,其特征在于,对所述路径集合中的每一条路径依次进行第一缺陷,第二缺陷以及第三缺陷检测,并
获得错误处理缺陷信息;包括,对所...

【专利技术属性】
技术研发人员:李池周旻顾明
申请(专利权)人:清华大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1