CN114547619B - 一种基于树的漏洞修复系统及修复方法 - Google Patents
一种基于树的漏洞修复系统及修复方法 Download PDFInfo
- Publication number
- CN114547619B CN114547619B CN202210027014.7A CN202210027014A CN114547619B CN 114547619 B CN114547619 B CN 114547619B CN 202210027014 A CN202210027014 A CN 202210027014A CN 114547619 B CN114547619 B CN 114547619B
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- submission
- introduction
- data
- repair
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012549 training Methods 0.000 claims abstract description 28
- 238000012360 testing method Methods 0.000 claims abstract description 23
- 230000008439 repair process Effects 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 14
- 230000009193 crawling Effects 0.000 claims description 12
- 238000012216 screening Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 9
- 238000010606 normalization Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 8
- 238000010845 search algorithm Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于树的漏洞修复系统及修复方法,包括:构建漏洞数据集;将漏洞数据集中的代码生成语法树AST,对语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据依赖和控制依赖并形成新的语法树AST;对新的语法树AST进行抽象化和规范化处理得到token序列;将漏洞数据集分为训练集与测试集,将token序列和训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;将测试集转换为输入序列并输入至训练好的seq2seq模型中,得到修复的测试集的代码。本发明使用语法树表征代码并结合漏洞引入的启发式规则,对最终生成的修复代码进行优化,使得修复代码能够更好的使用,并且自动化的漏洞修复使得漏洞修复的成本降低,提高了修复速度。
Description
技术领域
本发明属于软件调试领域,具体涉及一种基于树的漏洞修复系统及修复方法。
背景技术
随着软件的演化,漏洞的引入与产生难以避免,且随着软件规模的增加,软件漏洞的修复难度也随之增加。漏洞的产生对软件安全产生了威胁,它们的到来可能会给企业或者个人带来一些数据泄漏或者经济损失等问题。因此,为了更好的提高软件可靠性并且降低开发成本,研究人员提出了关于自动化的漏洞修复技术来自动修复具有漏洞的软件程序。
传统的漏洞修复方法大多依靠于bug修复方法,但近年来随着对漏洞的研究的增多,越来越多的研究人员发现漏洞与bug在代码数据以及报告上的区别,因此从漏洞的数据进行出发,才能更好的研究出适用于漏洞的自动修复方法。
发明内容
发明目的:本发明的目的是提供一种修复正确率高、漏洞特征提取能力优异、泛化能力强的漏洞修复系统;本发明的另一目的是提供一种漏洞修复方法。
技术方案:本发明所述的漏洞修复系统,包括:漏洞数据集构建模块,用以从漏洞数据库CVE中以特定的关键词来爬取漏洞数据,对该漏洞数据进行筛选并形成初步数据集;在开源代码库Github中收集初步数据集中的漏洞的引入提交与修复提交并构建为引入-修复对,将引入-修复对中的代码注释进行删除并形成漏洞数据集;语法树生成模块,用以将漏洞数据集中的代码生成语法树AST,对语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据流依赖和控制流依赖并形成新的语法树AST;数据抽象化规范化处理模块,用以对新的语法树AST进行抽象化和规范化处理得到token序列;模型训练模块,用以将漏洞数据集分为训练集与测试集,将token序列以及训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;其中,seq2seq模型中采取带有自注意力机制的Transformer模型;漏洞修复模块,用以将测试集转换为输入序列并输入至训练好的seq2seq模型中,得到修复的测试集的代码。
进一步的,在漏洞数据集构建模块中,
在漏洞数据库CVE中对包含漏洞引入特征的特定的关键字,使用python爬虫进行漏洞数据的爬取,对漏洞数据进行筛选并形成初步数据集;在初步数据集中寻找漏洞的引入提交与修复提交并构建为引入-修复对;寻找的方法为:在开源代码库Github中的漏洞报告中查看参考链接,寻找相关评论中的漏洞的引入提交与修复提交;或者在开源代码库Github中直接搜索漏洞CVE-ID,找到漏洞的引入提交与修复提交;将引入-修复对中的代码注释进行删除,将删除代码注释后的引入-修复对构建为漏洞数据集。
进一步的,在语法树生成模块中,
数据流依赖和控制流依赖是利用上下文流图中的概念添加到进行差异操作后的语法树AST上并形成新的语法树AST;其中,上下文流图中的概念的具体规则如下:
第一次遍历语句,寻找漏洞读取LLVM IR语句一次,存储函数名和返回语句;
第二次遍历语句,根据以下规则集添加节点和边:
一个基本块内的数据依赖是连接的;块间依赖关系既可以直接连接,也可以通过标签标识符连接;没有数据流父节点的标识符连接到它们的根。
进一步的,在数据抽象化规范化处理模块中,
对新的语法树AST进行抽象化和规范化处理的过程为:将新的语法树AST中代码的变量名、方法名、数值分别表示为var、fun、num,得到表示后的代码;将表示后的代码拆分为token序列。
进一步的,在模型训练模块中,
在Transformer模型中,编码器用于映射一个符号表示的输入序列(x1,…,xn)到嵌入表示z=(z1,…),映射信息包含了输入的各个部分信息,且各个部分是相互关联的;解码器利用嵌入表示z来合并上下文信息并生成一个输出序列符号(y1,…,ym);在每一步中,当生成下一个输出序列符号时,Transformer模型将先前生成的所有输出序列符号作为额外的输入使用;在生成的输出序列符号中使用beam search算法选择最优的输出序列符号并作为最终的输出结果。
本发明所述的漏洞修复方法,包括:
(1)从漏洞数据库CVE中以特定的关键词来爬取漏洞数据,对该漏洞数据进行筛选并形成初步数据集;在开源代码库Github中收集初步数据集中的漏洞的引入提交与修复提交并构建为引入-修复对,将引入-修复对中的代码注释进行删除并形成漏洞数据集;
(2)将漏洞数据集中的代码生成语法树AST,对语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据流依赖和控制流依赖并形成新的语法树AST;
(3)对新的语法树AST进行抽象化和规范化处理得到token序列;
(4)将漏洞数据集分为训练集与测试集,将token序列以及训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;其中,seq2seq模型中采取带有自注意力机制的Transformer模型;
(5)将测试集转换为输入序列并输入至训练好的seq2seq模型中,得到修复的测试集的代码。
进一步的,在步骤(1)中,
在漏洞数据库CVE中对包含漏洞引入特征的特定的关键字,使用python爬虫进行漏洞数据的爬取,对漏洞数据进行筛选并形成初步数据集;在初步数据集中寻找漏洞的引入提交与修复提交并构建为引入-修复对;寻找的方法为:在开源代码库Github中的漏洞报告中查看参考链接,寻找相关评论中的漏洞的引入提交与修复提交;或者在开源代码库Github中直接搜索漏洞CVE-ID,找到漏洞的引入提交与修复提交;将引入-修复对中的代码注释进行删除,将删除代码注释后的引入-修复对构建为漏洞数据集。
进一步的,在步骤(2)中,
数据流依赖和控制流依赖是利用上下文流图中的概念添加到进行差异操作后的语法树AST上并形成新的语法树AST;其中,上下文流图中的概念的具体规则如下:
第一次遍历语句,寻找漏洞读取LLVM IR语句一次,存储函数名和返回语句;
第二次遍历语句,根据以下规则集添加节点和边:
一个基本块内的数据依赖是连接的;块间依赖关系既可以直接连接,也可以通过标签标识符连接;没有数据流父节点的标识符连接到它们的根。
进一步的,在步骤(3)中,
对新的语法树AST进行抽象化和规范化处理的过程为:将新的语法树AST中代码的变量名、方法名、数值分别表示为var、fun、num,得到表示后的代码;将表示后的代码拆分为token序列。
进一步的,在步骤(4)中,
在Transformer模型中,编码器用于映射一个符号表示的输入序列(x1,…,xn)到嵌入表示z=(z1,…),映射信息包含了输入的各个部分信息,且各个部分是相互关联的;解码器利用嵌入表示z来合并上下文信息并生成一个输出序列符号(y1,…,ym);在每一步中,当生成下一个输出序列符号时,Transformer模型将先前生成的所有输出序列符号作为额外的输入使用;在生成的输出序列符号中使用beam search算法选择最优的输出序列符号并作为最终的输出结果。
有益效果:本发明与现有技术相比,其显著优点是:1、修复正确率高:使用带有自注意力机制的transformer模型,从而提升修复的正确率;2、漏洞特征提取能力优异:基于漏洞引入的启发式规则,对漏洞的引入提交与修复提交进行相关语义的表示,更好的提取漏洞特征;3、泛化能力强:基于树的语义表征在转换为序列时,相对序列较小,更好的让seq2seq模型学习特征,从而生成修复模版,提升了seq2seq模型的泛化能力。
附图说明
图1是本发明的流程图;
图2是seq2seq模型内部的处理流程图。
具体实施方式
以下结合附图对本发明的具体实施方式进行说明。
实施例1
如图1所示,所述的漏洞修复系统,包括:
漏洞数据集构建模块,用以从漏洞数据库CVE中以特定的关键词来爬取漏洞数据,对该漏洞数据进行筛选并形成初步数据集;在开源代码库Github中收集初步数据集中的漏洞的引入提交与修复提交并构建为引入-修复对,将引入-修复对中的代码注释进行删除并形成漏洞数据集。
在漏洞数据库CVE中对包含漏洞引入特征的特定的关键字(如“introduced”,“caused by”,“because of”等),使用python爬虫进行漏洞数据的爬取,对漏洞数据进行筛选并形成初步数据集;在初步数据集中寻找漏洞的引入提交与修复提交并构建为引入-修复对;寻找的方法为:在开源代码库Github中的漏洞报告中查看参考链接,寻找相关评论中的漏洞的引入提交与修复提交;或者在开源代码库Github中直接搜索漏洞CVE-ID,找到漏洞的引入提交与修复提交;将引入-修复对中的代码注释进行删除,将删除代码注释后的引入-修复对构建为漏洞数据集。
表1展示了漏洞数据集中的某一样本;其中,代码语言为c语言。
表1漏洞数据集中某一样本
语法树生成模块,用以将漏洞数据集中的代码生成语法树AST,对语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据流依赖和控制流依赖并形成新的语法树AST。其中java语言选用Gumtree工具,c语言选用clang工具进行差异(diff)操作。
数据流依赖和控制流依赖是利用上下文流图中的概念添加到进行差异操作后的语法树AST上并形成新的语法树AST;其中,上下文流图中的概念的具体规则如下:
第一次遍历语句,寻找漏洞读取LLVM IR语句一次,存储函数名和返回语句。
第二次遍历语句,根据以下规则集添加节点和边:
一个基本块内的数据依赖是连接的;块间依赖关系既可以直接连接,也可以通过标签标识符连接;没有数据流父节点的标识符连接到它们的根。
数据抽象化规范化处理模块,用以对新的语法树AST进行抽象化和规范化处理得到token序列。
对新的语法树AST进行抽象化和规范化处理的过程为:将新的语法树AST中代码的变量名、方法名、数值分别表示为var、fun、num,得到表示后的代码;将表示后的代码拆分为token序列。
模型训练模块,用以将漏洞数据集分为训练集与测试集(漏洞数据集的80%作为训练集,剩下的20%作为测试集),将token序列以及训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;其中,seq2seq模型中采取带有自注意力机制的Transformer模型。其中,seq2seq模型内部的处理流程如图2所示。
在Transformer模型中,编码器(Encoder)包括六个相同的层,将需要输入的序列输入到编码器中,每一层由两个子层组成:自注意力机制和前馈神经网络;自注意机制从编码器中获取一组输入编码,权衡输入编码之间的相关性并生成一组输出编码;然后前馈神经网络单独处理每个输出编码,这些输出编码最后作为输入传递给下一个编码器,最终生成编码。解码器(Decoder)包括六层,且每一层包括三个子层;解码器从编码器生成的编码中提取相关信息。
编码器用于映射一个符号表示的输入序列(x1,…,xn)到嵌入表示z=(z1,…),映射信息包含了输入的各个部分信息,且各个部分是相互关联的;解码器利用嵌入表示z来合并上下文信息并生成一个输出序列符号(y1,…,ym);在每一步中,当生成下一个输出序列符号时,Transformer模型将先前生成的所有输出序列符号作为额外的输入使用;在生成的输出序列符号中使用beam search算法选择最优的输出序列符号并作为最终的输出结果;其中,beam search算法在使用的时候,设置超参数B(束宽)为3,用来每一次挑选top B的结果。
漏洞修复模块,用以将测试集转换为输入序列并输入至训练好的seq2seq模型中,得到修复的测试集的代码。
实施例2
如图1所示,所述的漏洞修复方法,包括:
(1)从漏洞数据库CVE中以特定的关键词来爬取漏洞数据,对该漏洞数据进行筛选并形成初步数据集;在开源代码库Github中收集初步数据集中的漏洞的引入提交与修复提交并构建为引入-修复对,将引入-修复对中的代码注释进行删除并形成漏洞数据集。
在漏洞数据库CVE中对包含漏洞引入特征的特定的关键字(如“introduced”,“caused by”,“because of”等),使用python爬虫进行漏洞数据的爬取,对漏洞数据进行筛选并形成初步数据集;在初步数据集中寻找漏洞的引入提交与修复提交并构建为引入-修复对;寻找的方法为:在开源代码库Github中的漏洞报告中查看参考链接,寻找相关评论中的漏洞的引入提交与修复提交;或者在开源代码库Github中直接搜索漏洞CVE-ID,找到漏洞的引入提交与修复提交;将引入-修复对中的代码注释进行删除,将删除代码注释后的引入-修复对构建为漏洞数据集。
表1展示了漏洞数据集中的某一样本;其中,代码语言为c语言。
表1漏洞数据集中某一样本
(2)将漏洞数据集中的代码生成语法树AST,对语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据流依赖和控制流依赖并形成新的语法树AST。其中java语言选用Gumtree工具,c语言选用clang工具进行差异(diff)操作。
数据流依赖和控制流依赖是利用上下文流图中的概念添加到进行差异操作后的语法树AST上并形成新的语法树AST;其中,上下文流图中的概念的具体规则如下:
第一次遍历语句,寻找漏洞读取LLVM IR语句一次,存储函数名和返回语句。
第二次遍历语句,根据以下规则集添加节点和边:
一个基本块内的数据依赖是连接的;块间依赖关系既可以直接连接,也可以通过标签标识符连接;没有数据流父节点的标识符连接到它们的根。
(3)对新的语法树AST进行抽象化和规范化处理得到token序列。
对新的语法树AST进行抽象化和规范化处理的过程为:将新的语法树AST中代码的变量名、方法名、数值分别表示为var、fun、num,得到表示后的代码;将表示后的代码拆分为token序列。
(4)将漏洞数据集分为训练集与测试集(漏洞数据集的80%作为训练集,剩下的20%作为测试集),将token序列以及训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;其中,seq2seq模型中采取带有自注意力机制的Transformer模型。其中,seq2seq模型内部的处理流程如图2所示。
在Transformer模型中,编码器(Encoder)包括六个相同的层,将需要输入的序列输入到编码器中,每一层由两个子层组成:自注意力机制和前馈神经网络;自注意机制从编码器中获取一组输入编码,权衡输入编码之间的相关性并生成一组输出编码;然后前馈神经网络单独处理每个输出编码,这些输出编码最后作为输入传递给下一个编码器,最终生成编码。解码器(Decoder)包括六层,且每一层包括三个子层;解码器从编码器生成的编码中提取相关信息。
编码器用于映射一个符号表示的输入序列(x1,…,xn)到嵌入表示z=(z1,…),映射信息包含了输入的各个部分信息,且各个部分是相互关联的;解码器利用嵌入表示z来合并上下文信息并生成一个输出序列符号(y1,…,ym);在每一步中,当生成下一个输出序列符号时,Transformer模型将先前生成的所有输出序列符号作为额外的输入使用;在生成的输出序列符号中使用beam search算法选择最优的输出序列符号并作为最终的输出结果;其中,beam search算法在使用的时候,设置超参数B(束宽)为3,用来每一次挑选top B的结果。
(5)将测试集转换为输入序列并输入至训练好的seq2seq模型中,得到修复的测试集的代码。
Claims (10)
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 search算法选择最优的输出序列符号并作为最终的输出结果。
6.一种基于树的漏洞修复方法,包括:
(1)从漏洞数据库CVE中以特定的关键词来爬取漏洞数据,对该漏洞数据进行筛选并形成初步数据集;在开源代码库Github中收集所述初步数据集中的漏洞的引入提交与修复提交并构建为引入-修复对,将所述引入-修复对中的代码注释进行删除并形成漏洞数据集;
(2)将所述漏洞数据集中的代码生成语法树AST,对所述语法树AST进行差异操作,在进行差异操作后的语法树AST上添加数据流依赖和控制流依赖并形成新的语法树AST;
(3)对所述新的语法树AST进行抽象化和规范化处理得到token序列;
(4)将所述漏洞数据集分为训练集与测试集,将所述token序列以及所述训练集输入至seq2seq模型中进行训练得到训练好的seq2seq模型;其中,seq2seq模型中采取带有自注意力机制的Transformer模型;
(5)将所述测试集转换为输入序列并输入至所述训练好的seq2seq模型中,得到修复的测试集的代码。
7.根据权利要求6所述的基于树的漏洞修复方法,其特征在于:在步骤(1)中,
在漏洞数据库CVE中对包含漏洞引入特征的特定的关键字,使用python爬虫进行漏洞数据的爬取,对漏洞数据进行筛选并形成初步数据集;
在初步数据集中寻找漏洞的引入提交与修复提交并构建为引入-修复对;寻找的方法为:在开源代码库Github中的漏洞报告中查看参考链接,寻找相关评论中的漏洞的引入提交与修复提交;或者在开源代码库Github中直接搜索漏洞CVE-ID,找到漏洞的引入提交与修复提交;
将引入-修复对中的代码注释进行删除,将删除代码注释后的引入-修复对构建为漏洞数据集。
8.根据权利要求7所述的基于树的漏洞修复方法,其特征在于:在步骤(2)中,
数据流依赖和控制流依赖是利用上下文流图中的概念添加到进行差异操作后的语法树AST上并形成新的语法树AST;其中,上下文流图中的概念的具体规则如下:
第一次遍历语句,寻找漏洞读取LLVM IR语句一次,存储函数名和返回语句;
第二次遍历语句,根据以下规则集添加节点和边:
一个基本块内的数据依赖是连接的;
块间依赖关系既可以直接连接,也可以通过标签标识符连接;
没有数据流父节点的标识符连接到它们的根。
9.根据权利要求8所述的基于树的漏洞修复方法,其特征在于:在步骤(3)中,
对新的语法树AST进行抽象化和规范化处理的过程为:将新的语法树AST中代码的变量名、方法名、数值分别表示为var、fun、num,得到表示后的代码;将表示后的代码拆分为token序列。
10.根据权利要求9所述的基于树的漏洞修复方法,其特征在于:在步骤(4)中,
在Transformer模型中,编码器用于映射一个符号表示的输入序列(x1,…,xn)到嵌入表示z=(z1,…),映射信息包含了输入的各个部分信息,且各个部分是相互关联的;解码器利用嵌入表示z来合并上下文信息并生成一个输出序列符号(y1,…,ym);在每一步中,当生成下一个输出序列符号时,Transformer模型将先前生成的所有输出序列符号作为额外的输入使用;在生成的输出序列符号中使用beam search算法选择最优的输出序列符号并作为最终的输出结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210027014.7A CN114547619B (zh) | 2022-01-11 | 2022-01-11 | 一种基于树的漏洞修复系统及修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210027014.7A CN114547619B (zh) | 2022-01-11 | 2022-01-11 | 一种基于树的漏洞修复系统及修复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114547619A CN114547619A (zh) | 2022-05-27 |
CN114547619B true CN114547619B (zh) | 2024-04-19 |
Family
ID=81670049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210027014.7A Active CN114547619B (zh) | 2022-01-11 | 2022-01-11 | 一种基于树的漏洞修复系统及修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114547619B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129364B (zh) * | 2022-07-05 | 2023-04-18 | 四川大学 | 基于抽象语法树和图神经网络的指纹身份识别方法和系统 |
CN117113359B (zh) * | 2023-09-05 | 2024-03-19 | 四川大学 | 一种基于对抗迁移学习的预训练漏洞修复方法 |
CN117056940B (zh) * | 2023-10-12 | 2024-01-16 | 中关村科学城城市大脑股份有限公司 | 服务器系统漏洞修复方法、装置、电子设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101751388B1 (ko) * | 2016-07-05 | 2017-06-27 | (주)엔키소프트 | 오픈소스 취약점 분석 대상 검색 및 수집을 위한 빅데이터 분석 기반 웹 크롤링 시스템 및 그 방법 |
CN110543770A (zh) * | 2019-09-02 | 2019-12-06 | 南瑞集团有限公司 | 一种开源软件的漏洞检测方法、装置及系统 |
CN113297580A (zh) * | 2021-05-18 | 2021-08-24 | 广东电网有限责任公司 | 基于代码语义分析的电力信息系统安全防护方法及装置 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
CN113609488A (zh) * | 2021-07-19 | 2021-11-05 | 华东师范大学 | 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统 |
-
2022
- 2022-01-11 CN CN202210027014.7A patent/CN114547619B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101751388B1 (ko) * | 2016-07-05 | 2017-06-27 | (주)엔키소프트 | 오픈소스 취약점 분석 대상 검색 및 수집을 위한 빅데이터 분석 기반 웹 크롤링 시스템 및 그 방법 |
CN110543770A (zh) * | 2019-09-02 | 2019-12-06 | 南瑞集团有限公司 | 一种开源软件的漏洞检测方法、装置及系统 |
CN113297580A (zh) * | 2021-05-18 | 2021-08-24 | 广东电网有限责任公司 | 基于代码语义分析的电力信息系统安全防护方法及装置 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
CN113609488A (zh) * | 2021-07-19 | 2021-11-05 | 华东师范大学 | 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统 |
Non-Patent Citations (1)
Title |
---|
基于抽象语法树的智能化漏洞检测系统;陈肇炫;邹德清;李珍;金海;;信息安全学报;20200715(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114547619A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114547619B (zh) | 一种基于树的漏洞修复系统及修复方法 | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
CN108959433B (zh) | 一种从软件项目数据中提取知识图谱并问答的方法与系统 | |
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
KR20170021227A (ko) | 온톨로지 매핑 방법 및 장치 | |
WO2022108664A1 (en) | Automated merge conflict resolution with transformers | |
CN109799990A (zh) | 源代码注释自动生成方法及系统 | |
CN113609838B (zh) | 文档信息抽取及图谱化方法和系统 | |
CN114816497B (zh) | 基于bert预训练模型的链接生成方法 | |
Scholak et al. | DuoRAT: towards simpler text-to-SQL models | |
CN116561264A (zh) | 一种基于知识图谱的智能问答系统的构建方法 | |
CN115630368A (zh) | 基于自然语言处理与深度森林的Java漏洞分类方法 | |
CN115329088A (zh) | 图神经网络事件检测模型的鲁棒性分析方法 | |
CN107992324A (zh) | 一种基于约束求解的代码搜索方法 | |
Hu et al. | Deep-autocoder: Learning to complete code precisely with induced code tokens | |
CN117093222A (zh) | 一种基于改进转换器模型的代码参数摘要生成方法和系统 | |
Yang et al. | Smart contract vulnerability detection based on abstract syntax tree | |
CN116541286A (zh) | 一种基于插桩和符号执行的高覆盖率测试数据生成方法 | |
Wang et al. | Learning program representations with a tree-structured transformer | |
CN113076421A (zh) | 一种社交噪音文本实体关系抽取优化方法及系统 | |
Rajbhoj et al. | DocToModel: Automated Authoring of Models from Diverse Requirements Specification Documents | |
CN113032366A (zh) | 基于Flex和Bison的SQL语法树解析方法 | |
Zhang et al. | A technique for knowledge base verification | |
Kaur et al. | Review on Software Cloning and Clone Detection | |
Li et al. | ACAGNN: Source Code Representation Based on Fine-Grained Multi-view Program Features |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |