【论文阅读006】:Reducing Test Cases with Attention Mechanism of Neural Networks

论文基本情况:

论文名: Reducing Test Cases with Attention Mechanism of Neural Networks

作者:张星,冯超…

单位:国防科技大学

来源:USENIX Security

论文主题:模糊测试

一句话论文:

本文通过提出了新的数据增强方案,能够处理长序列的模型结构,主要来对生成的测试样例缩短。删去无关的字符,只保留会导致程序崩溃的部分,提高模糊测试变异的效率。

重点与思考:

论文大致说明:
  这篇论文发表在21年的Security上,达到了本方向的SOTA。与模糊测试沾边,但也不完全属于一般的模糊测试方法。这篇论文在刚接触这个方向的时候,感觉上难度还是比较大,有些地方可能是积累不够导致读起来也很困难。很多点是在看第二遍,第三遍才能理解。但当对模糊测试这个方向有一些了解之后,实际上就比较好理解了。
这篇论文最核心的思想实际上就是对于一个测试样例生成过程,在得到一个可以导致崩溃的输入的时候,一般来说都是会走很多的“弯路”的(会经过很多轮不会导致崩溃的变异),实际上导致崩溃的是输入其中的一小部分,其余的部分对程序的终止不会又任何影响。因此,可以把这些无关部分删去,对测试用例进行约简,不仅可以减少对无关字符上的变异,也可以更好的帮助开发人员分析测试用例。

1. 动机

模糊测试是解决软件漏洞问题的一项关键技术,但由于一般算法生成测试样例依赖随机性,导致生成的测试样例千奇百怪,且包含了很多的无关的字符,这些无关字符对多轮的模糊测试过程影响很大。因此,如果能够只保留会导致程序崩溃的内容,删去无关的输入,能使变异更有针对性,且测试效率更高。但目前,缩短测试样例的方法主要分为两类,一类是随机减少,如比较典型delta算法,该类方式通过各种搜索算法,随机减少输入内容,效率很低,且忽视了输入块间的依赖关系。另一类是基于规则的方法,如信息流分析和基于输入结构的方法,需要人工设定各种规则,且由于信息流等内容依赖于专家知识,导致结果不是很准确。因此,提出了本文的SCREAM算法。
缩短看做一个深度学习任务,用模型判断其是否能触发漏洞,同时用注意力机制给出每个字符的重要性,删去不重要的字符,测试是否仍能触发漏洞,缩减至最短形式。

2. 创新点

  1. 传统直接使用模糊测试生成的测试样例进行训练的方案,存在一个问题,由于每轮产生的变化都非常小,非常容易过拟合。因此设计了一种数据增强方案,能够通过一个可以导致崩溃的样例在线生成训练用的数据集,并且该过程与训练流程结合在一起(相当于模型在动态训练,一边生成新的数据,一边继续训练模型)。
  2. 目前的大多数模型都只能处理短文本(相对于程序上的输入来说,可能会扩展到极长。即使是目前比较先进的模型也只能处理自然语言中的相对较长的文本,但单看样本长度来说,也不会特别长),重新设计了一种基于RNN的网络结构,使用CNN将一维特征编码为高维特征,再将特征向量输送给带有注意力机制的RNN,由于特征被压缩,同时训练多个不同参数的网络,以减少错误和误差

3. 研究内容详细说明

提出的新方法及思考和问题

  1. 数据增强策略

为了避免正负样例数量差别过大的问题,每次只对正样例(可以导致崩溃的样例)进行变异(但问题在于,以我目前的知识来说,即使只对正样本进行变异,生成的可能也是负样本远多于正样本,且每次很难保证每次都有生成的正样本),这样,使训练数据间差异比较大。
主要分为两部分,突变和选择seed。
突变部分,核心在于每次突变的部分和如何突变。对于一个正样例,且已知其重要性(通过注意力机制得到),选择重要性在中间的部分进行突变,不选高的是尽量保证仍能导致崩溃,不选低的部分是因为不一定有效果。一定程度上解答了上面的红字问题。变化范围在0x00到0xFF之间,进行随机突变。
选择seed,选择"最与众不同"样例作为下一轮的Seed,由于一般的相似度算法,如余弦相似度,不能直接用于字节序列,且本文的编码表示不包含语义信息。因此,使用NLP中的Bi-gram模型衡量相似度。该模型基于马尔可夫链理论,假设每个比特仅与前一个相关,则对此次全部的信息进行统计,频率趋近概率,可以根据贝叶斯公式计算出p(x)的值,可以理解为该组合出现的概率最低,与其他的相似度最差,选择最低的一个即可。

  1. 模型结构

首先利用卷积层将一维特征提取到高维,输入LSTM中进行计算,并经过softmax函数,得到显著性,与特征相乘,结果最终与全连接层相连得到模型推理结果

在这里插入图片描述

并且,重新设计了权重分配的方式(这里没怎么看的懂,而且,单纯从模型结构来看,只是一个CNN结构,并没什么不同,对具体能到达的效果表示怀疑)。同时,训练了多个不同参数的模型,利用这些模型的平均值,作为最终的相关性评分(也就是重要性)。

  1. 缩短算法

每次减少一半,检测是否改变结果,如果仍能导致崩溃,则再减少一半,循环,直至无法导致程序崩溃,恢复上一轮结果。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值