【技术实现步骤摘要】
一种基于树的漏洞修复系统及修复方法
[0001]本专利技术属于软件调试领域,具体涉及一种基于树的漏洞修复系统及修复方法。
技术介绍
[0002]随着软件的演化,漏洞的引入与产生难以避免,且随着软件规模的增加,软件漏洞的修复难度也随之增加。漏洞的产生对软件安全产生了威胁,它们的到来可能会给企业或者个人带来一些数据泄漏或者经济损失等问题。因此,为了更好的提高软件可靠性并且降低开发成本,研究人员提出了关于自动化的漏洞修复技术来自动修复具有漏洞的软件程序。
[0003]传统的漏洞修复方法大多依靠于bug修复方法,但近年来随着对漏洞的研究的增多,越来越多的研究人员发现漏洞与bug在代码数据以及报告上的区别,因此从漏洞的数据进行出发,才能更好的研究出适用于漏洞的自动修复方法。
技术实现思路
[0004]专利技术目的:本专利技术的目的是提供一种修复正确率高、漏洞特征提取能力优异、泛化能力强的漏洞修复系统;本专利技术的另一目的是提供一种漏洞修复方法。
[0005]技术方案:本专利技术所述的漏洞修复系统,包括: ...
【技术保护点】
【技术特征摘要】
1.一种基于树的漏洞修复系统,其特征在于,包括:漏洞数据集构建模块,用以从漏洞数据库CVE中以特定的关键词来爬取漏洞数据,对该漏洞数据进行筛选并形成初步数据集;在开源代码库Github中收集所述初步数据集中的漏洞的引入提交与修复提交并构建为引入
‑
修复对,将所述引入
‑
修复对中的代码注释进行删除并形成漏洞数据集;语法树生成模块,用以将所述漏洞数据集中的代码生成语法树AST,对所述语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据流依赖和控制流依赖并形成新的语法树AST;数据抽象化规范化处理模块,用以对所述新的语法树AST进行抽象化和规范化处理得到token序列;模型训练模块,用以将所述漏洞数据集分为训练集与测试集,将所述token序列以及所述训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;其中,seq2seq模型中采取带有自注意力机制的Transformer模型;漏洞修复模块,用以将所述测试集转换为输入序列并输入至所述训练好的seq2seq模型中,得到修复的测试集的代码。2.根据权利要求1所述的基于树的漏洞修复系统,其特征在于:在漏洞数据集构建模块中,在漏洞数据库CVE中对包含漏洞引入特征的特定的关键字,使用python爬虫进行漏洞数据的爬取,对漏洞数据进行筛选并形成初步数据集;在初步数据集中寻找漏洞的引入提交与修复提交并构建为引入
‑
修复对;寻找的方法为:在开源代码库Github中的漏洞报告中查看参考链接,寻找相关评论中的漏洞的引入提交与修复提交;或者在开源代码库Github中直接搜索漏洞CVE
‑
ID,找到漏洞的引入提交与修复提交;将引入
‑
修复对中的代码注释进行删除,将删除代码注释后的引入
‑
修复对构建为漏洞数据集。3.根据权利要求2所述的基于树的漏洞修复系统,其特征在于:在语法树生成模块中,数据流依赖和控制流依赖是利用上下文流图中的概念添加到进行差异操作后的语法树AST上并形成新的语法树AST;其中,上下文流图中的概念的具体规则如下:第一次遍历语句,寻找漏洞读取LLVM IR语句一次,存储函数名和返回语句;第二次遍历语句,根据以下规则集添加节点和边:一个基本块内的数据依赖是连接的;块间依赖关系既可以直接连接,也可以通过标签标识符连接;没有数据流父节点的标识符连接到它们的根。4.根据权利要求3所述的基于树的漏洞修复系统,其特征在于:在数据抽象化规范化处理模块中,对新的语法树AST进行抽象化和规范化处理的过程为:将新的语法树AST中代码的变量名、方法名、数值分别表示为var、fun、num,得到表示后的代码;将表示后的代码拆分为token序列。5.根据权利要求4所述的基于树的漏洞修复系统,其特征在于:在模型训练模块中,
在Transformer模型中,编码器用于映射一个符号表示的输入序列(x1,
…
,xn)到嵌入表示z=(z1,
…
),映射信息包含了输入的各个部分信息,且各个部分是相互关联的;解码器利用嵌入表示z来合并上下文信息并生成一个输出序列符号(y1,
…
,ym);在每一步中,当生成下一个输出序列符号时,Transformer模型将先前生成的所有输出序列符号作为额外的输入使用;在生成的输出序列符号中使用beam sear...
【专利技术属性】
技术研发人员:李越,薄莉莉,孙小兵,吴潇雪,李斌,
申请(专利权)人:扬州大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。