System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于模糊测试,具体涉及一种基于神经网络语言模型的模糊测试方法。
技术介绍
1、数据库管理系统(database management system,dbms)是现代软件系统的数据基础设施,为现代软件系统提供数据持久化服务,其安全性至关重要。近年来,dbms的可靠性和安全性受到工业界和学术界越来越多的关注,研究人员广泛使用模糊测试技术验证dbms的功能和挖掘漏洞,取得了有效的进展,证明了模糊测试技术在dbms漏洞挖掘是一种行之有效的技术方法。
2、模糊测试的核心思想是通过自动化或者半自动化的方法构造出海量的测试用例,然后输入到目标测试程序,以发现目标测试程序中的潜在漏洞。模糊测试的工作过程一般分成几个阶段的工作,如图1所示,分别是测试用例生成阶段、测试用例执行和监控阶段、异常分析阶段。测试用例生成阶段生成可用的测试用例,测试用例执行和监控阶段把测试用例输入给目标程序执行并监控目标程序的执行状态,判断是否触发异常,异常分析阶段对触发异常的测试用例进行分析,找出目标程序的异常位置和异常原因以方便后续进行修复。
3、在整个模糊测试过程中,测试用例生成阶段至关重要,生成的测试用例的好坏直接影响着整个模糊测试过程的效率。一方面,测试用例应尽可能满足待测程序对输入格式的要求,以便进入待测程序的深层路径。另一方面,测试用例应该足够的特别,以便对这些输入的处理很可能出乎程序设计者的考虑,从而导致待测程序运行失败。
4、当前,基于覆盖反馈的灰盒dbms模糊测试技术能够有效构造语法正确的sql文本。这种方
技术实现思路
1、(一)要解决的技术问题
2、本专利技术要解决的技术问题是:设计一种适用于黑盒场景下的dbms模糊测试方法。
3、(二)技术方案
4、为了解决上述技术问题,本专利技术提供了一种基于神经网络语言模型的模糊测试方法,包括以下步骤:
5、步骤1、构造训练集
6、使用语料库中的sql文本构造训练集,具体过程分为两步,首先进行文本标准化,以消除不同变量名之间的差异并减小字典的大小,然后基于标准化后的语料库构造token字典,并使用token字典把sql文本对应的token序列映射为数字序列,所有的数字序列组成训练集;
7、步骤2、训练模型
8、使用所述训练集训练出一个lstm模型,lstm模型由词嵌入层,lstm层和全连接层组成;
9、步骤3、使用模型
10、使用训练好的模型编写一个sql生成器,持续生成sql文本作为测试用例,其中,为sql生成器设计测试用例生成策略,并为sql生成器设计启发式生成规则。
11、优选地,步骤1具体包括:
12、(1)文本标准化
13、对于在sql文本中出现的每个变量名称,按照它们在文本中出现的顺序分配一个连续的数字,然后,将每个变量名替换为一个结合了公共前缀和它的连续数字的新名称,另外,标准化过程在保留文本中的关键字的同时,消除关键字的大小写差异:把所有的关键字中的小写字母替换为对应的大写字母;
14、(2)构造训练样本
15、文本标准化后的语料库可以用来构造token字典:单个sql文本将被分割成一个token序列,所有token去重后的token集合将作为token字典;token字典中的每个token将从0开始编号,每个token拥有一个唯一的数字编号;token字典可以把sql文本的token序列映射为数字序列,此时一个数字序列对应一个sql文本,可以用于构造一个训练样本。
16、优选地,步骤1中,在构造训练样本时,对token序列进行额外的处理:把token序列的开头加上起始符号‘s’作为样本的‘x’,在token序列的末尾加上结束符号‘e’作为样本的‘y’;除此之外,在构造训练集时按照最长的token序列长度对其余较短的token序列添加padding符号‘padding’,以确保所有的token序列是等长的。
17、优选地,步骤2的训练过程中,首先,number序列中的每个number被词嵌入层映射为一个input_size维度的向量,然后,经过lstm层和全连接层运算后,模型输出一个dict_size维的权重向量,模型根据权重向量计算出损失,并使用反向传播算法来更新网络的参数值。
18、优选地,步骤2的训练流程如下:首先,根据传入参数初始化训练集和模型,设置损失函数和优化器;然后进入训练过程,在每个训练轮次中,使用total_loss累计本轮次的总损失并存入loss_list列表;在单个轮次中,使用每个batch的数据计算本batch的损失并根据损失函数进行反向传播更新网络参数值;在本轮次训练结束后,存储当前模型的数据;完成所有轮次的训练后结束。
19、优选地,步骤3中,设计所述启发式生成规则由如下参数控制:
20、一个参数是max_len,用于控制生成的sql文本的最大长度;当设置了max_len参数后,生成过程将在两种情况下结束:生成指定的结束符号‘e’或达到最大长度max_len;
21、另一个参数是topk,用于控制序列下一个token的选取范围;topk参数用于控制模型生成的多样性,当选择序列的下一个token时,将从权重值最大的topk个token中随机选择一个。
22、优选地,步骤3中设计的测试用例生成策略包括:
23、①从起始符号开始生成:从起始符号s开始生成,直到到达结束符号e或达到最大长度max_len;
24、②从指定前缀开始生成:从一个给定的前缀开始往下生成,直到到达结束符号e或达到最大长度max_len;
25、③替换语句:从某个语句a的前缀开始,生成一个完整的语句,并替换该语句a,从而构造出一个新的sql文本;
26、④插入语句:从某个语句a的前缀开始,生成一个完整的语句,并插入到该语句a之后,从而构造出一个新的sql文本。
27、优选地,还包括步骤4、设计一个模糊器,模糊器把生成的sql文本输入给目标程序执行,并监控目标程序的执行状态,直到发现异常情况,这表示模糊器发现了可能的bug。
28、优选地,该方法适用于黑盒场景下的dbms模糊测试。
29、本专利技术还提供了一种用于实现所述方法的系统。
30、(三)有益效果
31、本专利技术方法从构造训练集、训练模型、使用模型三个方面设计了基于神经网络语言模型的模糊测试sql语句生成方法。第一,使用目标对象的测试文件集作为语料库,进行一定的预处理,构造出适当的训练集。第二,使用构造出的训练集训练神经网络语言模型,在模型的选择上一般使用ls本文档来自技高网...
【技术保护点】
1.一种基于神经网络语言模型的模糊测试方法,其特征在于,包括以下步骤:
2.如权利要求1所述的方法,其特征在于,步骤1具体包括:
3.如权利要求2所述的方法,其特征在于,步骤1中,在构造训练样本时,对token序列进行额外的处理:把token序列的开头加上起始符号‘S’作为样本的‘x’,在token序列的末尾加上结束符号‘E’作为样本的‘y’;除此之外,在构造训练集时按照最长的token序列长度对其余较短的token序列添加Padding符号‘Padding’,以确保所有的token序列是等长的。
4.如权利要求2所述的方法,其特征在于,步骤2的训练过程中,首先,number序列中的每个number被词嵌入层映射为一个input_size维度的向量,然后,经过LSTM层和全连接层运算后,模型输出一个dict_size维的权重向量,模型根据权重向量计算出损失,并使用反向传播算法来更新网络的参数值。
5.如权利要求2所述的方法,其特征在于,步骤2的训练流程如下:首先,根据传入参数初始化训练集和模型,设置损失函数和优化器;然后进入训练过程
6.如权利要求2所述的方法,其特征在于,步骤3中,设计所述启发式生成规则由如下参数控制:
7.如权利要求6所述的方法,其特征在于,步骤3中设计的测试用例生成策略包括:
8.如权利要求7所述的方法,其特征在于,还包括步骤4、设计一个模糊器,模糊器把生成的SQL文本输入给目标程序执行,并监控目标程序的执行状态,直到发现异常情况,这表示模糊器发现了可能的bug。
9.如权利要求1至8中任一项所述的方法,其特征在于,该方法适用于黑盒场景下的DBMS模糊测试。
10.一种用于实现如权利要求1至9中任一项所述方法的系统。
...【技术特征摘要】
1.一种基于神经网络语言模型的模糊测试方法,其特征在于,包括以下步骤:
2.如权利要求1所述的方法,其特征在于,步骤1具体包括:
3.如权利要求2所述的方法,其特征在于,步骤1中,在构造训练样本时,对token序列进行额外的处理:把token序列的开头加上起始符号‘s’作为样本的‘x’,在token序列的末尾加上结束符号‘e’作为样本的‘y’;除此之外,在构造训练集时按照最长的token序列长度对其余较短的token序列添加padding符号‘padding’,以确保所有的token序列是等长的。
4.如权利要求2所述的方法,其特征在于,步骤2的训练过程中,首先,number序列中的每个number被词嵌入层映射为一个input_size维度的向量,然后,经过lstm层和全连接层运算后,模型输出一个dict_size维的权重向量,模型根据权重向量计算出损失,并使用反向传播算法来更新网络的参数值。
5.如权利要求2所述的方法,其特征在于,步骤2的训练流程如下...
【专利技术属性】
技术研发人员:曾颖明,王斌,赵慧,刘金鹏,贾琼,方永强,孔凯薇,罗济凡,郭敏,
申请(专利权)人:北京计算机技术及应用研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。