买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于时间卷积网络的XSS模糊测试用例生成方法_北京工业大学_202111660103.7 

申请/专利权人:北京工业大学

申请日:2021-12-30

公开(公告)日:2024-04-02

公开(公告)号:CN114297079B

主分类号:G06F11/36

分类号:G06F11/36;G06F9/455;G06N3/0464;G06N3/045;G06N3/049

优先权:

专利状态码:有效-授权

法律状态:2024.04.02#授权;2022.04.26#实质审查的生效;2022.04.08#公开

摘要:本发明提出基于时间卷积网络的XSS模糊测试用例生成方法。目前,大多是以关键载荷字典作为数据集,并通过搭建字符级别语言模型的方式进行用例的生成。然而,由于目前存在关键载荷字典中用例数量有限等问题,使得生成效率和质量受到影响。本发明以JS事件函数插入位置作为依据,对用例进行结构划分。在此基础上,参考XSS绕过方法,根据划分结果对用例各部分内容进行变异,以实现数据增强。其次,对用例中的单词与字符进行联合编码,保证在保留字符变异性的同时,不会破坏原有单词语义。最后,通过TCN搭建用例生成模型,通过学习用例特征,生成符合要求的XSS漏洞测试用例。本发明提高XSS漏洞模糊测试用例生成效率和质量。

主权项:1.基于时间卷积网络的XSS模糊测试用例生成方法,其特征在于:1.数据预处理阶段:确定时间卷积网络语言生成模型的输入与输出变量:以XSS漏洞测试用例为研究对象,对XSS漏洞测试用例中的关键载荷部分进行结构划分与变异操作,分别得到变异后的标签、属性及事件函数,最终通过替换和整理,获得扩充后的关键载荷数据集PM=pm1,pm2,...,pmz作为下一个阶段的输入;针对XSS测试用例中关键载荷Payload的基本形式表示为:Payload=L,A,E1其中,L为关键载荷中的HTML标签部分,A为关键载荷中的属性部分,E为关键载荷中的JS事件函数部分;针对XSS漏洞测试用例,HTML标签通常被划为script标签和普通标签两种形式,即L={Ls,Lc};带有script标签属性部分包含HTML属性、CSS属性及JS属性三种形式,即A={AH,AC,AJ};这里的属性部分特指属性名;E为关键载荷中的JS事件函数部分;通过对关键载荷进行结构划分的方式,能够将关键载荷中的各类标签、属性和事件函数进行提取,方便后续的变异操作;根据Payload的基本形式将关键载荷结构划分为以下几种情况:1JS事件函数E作为双标签script标签的文本内容,插在script开标签之后,此情况中script标签通常不带属性,对应公式2;为了便于绕过针对script标签的防御措施,script标签前面有时会放置其他普通标签LC,对应公式3;2JS事件函数E作为标签LC中属性AH、AC和AJ所对应的值;在一条关键载荷中,也存在着同时具有属性AH和AC的情况,在这种情况中,JS事件函数E作为属性AC的值,属性AC和他的值则作为属性AH值的一部分;以上情况分别对应下列公式4、公式5以及公式6;此外,在关键载荷的构造中也存在CSS属性针对标签选择器做指定样式的情况,在此类情况里一条关键载荷Payload中会存在两个标签LC,此情况对应公式7;经过整理,根据各个规则关键载荷的基本形式具体定义如下:XSSPayload1=LS+E2XSSPayload2=LC+LS+E3XSSPayload3=LC+AH+E4XSSPayload4=LC+AH+AC+E5XSSPayload5=LC+AJ+E6XSSPayload6=LC+LC+AC+E7其中,运算符+表示关键载荷中各部分的连接,标签L在公式中的位置以其开标前的出现位置为准;基于上述结构划分规则,将关键载荷数据集中的所有标签、属性及事件特征进行提取,得到六个代表不同部分的字符串数组,分别代表script标签LS、普通标签LC、HTML属性AH、CSS属性AC、JS属性AJ和JS事件函数E;根据目前已有的XSS漏洞关键载荷及XSS漏洞注入案例分析可得,针对XSS漏洞有效常用且适合于局部变异的绕过方法有以下几种,分别是大小写绕过、编码绕过、双写绕过、添加特殊字符绕过和添加混淆词绕过进行基于字符进行变异需要考虑变异的位置,即变异点;因此,在对划分阶段所获取的字符串数组中每一个字符串进行变异时,将字符串中每一个字符所对应的索引作为变异点进行变异;字符串中第一个字符所对应索引为开始索引,最后一个字符所对应索引为结束索引;以i作为循环变量,从指定数量的字符中取i个字符的索引作为一组变异点组合情况;这里字符的指定数量为字符串数组中每一个字符串的长度;根据每一条划分结果的标签、属性及事件函数字符串索引范围,逐一获得包含变异点全部情况的组合M,得到公式8: 其中Ml为变异索引组合数组的长度,H为结束索引;根据获得的变异索引组合数组M,以及XSS绕过方法对所得到的字符串数组进行变异;在算法描述中,字符串mutationString为待变异字符串,mutationNum为根据索引生成的变异组合数组,针对XSS关键载荷各部分的具体变异算法描述如下:1、输入字符串mutationString以及数组mutationNum;2、定义listText用来存储变异后的字符串列表;3、获取一个满足大于0,小于mutationNum数组长度条件的随机整数,以此作为循环条件决定变异次数;其中,随机整数通过python中numpy库中的randint函数进行获取;4、根据变异次数,每一次获取一个满足大于0,小于mutationNum数组长度条件的随机整数,以此作为所选择的变异组合数组索引;5、根据所选择索引所对应的变异排列组合逐一对字符串内字符依次执行变异,直至循环结束;变异操作包括在变异索引处转换字符大小写、替换字符编码形式、进行嵌套操作、添加特殊字符以及添加混淆词;6、对变异后的字符串列表listText进行去重操作;7、输出变异后的字符串列表listText;对于上述变异对数据进行增强,得到不同部分变异后的字符串列表;根据该列表,通过替换的方式对原有的初始关键载荷数据集进行数据扩充,使得数据集的针对性和多元性得到提升;基于上述变异,获得数量更多且形式更丰富的标签、属性及事件函数;根据这些变异后标签、属性及事件函数,通过替换的方式对原有的初始关键载荷数据集进行数据扩充获得新的关键载荷数据集,实现数据增强的效果,使得数据集的针对性和多元性得到提升;此步骤最终得到的数据集为关键载荷数据集PM={pm1,pm2,…,pmz};此数据集将作为下一阶段输入;语言生成模型搭建阶段:设计用于XSS漏洞测试用例生成的语言生成模型,利用时间卷积网络建立联合单词和字符进行编码的用例生成模型;使用的用例生成模型共分为两部分,分别是编码部分以及模型搭建部分;编码部分通过对XSS关键载荷中的单词与字符进行联合编码的方式,进行模型输入数据集的构造;为了能够在保存原有的语义结构的同时,保证用例生成具有字符变异性,通过使用对XSS关键载荷语句中的单词与字符进行联合编码的方法完成输入数据集的构造;其中,单词是具有一定含义的,由若干个字符组成的固定字符串,如果对其进行拆分会破坏原有含义;把上一部分中所获取的变异前和变异后的标签及属性以单词的形式存入词典,将事件分割为字符的形式存入词典;该词典中包含以单词形式存储的标签和属性、被分割为单一字符的事件以及他们所对应的数字;通过词典,便于单词和字符向数字形式的转换;在针对标签进行编码操作时,将闭标签''单独拆分开来以字符的形式进行存储,标签中其他部分照常以单词的形式进行存储;基于以上单词与字符特征,词典生成其与数字一一对应的映射,即按照单词与字符的存储顺序,为每一个单词和字符分配对应的数字作为词典索引;根据词典,能够对由XSS关键载荷所组成的测试用例数据集进行向量化映射转换,将其转换为数字形式,根据所设定的词典中单词优先级大于字符优先级的规则,在对数据集进行映射转换时先考虑单词与数字的转换,后考虑字符与数字的转换;经过该步骤得到的测试用例数据集为数字形式所表示的文本;为方便模型的输入,需要提前对数字形式的测试用例数据集进行编码操作;将测试用例生成的整体流程看作是分类工作,即将具有固定长度的种子用例数据看作是输入数据,所预测的字符或者单词对应的数字看作是类别;其中,种子用例数据的获取是从测试用例第一个单词或者字符所对应的数字开始,每次移动固定的长度,在此基础上选取具有固定长度的用例数据;因此,在进行编码操作之前,需要对扩充后的测试用例数据集PN=pn1,pn2,...,pnz进行划分,将其划分为种子用例数据集D所预测的单词或字符D'所对应数字的数据集,其表示如下:D={pno,pno+1,...,pno+l-1}9D'=pno+l10其中,l为固定的数据长度,o为上一个开始索引的位置,其初值为0;最后,采用独热编码的方式对数据集进行编码转换,将其转换为二进制向量作为模型的输入;独热编码主要是通过将字符和单词所对应的每一个数字看作一个类别,根据每一个种子用例数据的每一个数字,将其数字对应的位置索引设置为1,其余设置为0的方式对数据集进行编码;以此得到网络输入是编码后的两个以二进制向量形式所表示的数据集;时间卷积网络的拓扑结构分为三层:输入层、隐藏层、输出层;将时间步设为t,批次大小设置为32;使用的时间卷积网络通过将普通卷积替换为因果卷积的方式对序列问题进行处理;在隐藏层中的设计中,共设置3个隐藏层,其滤波器分别设置为32、16、16,卷积核个数设为3,扩张因子分别设为1、2、4,其中每一个隐藏层包含两个相连的一维扩张因果卷积网络和一个ReLu非线性映射函数,隐藏层之间通过使用残差的方式进行连接;设该模型中共有N个训练样本,设时间卷积网络语言生成模型两个输入分别为X={x1,x2,...,xN}以及Y={y1,y2,...,yn},其中X为独热编码形式的当前关键载荷输入序列,Y为独热编码形式的当前下一个字符或单词序列;时间卷积网络语言生成模型的期望输出表示为G',实际输出表示为G;基于时间卷积网络的XSS漏洞测试用例生成方法计算方式依次为:①输入层:该层根据指定批次大小输出指定形状向量,则该层的输出为:uq=xq11其中,uq是针对X的第q个序列的输出,q=1,2,…,v,输出形状为maxlen,lendict,maxlen为种子用例数据的固定长度,lendict为单词和字符的总数,xq为输入层中输入向量X的第q个序列;②隐藏层:每一个隐藏层由两个相连的一维扩张因果卷积网络和一个ReLu非线性映射函数组成,在xt处的因果卷积输出为: 其中,F*X代表对序列做卷积操作,F={f1,f2,...,fK}为滤波器,K为滤波器大小,X={x1,x2,...,xN}为输入序列;扩张卷积的引入是为了网络能对历史信息有记忆,因此在xt处的扩张因子为d的扩张卷积输出为: 其中,F={f1,f2,...,fK}为滤波器,K为滤波器大小,X={x1,x2,...,xN}为输入序列,d为扩张因子;扩张因子即为卷积核点的间隔数量,三个隐藏层中扩张卷积的扩张因子分别被设置为1、2、4;针对两个相连的一维扩张因果卷积网络所获得的输出向量output,使用relu激活函数进行非线性优化,已知relu函数如公式14所表示,即可得隐藏层的输出ho为:relua=max0,a14ho=reluoutput15③输出层:输出层由flatten层和全连接层组成,flatten层用于卷积层和全连接层的过渡,即将多维数据一维扁平化,输出大小为maxlen×lendict的一维数组;其次,在此基础上全连接层相当于一个分类器功能,通过激活函数softmax获得输出;将基于字符或单词特征的生成工作看作多分类工作,即将根据所预测的下一个字符或单词看作是针对已获取的样本数据进行分类,首先针对隐藏层的输出ho进行操作;zj=wj*ho+bj16其中,wj为第j类下特征的权重,bj为第j类下特征的偏置项,通过对特征加权求和得到各类别的分数zj;通过softmax分类器将分数映射为概率,得针对第j类概率输出为: 在模型的训练中,选取交叉熵损失函数用以度量预测值与实际值之间的相似度,可知时间卷积网络语言生成模型的误差为: 其中,g'时间卷积网络的期望输出,g为时间卷积网络的实际输出,N为样本个数。

全文数据:

权利要求:

百度查询: 北京工业大学 基于时间卷积网络的XSS模糊测试用例生成方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。