[发明专利]基于主题模型软件缺陷检测的方法和系统在审
| 申请号: | 201910702008.5 | 申请日: | 2019-07-31 | 
| 公开(公告)号: | CN110515838A | 公开(公告)日: | 2019-11-29 | 
| 发明(设计)人: | 张俊博;高元钧;徐冬晨;陆平 | 申请(专利权)人: | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41;G06N20/00 | 
| 代理公司: | 31334 上海段和段律师事务所 | 代理人: | 李佳俊;郭国中<国际申请>=<国际公布> | 
| 地址: | 201800 *** | 国省代码: | 上海;31 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 缺陷模式 软件缺陷检测 矩阵 抽象语法树 构建 重构 自然语言 机器学习算法 缺陷检测结果 特征向量空间 余弦相似度 源代码生成 语义 空间构建 奇异矩阵 缺陷检测 软件代码 语义分析 原始矩阵 主题模型 自动检测 高安全 级检测 映射 降维 数字化 分解 | ||
本发明提供了一种基于主题模型软件缺陷检测的方法和系统,在空间构建中,令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;在语义分析中,构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。将处理自然语言的机器学习算法加入到软件缺陷检测中,从语义级检测代码中隐藏的缺陷,从而丰富了高安全软件代码缺陷检测的手段,自动检测出给定代码中是否具有和缺陷模式库中已知的缺陷相似的缺陷,进一步提高软件的质量。
技术领域
本发明涉及安全检测技术领域,具体地,涉及一种基于主题模型软件缺陷检测的方法和系统。
背景技术
目前,主流的静态源代码缺陷检测方法的核心思想都是查找和匹配,无论是词法、语法还是语义层面,都是不同层次的匹配过程,这样就无法能够使得具有相似缺陷但是不完全相同的缺陷被检测出来。而把机器学习方法用在静态源代码缺陷检测中成为一种新兴的思想。由于机器学习中的主题模型算法先天的智能因素,具备潜在的语义理解能力,可以从语义因而具有较好的发展潜力。
与本申请相关的现有技术是专利文献CN 105204997B,公开了一种软件缺陷检测方法及装置,基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进行软件缺陷检测。通过对所获初检代码集合包括的代码段中的路径进行危险路径筛选,并对危险路径进行路径可行性检测,进而在保证软件缺陷检测的准确性的前提下,减小缺陷检测所消耗的时间,提高软件缺陷检测的效率。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于主题模型软件缺陷检测的方法和系统。
根据本发明提供的一种基于主题模型软件缺陷检测的方法,包括:
空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
优选地,所述空间构建步骤包括:
生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
优选地,所述语义分析步骤包括:
构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
优选地,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。
优选地,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东计算技术研究所(中国电子科技集团公司第三十二研究所),未经华东计算技术研究所(中国电子科技集团公司第三十二研究所)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910702008.5/2.html,转载请声明来源钻瓜专利网。





