申请/专利权人:中国人民解放军国防科技大学
申请日:2021-01-29
公开(公告)日:2024-04-12
公开(公告)号:CN112733156B
主分类号:G06F21/57
分类号:G06F21/57;G06N3/0442;G06N3/006
优先权:
专利状态码:有效-授权
法律状态:2024.04.12#授权;2021.05.21#实质审查的生效;2021.04.30#公开
摘要:本发明公开了一种基于代码属性图的软件脆弱性智能检测方法、系统及介质,方法包括为被检测的代码样本生成代码属性图并提取出抽象语法树序列、控制流图序列和程序依赖图序列,将得到的各种序列分别通过预先训练好的向量映射器转换为数值型向量,再通过对应的预先训练好的特征提取器提取特征向量,然后将提取得到的三种特征向量合并成代码样本的特征向量;将代码样本的特征向利用预先训练好的脆弱性检测器得到代码样本为脆弱性代码的概率,若该概率超过预设阈值则判定该代码样本为脆弱性代码。本发明的处理方式能够保留源代码较多的语法和语义等信息,可提高面向跨软件源代码混合的真实数据集的脆弱性检测效果,降低误报率和漏报率。
主权项:1.一种基于代码属性图的软件脆弱性智能检测方法,其特征在于,包括:1)基于待检测的代码样本生成代码属性图,所述代码样本为一个函数;2)从代码属性图中提取出抽象语法树序列、控制流图序列和程序依赖图序列;3)将抽象语法树序列、控制流图序列和程序依赖图序列分别通过预先训练好的向量映射器转换为数值型向量,得到抽象语法树向量、控制流图向量和程序依赖图向量;所述预先训练好的向量映射器由分词器Tokenizer和词向量转换模型Word2Vec构成,输入是文本型向量,输出为N1*N2维的数值型向量,用于将文本型向量转换成机器学习算法可识别的N1*N2维向量,其中N1为词向量转换模型Word2Vec训练得到的单个映射向量的长度,N2为单个代码样本的文本型向量的长度;4)将抽象语法树向量、控制流图向量和程序依赖图向量分别通过对应的预先训练好的特征提取器提取特征向量,然后将提取得到的三种特征向量合并成代码样本的特征向量;所述预先训练好的特征提取器由双层LSTM和多个池化层构成的模型,所述双层LSTM用于提取向量中的语法和语义信息、并将多维向量转化成一维向量以提取函数的特征,所述多个池化层用于保留主要特征并减少参数,且各个特征提取器的输入是N1*N2维的数值型向量,输出是提取得到的一维特征向量;5)将代码样本的特征向利用预先训练好的脆弱性检测器得到代码样本为脆弱性代码的概率,若该概率超过预设阈值则判定该代码样本为脆弱性代码。
全文数据:
权利要求:
百度查询: 中国人民解放军国防科技大学 基于代码属性图的软件脆弱性智能检测方法、系统及介质
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。