[发明专利]一种基于Github的软件缺陷检测模型建立、检测方法及系统有效
申请号: | 202010140642.7 | 申请日: | 2020-03-03 |
公开(公告)号: | CN111459799B | 公开(公告)日: | 2023-03-10 |
发明(设计)人: | 柯鑫;叶贵鑫;汤战勇;尹小燕;龚晓庆;房鼎益 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 李婷;金艳婷 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 github 软件 缺陷 检测 模型 建立 方法 系统 | ||
本发明公开了一种基于Github的软件缺陷检测模型建立、检测方法及系统,其中检测模型建立包括:首先对Github平台中的数据集进行预处理,得到符合要求的变更记录及其对应的Bug‑Fix文件对;然后对符合要求的变更记录进行处理,生成切片的向量及标签;最后将切片的向量及标签输入到双向LSTM模型中进行训练和学习,得到训练好的检测模型。对于待检测的目标文件,处理得到该目标文件的向量后输入到检测模型中,得到检测结果。本发明方法解决了目前基于源码进行学习的缺陷检测面临的数据集过小而必须面临的数据不平衡,数据多样性不够,模型泛化能力差的问题;且能够达到更高的检测准确率。
技术领域
本发明属于代码审计技术领域,具体涉及一种基于Github的软件缺陷检测模型建立、检测方法及系统。
背景技术
目前代码审计领域中已经存在各种各样的缺陷分析工具,这些工具试图检测出软件中的常见缺陷。静态检测工具(例如Clang)无需执行程序即可执行此操作。动态检测工具通过在真实或虚拟处理器上重复执行许多测试用例来检测缺陷。静态和动态检测工具都是基于人工定义缺陷规则的工具,因此仅限于人工设计规则,并且不能保证对代码库的完整测试。符号执行将输入数据替换为符号值,并在程序的控制流程图上进行分析与诊断。尽管它可以探查所有可行的程序路径,但是符号执行非常昂贵,并且无法很好地扩展到大型程序。除了这些传统工具之外,最近还有大量关于使用机器学习进行程序分析的工作。大量开放源代码平台如Github为直接从挖掘的数据中学习软件缺陷的模式提供了机会。
目前,在缺陷检测领域利用机器学习与深度学习实现缺陷检测的技术有很多,Hovsepyan等人通过词袋模型对Java源代码进行表示之后,利用支持向量机(SVM)来预测源码的标签。但是,他们的工作仅限于在单个软件存储库上进行训练和评估。Mou等人通过词嵌入源代码的抽象语法树中的节点,并训练基于树的卷积神经网络,实现了缺陷检测,这项工作探索了深度学习在程序分析中的潜力。Kapur等利用8种机器学习的方法,学习缺陷的特征,给出源码文件中含有缺陷的可能性。Li等人利用循环神经网络 (RNN)训练与库/API函数调用相关的代码片段,以检测与这些API调用不当的两种类型的缺陷。
先前的大多数工作所使用的有限的数据集(大小和种类都有限)限制了结果的实用性,并阻止了他们充分利用深度学习的力量,如上述相关工作均在PROMISE、DEFECT4J、NVD、SARD等漏洞库上操作,而这些数据集最大包含开源仓库的数量在8个以下,且更新缓慢,缺陷种类少,缺陷覆盖率低,这就会导致现有的模型无法用于检测复杂多样的缺陷。目前没有相关工作直接在大型开源代码库中挖掘数据、并从中学习缺陷特征达到检测目的,主要原因是在如Github这样的大型开源代码库上收集数据面临着非常高的误报率问题,会进一步影响模型的有效性。
发明内容
为解决现有技术中存在的不足,本发明提供了一种基于Github的软件缺陷检测模型建立、检测方法及系统,解决现有方法漏洞库更新缓慢,缺陷种类少,缺陷覆盖率低而导致缺陷静态检测技术必须面临样本不平衡、模型无法用于检测复杂多样的缺陷、模型失效快的问题。
为了解决上述技术问题,本发明采用如下技术方案予以实现:
一种基于Github的软件缺陷检测模型建立方法,包括以下步骤:
步骤1,数据预处理:
对Github中的仓库进行排序,选取排名靠前的仓库作为源数据集,对源数据集中的每个仓库的变更记录进行筛选和去重,得到符合要求的变更记录及其对应的Bug-Fix文件对;
步骤2,对步骤1得到的符合要求的变更记录及其对应的Bug-Fix文件对进行处理,生成切片的向量及标签:
步骤2.1,对步骤1得到的符合要求的变更记录的Bug-Fix文件对进行解析和比对,获得每个变更记录对应的增加和删除的代码行信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010140642.7/2.html,转载请声明来源钻瓜专利网。