一种基于多维度表征的源代码漏洞检测方法技术

技术编号:31317523 阅读:35 留言:0更新日期:2021-12-12 23:57
一种基于多维度表征的源代码漏洞检测方法。其包括源代码预处理;函数片段多维度表征;构建漏洞检测模型;待检测源代码漏洞检测等步骤。本发明专利技术利用源代码结构化文本信息及代码度量结果作为特征,通过构造基于自注意力机制的神经网络捕获代码结构化文本信息中的长期依赖关系,以拟合代码结构化文本和漏洞存在之间的联系并转化为漏洞存在的概率。采用深度神经网络对代码度量的结果进行特征学习以拟合代码度量值与漏洞存在的关系,并将其拟合的结果转化为漏洞存在的概率。采用支持向量机对由上述两种表征方式获得的漏洞存在概率做进一步的决策分类并获得漏洞检测的最终结果,提高了漏洞检测准确率,降低了漏报率和误报率。降低了漏报率和误报率。降低了漏报率和误报率。

【技术实现步骤摘要】
一种基于多维度表征的源代码漏洞检测方法


[0001]本专利技术属于网络信息安全
,特别涉及一种基于多维度表征的源代码漏洞检测方法。

技术介绍

[0002]随着计算机软件在人们工作和生活中的广泛应用,社会各界愈发重视软件漏洞问题。由于不合理的设计和软件开发人员的疏忽而引入的软件漏洞是致使软件品质下降的根源。软件漏洞会导致软件运行时失效,软件故障的频发会带来极大危害。软件故障每年会造成巨大的经济损失。面对多样化的软件漏洞类型,如何高效地进行漏洞检测成为当前研究的热点问题。
[0003]人工智能技术的发展使得深度学习广泛应用于源代码漏洞检测领域,但目前的源代码漏洞检测方法中有些仅将源代码看作自然语言,将其表征为线性文本,还有一些利用代码度量,以度量结果作为检测依据。上述表征方法因其表征维度的单一性导致其对源代码漏洞的检测效果不够理想。

技术实现思路

[0004]为了解决上述问题,本专利技术的目的在于提供一种基于多维度表征的源代码漏洞检测方法。
[0005]为了达到上述目的,本专利技术提供的基于多维度表征的源代码漏本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于多维度表征的源代码漏洞检测方法,其特征在于:所述基于多维度表征的源代码漏洞检测方法包括按顺序进行的下列步骤:1)源代码预处理的S1阶段:清洗所有源代码,去除其中的空行和注释,然后将清洗后的源代码切分为函数片段,并根据函数片段是否含有漏洞设置标签,获得带有标签的函数片段并按比例分成训练集和测试集;2)函数片段多维度表征的S2阶段:分别从代码结构化和代码度量两种维度对上述训练集和测试集中带有标签的函数片段进行表征,获得代码结构化表征结果和代码度量结果;3)构建漏洞检测模型的S3阶段:首先构建基于SA机制的神经网络模型,利用上述代码结构化表征结果和设置的标签对该模型进行训练和测试,得到训练好的基于SA机制的神经网络模型;构建DNN模型,利用代码度量表征结果和设置的标签对该模型进行训练和测试,得到训练好的DNN模型;最后由训练好的基于SA机制的神经网络模型、DNN模型和SVM模型构成漏洞检测模型;4)待检测源代码漏洞检测的S4阶段:将待检测源代码按步骤1)和步骤2)方法进行处理后获得的代码结构化表征结果和代码度量结果输入上述漏洞检测模型,得到漏洞检测结果。2.根据权利要求1所述的基于多维度表征的源代码漏洞检测方法,其特征在于:在步骤1)中,所述源代码预处理的方法是:以字符串匹配的方式去除源代码中的空行和注释,然后利用Java静态解析工具将清洗后的源代码切分为函数片段并存储在列表中;之后采用字符匹配的方法匹配函数片段名称中的标记,将不含漏洞的函数片段设置标签为“0”,将含有漏洞的函数片段设置标签为“1”;函数片段名称添加标签后将其用随机字符替代,最后获得带有标签的函数片段并按7∶3的比例分成训练集和测试集。3.根据权利要求1所述的基于多维度表征的源代码漏洞检测方法,其特征在于:在步骤2)中,所述分别从代码结构化和代码度量两种维度对上述训练集和测试集中带有标签的函数片段进行表征,获得代码结构化表征结果和代码度量结果的方法是:2.1)代码结构化表征的具体方法如下:2.1.1)利用Java源代码解析工具解析上述带有标签的函数片段,得到抽象语法树节点和边的信息,并根据节点和边的信息生成抽象语法树;2.1.2)深度优先遍历抽象语法树,依次收集节点信息,由此将树型数据转化为一维文本数据;2.1.3)首先对一维文本数据进行分词处理,然后通过统计方法生成词典,并根据词典将分词后的一维文本数据表示为向量形式的代码结构化表征结果Va;2.2)代码度量表征的具体方法如下:2.2.1)选取代码度量指标,包括类耦合、类方法加权、类响应、返回值数、声明变量数、输入参数数量、函数被调用次数、调用函数次数、循环数分支判别、异常捕获数、括号表达式数量、字符串文本变量数、数值型变量数、操作符数、块嵌套数、匿名内部类个数、内部类个数、Lambda表达式个数、最大圈复杂度、平均圈复杂度;2.2.2)利用代码度量工具度量上述带有标签的函数片段以获取上述代码度量指标,并整合成向量形式的代码度量表征结果V...

【专利技术属性】
技术研发人员:杨宏宇应乐意谢丽霞
申请(专利权)人:中国民航大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1