【技术实现步骤摘要】
一种基于汇编语言与深度学习的漏洞定位方法
[0001]本专利技术涉及网络安全领域,更详细地,为一种C语言源代码漏洞定位方法。
技术介绍
[0002]随着计算机技术的发展,网络安全已经成为互联网中一个不可避免的话题。漏洞属于网络安全中无法绕开的点,所谓漏洞指的是计算机应用或系统中的一些缺陷,一旦被黑客利用,会造成无法挽回的损失和后果。现如今随着开发的程序应用数量的增多,人们吃喝玩乐得到满足的同时,其背后可能隐藏着巨大的安全隐患。比如在软件开发的早期,工程师/开发人员由于源代码编写工作上的失误、疏忽、导致产生严重的漏洞,而该漏洞一旦被利用会造成巨大的经济损失,此时软件已经发布,如果重新发布软件则会消耗巨大的人力、物力。因此,为杜绝此类现象出现,在软件开发早期(即源代码的基础上)进行漏洞检测是十分重要的。据统计,2021年,美国国家漏洞数据库(National Vulnerability Database,NVD)总共公布了超过19537个漏洞。尽管有许多专家学者在努力研究并搜寻这些漏洞,但随着软件的需求和代码复杂度成倍增加,形势依旧不够乐观。因此,专利技术一个具有低漏报率,高定位精度的漏洞检测方法是十分有必要的。
[0003]目前主流的漏洞检测方法分为静态分析、动态分析和基于机器学习的漏洞检测。静态分析方法在分析代码的过程中不需要执行程序,但存在较高的漏报率。动态分析方法可以分为模糊测试和污点分析,在检测精度上有所提高相对于静态分析方法,但需消耗更多的资源,效率相对较低。为了解决上述问题,人们逐渐将机器学习(尤其 ...
【技术保护点】
【技术特征摘要】
1.一种基于汇编语言与深度学习的漏洞定位方法,其特征在于,包含以下步骤:步骤A,编译源代码为目标代码,利用GDB反汇编目标代码,得到包含地址信息的汇编代码,并进一步得到包含源代码行号的汇编代码,然后获取目标代码中的所有可调试函数,以函数为单位对每一个完整的汇编代码切片,得到多个代码块,其中源代码包括所有的训练样本和测试样本;步骤B,对代码块进行标记:查询训练样本数据集提供的描述文件,如果代码块中包含已知漏洞,将其标记为1,反之则将其标记为0;步骤C,将训练样本代码块编码为向量并输入至搭建好的神经网络模型中训练,所述神经网络模型为BILSTM
‑
LOC模型,该模型包括输入层、标准BILSTM层、和定位层;步骤D,在测试阶段使用训练好的BILSTM
‑
LOC模型进行测试样本的漏洞检测和定位。2.根据权利要求1所述的一种基于汇编语言与深度学习的漏洞定位方法,其特征在于:步骤A中得到包含源代码行号的汇编代码的具体实现方式如下;步骤A1,编译,所有的源代码,即所有的训练样本和测试样本通过GCC编译为目标代码,筛选出所有编译成功的程序;步骤A2,反汇编,使用GDB工具调试目标代码得到带有地址的汇编代码,同时利用Addr2line工具将地址转化为源代码的行号,从而得到包含源代码行号的汇编代码。3.根据权利要求1所述的一种基于汇编语言与深度学习的漏洞定位方法,其特征在于:步骤A中每一个代码块由两部分组成:汇编指令以及每一行汇编指令对应的源代码行号,每一行汇编指令由多个token组成。4.根据权利要求3所述的一种基于汇编语言与深度学习的漏洞定位方法,其特征在于:步骤C中BILSTM
‑
LOC模型的具体结构如下;步骤C1,输入层:在输入到神经网络模型之前,每一个被标记过的代码块被编码为向量,然后统一向量长度;设置输入到神经网络的向量长度为δ,其中δ为代码块的长度;如果向量长度小于δ,则在其末尾补0,如果向量长度大于δ,则从末尾裁剪长度大于δ的部分;每一个token被编码为长度为θ的向量并且每一个代码块被编码为长度为“δ
×
θ
×
β”的向量,其中,θ为每一个token编码后得到的向量长度,β表示每一行汇编指令的最大数目;步骤C2,标准BILSTM层:经过编码得到固定长度的向量被输入到标准BILSTM层用于学习漏洞特征,标准BILSTM层由两个标准的BILSTM层、失活层、全连接层和激活层组成,其中失活层用于防止神经网络过拟合,而全连接层和激活层用于得到预测结果;步骤C3,定位层:将输入的一个批次大小的代码块对应的BILSTM的输出...
【专利技术属性】
技术研发人员:彭涛,吕星航,曹文丽,胡新荣,何儒汉,汤俊伟,刘军平,张自力,
申请(专利权)人:武汉纺织大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。