本发明专利技术结合机器学习方法、深度学习方法和GPU并行计算提出了一种基于代码仓库提交说明的PoC快速生成方法。该方法首先使用并行机器学习方法构造分类器,对代码仓库的提交说明进行分类,筛选出含代码的commit段。接着使用并行深度学习方法对这些commit段进行语义分析,根据语义特征进一步筛选出含有PoC的commit段,生成PoC集合。本发明专利技术首次发现代码仓库的提交说明可以作为PoC的数据来源,并提供了有效可行的提取PoC方法,能够快速地生成PoC集合,为软件项目的安全测试、渗透测试等提供大量可靠的测试实例,同时降低安全技术人员搜集漏洞验证样本的难度,进而为安全漏洞的研究带来帮助。
【技术实现步骤摘要】
本专利技术属于安全
,涉及一种基于代码仓库提交说明的PoC快速生成方法。
技术介绍
目前越来越多的软件项目使用版本控制功能,通过代码仓库来跟踪软件项目的整个开发过程。代码仓库可以在空间上保证项目内容的统一管理,也可在时间上保证开发过程中的每个更改细节都被记录并保存。每次更改代码的提交都附带提交说明,内容包括提交时间、提交作者、提交原因、提交内容等,提交目的可能是补充功能,或者修复项目中存在的安全漏洞等。PoC(ProofofConcept),中文解释为概念验证,在本专利技术中特指用于验证安全漏洞的测试代码。PoC可以还原安全漏洞的发生场景,证明软件系统中安全漏洞的存在和利用方式,被广泛应用于安全测试、渗透测试、安全漏洞验证等领域。然而,在实际应用中常常需要大量的PoC作为测试样本或验证样本,然而目前并没有可靠、充分的搜集来源。
技术实现思路
本专利技术提出一种基于代码仓库提交说明的PoC快速生成方法,目的在于快速地搜集大量可靠有效的PoC作为软件安全测试、渗透测试的输入实例,或者作为安全漏洞的验证样本,协助安全技术人员快速准确定位安全漏洞的位置,为安全漏洞的验证提供帮助。为实现上述目的,本专利技术采用如下技术方案:一种基于代码仓库提交说明的PoC快速生成方法,其步骤包括:1)从代码仓库提交说明中提取含有代码的commit段,生成待测集;2)提取步骤1)生成的待测集中commit段的语义特征,并根据commit段中是否含有PoC打正负标签,将语义特征协同正负标签一同作为输入,训练生成PoC分类器;3)使用步骤2)生成的PoC分类器,对步骤1)生成的待测集进行并行分类,将含有PoC的commit段生成PoC集合,输出PoC。在本专利技术中,PoC(概念验证)特指用于验证安全漏洞的测试代码;代码仓库用于跟踪软件项目的整个开发过程,在空间上保证项目内容的统一管理,在时间上保证开发过程中的每个更改细节都被记录并保存。本专利技术所述的代码仓库包括但不限于Git;commit段指的是代码仓库中每次变更代码提交时附带的提交说明,内容包括提交时间、提交作者、提交原因、提交内容。进一步地,步骤1)包括以下步骤:1-1)根据代码仓库提交说明中的关键字将代码日志切割为多个commit段,人工挑选含代码的commit段作为正训练样本,不含代码的commit段作为负训练样本。1-2)对正训练样本和负训练样本进行数据预处理。所述预处理包括文本分词(样本语言为中文)、去停止词和词根还原(样本语言为英文)。1-3)提取预处理后的正训练样本和负训练样本的特征,并进行文本向量化。1-4)基于向量化的文本,采用并行机器学习方法对代码仓库提交说明中所有的commit段分类。1-5)根据步骤1-4)分类的结果提取含有代码的commit段生成待测集。进一步地,步骤1-4)中,在GPU中开设多个线程,将传输自CPU的代码仓库提交说明中所有的commit段均分给多个线程,每个线程均完成相同的分类操作。进一步地,步骤2)包括以下步骤:2-1)在待测集的commit段中,选取含有PoC的段落作为正训练样本集,打正标签,非描述PoC的段落作为负训练样本集,打负标签。2-2)对正训练样本集和负训练样本集中的段落进行预处理,所述预处理包括分句处理。2-3)对预处理后的训练样本采用并行深度学习方法训练隐层模型,提取语义特征。2-4)将步骤2-3)所得最后隐层的语义特征,协同正标签和负标签,一同输入分类器,训练生成PoC分类器。进一步地,步骤2-3)采用并行深度学习方法训练隐层模型的步骤又包括:2-3-1)将预处理后的训练样本切分为多批次,每批次切分为多块;2-3-2)对于每一批次的训练样本,在GPU中开启多个线程,每个线程负责一块训练样本的隐层模型训练;2-3-3)每个线程的隐层模型训练完成后,将得到的结果进行统一化及整合后,对每个线程的训练结果进行更新,继续对下一批次的训练样本进行隐层模型训练。进一步地,步骤2-3)还包括在采用并行深度学习方法训练隐层模型时如需添加隐层则重复该步骤,最后再进入步骤2-4)。进一步地,步骤3)包括以下步骤:3-1)以步骤1)生成的待测集为测试样本,并将测试样本切分为数据1,数据2…,数据N。3-2)将切分后的数据1至数据N平均分配给GPU中开辟的多个线程,每个线程并发执行步骤2)生成的PoC分类器,对本线程的测试样本进行语义分析和分类判断,将结果返回给CPU。3-3)CPU根据步骤3-2)返回的结果,将所含代码为PoC的commit段生成PoC集合,输出PoC。进一步地,本专利技术所述的并行方法是基于GPU的,GPU的并行贯穿于步骤1-4)的机器学习方法、步骤2-3)的深度学习方法和步骤3)的并行分类过程。其中,步骤1-4)所述的并行机器学习方法的目标是通过分类获得含有代码的commit段,并不限定具体模型,因此所有得以实现该目标的机器学习模型均可用于该步骤;步骤2-3)所述的并行深度学习方法的目标是提取语义特征并分类获得含有PoC的commit段,并不限定具体模型,因此所有得以实现该目标的深度学习模型均可用于该步骤。本专利技术的有益效果在于:申请人在研究过程中,经调查发现,在代码仓库中的关于修复安全漏洞的代码提交说明里,常常存在验证该安全漏洞的测试代码,用于解释本次提交的原因、验证提交前后的对比效果。本专利技术首次发现代码仓库的提交说明可以作为PoC的数据来源,并提供了有效可行的提取PoC方法,能够快速地生成PoC集合,为软件项目的安全测试、渗透测试等提供大量可靠的测试实例,同时降低安全技术人员搜集漏洞验证样本的难度,进而为安全漏洞的研究带来帮助。由于代码仓库的提交说明数据量庞大,导致分析过程耗时费力,本专利技术引入GPU并行计算来解决时间瓶颈问题。与CPU架构不同,GPU含有更多的晶体管用于数据处理而非数据缓存和逻辑控制,旨在解决高密度、高并行度的计算问题。GPU并行计算的最佳适用场景为数据量大并且重复的操作,例如深度学习中使用大量数据反复执行的模型训练等。因此本专利技术结合机器学习方法、深度学习方法和GPU并行计算提出了一种基于代码仓库提交说明的PoC快速生成方法。该方法首先使用并行机器学习方法构造分类器,对代码仓库的提交说明进行分类,筛选出含代码的commit段作为待测集。接着使用并行深度学习方法对待测集的commit段进行语义分析,根据语义特征进一步筛选出含有PoC的commit段,生成PoC集合。本专利技术适用于所有使用代码仓库进行版本控制的软件项目。因此对于任意使用代码仓库进行版本控制的软件项目,均可通过本专利技术快速地得到相应PoC集合,包括但不限于Android和LinuxKernel。附图说明图1是本专利技术基于代码仓库提交说明的PoC快速生成方法的示意图。图2是本专利技术使用并行机器学习方法生成含代码的commit待测集的流程图。图3是本专利技术使用深度学习方法训练模型生成PoC分类器的流程图。图4是本专利技术使用GPU并行训练隐层模型的流程图。图5是本专利技术使用PoC分类器对commit待测集分类的流程图。图6是本专利技术使用GPU并行分类的流程图。具体实施方式下面结合附图,通过实施例对本专利技术作进一步的说明。本专利技术基于代码仓库提交说明的PoC快速生成方法,其总本文档来自技高网...

【技术保护点】
一种基于代码仓库提交说明的PoC快速生成方法,其步骤包括:1)从代码仓库提交说明中提取含有代码的commit段,生成待测集;2)提取步骤1)生成的待测集中commit段的语义特征,并根据commit段中是否含有PoC打正负标签,将语义特征协同正负标签一同作为输入,训练生成PoC分类器;3)使用步骤2)生成的PoC分类器,对步骤1)生成的待测集进行并行分类,将含有PoC的commit段生成PoC集合,输出PoC。
【技术特征摘要】
1.一种基于代码仓库提交说明的PoC快速生成方法,其步骤包括:1)从代码仓库提交说明中提取含有代码的commit段,生成待测集;2)提取步骤1)生成的待测集中commit段的语义特征,并根据commit段中是否含有PoC打正负标签,将语义特征协同正负标签一同作为输入,训练生成PoC分类器;3)使用步骤2)生成的PoC分类器,对步骤1)生成的待测集进行并行分类,将含有PoC的commit段生成PoC集合,输出PoC。2.如权利要求1所述的基于代码仓库提交说明的PoC快速生成方法,其特征在于,所述代码仓库包括Git。3.如权利要求1所述的基于代码仓库提交说明的PoC快速生成方法,其特征在于,所述commit段指的是所述代码仓库中每次变更代码提交时附带的提交说明,所述commit段的内容包括提交时间、提交作者、提交原因、提交内容。4.如权利要求1所述的基于代码仓库提交说明的PoC快速生成方法,其特征在于,步骤1)包括以下步骤:1-1)根据代码仓库提交说明中的关键字将代码日志切割为多个commit段,人工挑选含代码的commit段作为正训练样本,不含代码的commit段作为负训练样本;1-2)对正训练样本和负训练样本进行数据预处理,所述预处理包括对中文样本进行文本分词以及对英文样本进行去停止词和词根还原;1-3)提取预处理后的正训练样本和负训练样本的特征,并进行文本向量化;1-4)基于向量化的文本,采用并行机器学习方法对代码仓库提交说明中所有的commit段分类;1-5)根据步骤1-4)分类的结果提取含有代码的commit段生成待测集。5.如权利要求4所述的基于代码仓库提交说明的PoC快速生成方法,其特征在于,步骤1-3)中,将预处理后挑选出的词用作构建文本向量空间的特征项,选取权重算法为每个特征项赋权值,构建文本向量。6.如权利要求4所述的基于代码仓库提交说明的PoC快速生成方法,其特征在于,步骤1-4)中,在GPU中开设多个线程,将传输自C...
【专利技术属性】
技术研发人员:赵丝喆,武志飞,黄小芳,吴敬征,杨牧天,李牧,武延军,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。