[发明专利]一种基于受限集的程序语义缺陷自动修复方法有效
申请号: | 201910832302.8 | 申请日: | 2019-09-04 |
公开(公告)号: | CN110674031B | 公开(公告)日: | 2022-09-30 |
发明(设计)人: | 董玉坤;张莉;庞善臣;刘浩;尹文静 | 申请(专利权)人: | 中国石油大学(华东) |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/658 |
代理公司: | 北京慕达星云知识产权代理事务所(特殊普通合伙) 11465 | 代理人: | 曹鹏飞 |
地址: | 266000 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 受限 程序 语义 缺陷 自动 修复 方法 | ||
本发明公开了一种基于受限集的程序语义缺陷自动修复方法,首先,将常见的程序语义缺陷,根据语法和语义特征归纳总结为缺陷模式,针对变量相关的缺陷模式,将能触发缺陷的相关变量取值集合定义为受限集。然后,基于受限集,对每类缺陷模式预定义修复模板,对于每个缺陷,根据修复模板和检测得到的缺陷信息自动合成修复条件,遵循程序改动最小原则,通过控制流图,利用使用‑定义链确定修复位置并插入修复条件,实现程序自动修复。本发明提供的技术方案可以有针对性的对程序语义缺陷进行程序自动修复,并且具有修复率高,修复速度快的优点。
技术领域
本发明属于程序语义缺陷修复方法技术领域,更具体的说是涉及一种基于受限集的程序语义缺陷自动修复方法。
背景技术
程序语义缺陷自动修复的过程包括缺陷特征定义,缺陷检测,语义缺陷自动修复。语义缺陷修复是指对缺陷检测出的语义缺陷进行自动修复以防止程序异常,保证系统的正常运行。
越来越多的行业注重对于软件缺陷的检测,大型企业一般会单独设立软件测试工作组,进行缺陷检测,保证系统的正常运行,降低系统崩溃带来的各种损失。据统计,(缺陷检测以及程序语义缺陷的普遍性,)已开发的工程项目中,每一千行代码平均约产生5.1个缺陷。一般项目的代码会过万行,这样的千行缺陷率会导致系统缺少安全性。
人工修复缺陷的不足。传统修复方式即人工修复,开发人员忙于算法和功能的实现,缺少专业的安全人员,不能及时发现漏洞,面对数量庞大的漏洞,安全人员疲于应对,没有时间顾及隐含的部分语义缺陷,使得系统运营维护阶段的程序缺陷修复,需要耗费大量的人力物力,修复成本高。每修复一个花费时间,修复成本高,而程序自动修复能够为人工审计提供良好的补充,也更为经济。现有的程序自动修复的方法主要有:人工修复、基于搜索的修复方法、基于测试集的修复方法、基于语义的修复方法。
传统修复方法的缺点:人工修复不及时,不充分,成本高;基于搜索的修复方法,候选补丁多难找出正确补丁,资源开销大;基于测试集的修复方法,依赖测试集,仅保证功能性修复,修复具有盲目性。
因此,如何提供一种基于受限集的程序语义缺陷自动修复方法成为了本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于受限集的程序语义缺陷自动修复方法,基于受限集描述变量不合法区间的特点,检测到缺陷后,计算相关变量的受限集,合成修复条件。然后,遵循程序改动最小原则,通过控制流图,利用使用-定义链确定修复位置并插入修复条件,再次检测通过测试用例以及不存在同类缺陷或引入其他缺陷,表示修复成功。
为了实现上述目的,本发明采用如下技术方案:
一种基于受限集的程序语义缺陷自动修复方法,包括以下部分:
A、预定义修复模板,针对缺陷特征给出统一的修复方法,由缺陷报告中的缺陷类型确定对应的预定义修复模板;
B、对缺陷文件进行重建抽象语法树(Abstract Syntax Tree,AST),广度优先遍历AST,找到缺陷语句对应的树结点,更新抽象语法树结点上的缺陷相关信息,获取缺陷操作;
C、获得缺陷相关变量的受限集,进而得到补丁修复条件;
D、遵循程序改动最小原则,利用使用-定义链确定修复位置。
优选的,所述的部分A中,所述预定义修复模板,是通用的缺陷修复模板(repair-pattern);程序语义缺陷有语法语义特征,将语义缺陷归纳为缺陷模式,基于缺陷静态检测方法,检测出软件中存在的缺陷,缺陷信息以缺陷报告形式输出,包括缺陷文件名、缺陷类型、缺陷所在行等;由通用的缺陷修复模板,针对这些缺陷特征给出统一的修复方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国石油大学(华东),未经中国石油大学(华东)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910832302.8/2.html,转载请声明来源钻瓜专利网。