当前位置:主页 > 科技论文 > 自动化论文 >

基于代码语义向量表示和深度学习的软件漏洞检测方法

发布时间:2021-03-09 09:57
  近年来,随着互联网时代的不断发展和软件技术的不断提高,软件在人类的生活中发挥着越来越重要的作用,软件规模越来越大。同时,由于软件规模的不断扩大,开发人员的疏忽,导致软件的质量参差不齐,软件中存在的漏洞也越来越多,严重影响了软件的使用体验以及软件的安全性,对人类的生命财产安全产生了极大的威胁,越早检测出软件中存在的漏洞,损失就会越小,所以软件维护人员及时检测出软件中的漏洞就显得尤为重要。采用人工的方式检测代码中的漏洞复杂度比较高,同时也费时费力,所以要利用漏洞检测软件进行自动化的批量检测。目前的代码漏洞检测方法,误报率和漏报率比较高,而且检测粒度比较粗,一般是文件级别的漏洞检测,所以本文的工作主要有两个部分:第一个主要部分是从代码中提取出特征,然后将特征进行表示学习,转化成向量,第二个主要部分是将特征向量输入到代码漏洞检测模型当中,通过代码漏洞检测模型输出代码有无漏洞的概率。关键和难点是要在代码中提取出有用的特征,能表现出代码漏洞的特征,然后将特征转化成能输入到代码漏洞检测模型当中的向量。这个向量化的方式也很重要,要可以根据代码语句的上下文信息学习到代码token之间的语义信息,另外针对... 

【文章来源】:哈尔滨工业大学黑龙江省 211工程院校 985工程院校

【文章页数】:63 页

【学位级别】:硕士

【部分图文】:

基于代码语义向量表示和深度学习的软件漏洞检测方法


本文研究内容主要流程

数组,示例,语句,控制依赖


哈尔滨工业大学专业硕士学位论文-11-树中节点类型为标识符定义语句的中间节点(即IdentifierDeclStatement),然后判断查找出的中间节点所对应的语句中是否含有符号“[”或者“]”,如果这些条件都满足,则将此标识符定义语句作为切片标准的语句S,并且提取语句中定义的参数变量作为切片标准的V。最后将S和V组合成最终的切片标准(S,V)。对于示例程序,如图2-2在其对应的抽象语法树(AST)中匹配到关键点,根据数组使用作为关键点提取的切片标准为(wchar_tsource[100];,[source])。图2-2匹配数组使用关键点通过分析上述示例,可知在根据“数组的使用”关键点生成切片标准(S,V)的过程中语句S需要满足以下两个条件:(1)语句中包含标识符定义语句(IdentifierDeclStatement);(2)定义语句对应的代码中包含符号“[”或者“]”,因为数组定义和使用时都会用到“[”和“]”。然后利用上面的切片标准(S,V)对源程序进行切片,判断程序依赖图(PDG)中和切片标准(S,V)存在数据依赖和控制依赖关系的语句,分别构成前向切片和后向切片,组合成最终的切片结果。针对图2-1的示例程序,其对应的程序依赖图以及切片分析过程如图2-3。切片标准为(wchar_tsource[100];,[source]),图中绿色的线代表控制依赖,红色的线代表可达关系,语句“if(staticTrue)”和切片标准“(wchar_tsource[100];,[source])”之间存在控制依赖,并且“if(staticTrue)”出现在切片标准的前面,对切片标准对应的有影响,所以将其作为针对切片标准的后向切片的一部分。语句“Source[100-1]=L’\0’;”和切片标准“(wchar_tsource[100];,[source])”之间存在控制依赖,语句“wcsncat(data,source,100)”和切片标准之间

过程图,数组,过程,算术


哈尔滨工业大学专业硕士学位论文-12-也存在控制依赖,并且这两条语句都出现在切片标准的后面,都会受到切片标准对应语句的影响,所以将其作为针对切片标准的前向切片的一部分。图2-3数组使用相关切片过程2.3.2切片结果根据source和data在程序依赖图当中和别的节点之间的数据依赖关系和控制依赖关系生成以数组使用为关键点的切片。切片结果如图2-4。3456if(staticTrue)wchar_tsource[100];source[100‐1]="\0";wcsncat(data,source,100);图2-4数组使用为关键点的切片2.4算术表达式相关漏洞的程序切片算术表达式是指用算术运算符和括号将运算对象(也称操作数)连接起来的、符合程序语法规则的式子。由于算术表达式的不恰当使用所引发的代码漏洞称为以算术表达式为关键点的代码漏洞(例如:整型溢出)。同样以图2-3中的代码段为例,分析算术表达式关键点的提取以及根据关键点生成程序切片的过程。其中算术表达式的使用为造成漏洞的关键点。根据此关键点对代码进行切片,过滤出源代码中只和算术表达式的使用相关的语句,作为漏洞检测的数据,步骤包括:(1)根据关键点生成切片标准。(2)根据切片标准,生成程序切片。


本文编号:3072683

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/zidonghuakongzhilunwen/3072683.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户48df6***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com