技术新讯 > 电子通信装置的制造及其应用技术 > 一种针对网络协议模糊测试的种子分组方法  >  正文

一种针对网络协议模糊测试的种子分组方法

  • 国知局
  • 2024-11-06 14:36:03

本发明属于网络协议模糊测试,涉及一种针对网络协议模糊测试的种子分组方法。

背景技术:

1、模糊测试(fuzz testing)是一种自动化的测试技术,通过向软件程序输入大量的随机或伪随机数据(称为“模糊数据”),以探测软件在处理异常或意外输入时的行为。这种技术旨在揭示程序在处理非法、边界或不规范数据时的潜在缺陷或漏洞。模糊测试可以帮助发现安全漏洞、崩溃点和其他异常情况,从而提高软件的稳定性和安全性。

2、网络协议测试是针对网络协议的测试过程,旨在确保网络协议按照设计规范正确地实现其功能,并在各种操作条件下表现出预期的行为。网络协议测试通过模拟真实或预期的网络环境,使用各种测试工具和技术,如协议分析器、负载生成器和故障注入工具,帮助开发者和测试人员发现并修复协议实现中的潜在问题。

3、在模糊测试过程中,种子指用于通过变异以生成新的输入的基础输入。这些输入种子通常是有效的、格式正确的样本输入,代表了程序可以处理的正常或预期的输入形式。通过对这些输入种子进行变异(即修改或扩展),生成不同的模糊数据,可以测试程序在处理各种输入时的稳定性和安全性。

4、在模糊测试中,种子分组方案指将输入种子按照预定的标准、特征或属性进行分类,以便于系统化地生成和管理模糊数据。通过将种子分组,模糊测试工具可以有效地组织测试输入、提高测试效率并优化测试覆盖率。种子分组有助于识别和分析不同种子组对程序行为的影响,并提供更有针对性的调度策略。

5、模糊测试(fuzz testing)是一种自动化的软件测试技术,用于发现程序中的安全漏洞和稳定性问题。它的基本原理是通过向程序输入大量的随机或伪随机数据,测试程序在处理异常或意外输入时的行为。相对于传统软件测试方法,其具有高效性(能够在大规模的程序中自动发现潜在的缺陷)和广泛适用性(可以用于各种类型的程序和系统,包括网络应用、操作系统和嵌入式系统)等优势。

6、覆盖导向的灰盒模糊测试(coverage guided greybox fuzzing)是一种结合了模糊测试和代码覆盖分析的自动化测试技术。通过轻量级代码插桩的方式,覆盖导向的灰盒模糊测试可以利用程序的执行路径信息作为反馈来优化测试输入的生成,从而针对性地生成高覆盖率的测试输入。

7、网络协议模糊测试(network protocol fuzzing)是一种专门针对网络协议的自动化测试技术,用于发现协议实现中的缺陷、漏洞和异常行为。它通过向网络协议发送各种异常或伪造的数据包,评估协议在处理这些输入时的稳定性和安全性。

8、通过充分利用网络协议的状态反馈信息(例如状态码)以及网络协议的消息驱动特性,最近提出的网络协议模糊测试方案(如aflnet)可以达到更优的测试效果。具体而言,该工具通过分析网络协议服务端返回的状态码等反馈信息,自动生成并维护一个反映协议状态的状态机模型。在此基础上,这些方案利用生成的状态机来指导输入数据的变异过程,从而优化测试输入的覆盖范围和深度。实验表明针对网络协议特别设计的模糊测试方案可以在多个广泛使用的网络协议上达成更广泛和深入的代码覆盖,从而识别出更多潜在的缺陷和安全漏洞。

9、以下以网络协议测试aflnet为例介绍目前网络协议模糊测试的最佳技术方案。

10、aflnet是基于afl的首个有状态灰盒协议模糊测试工具。它通过提取响应报文中的状态码来构建协议状态机(ipsm),并利用这一状态机指导测试。aflnet包括状态学习器、目标状态选择器、序列选择器和序列变异器等模块。

11、aflnet通过套接字实现与服务器的网络通信,支持发送和接收消息。输入为包含网络流量的pcap文件,使用请求序列解析器生成消息序列语料库。状态学习器扩展ipsm,目标状态选择器根据ipsm选择测试状态,序列选择器从语料库中选择消息序列,序列变异器对消息序列进行变异。

12、aflnet的实际执行流程如下:

13、1.aflnet接收pcap文件并解析消息序列。

14、2.状态机学习器提取状态码并构建ipsm。

15、3.目标状态选择器选择测试目标状态。

16、4.序列选择器选择合适的消息序列,序列变异器对其进行变异。

17、5.更新语料库和ipsm,记录新状态和状态转换。

18、种子分组(seed clustering)是近年来模糊测试领域的一种新技术。种子分组的目标在于根据语法和语义相似性将相似的种子归到一个类中,种子分组的结果后续可被用于针对不同的类学习不同的概率分布以达到进行更高效的模糊测试的目的。以下以seamfuzz为例介绍种子分组技术的一般流程。

19、seamfuzz通过种子自适应的变异策略进行了灰盒模糊测试。seamfuzz首先根据种子输入的语法和语义属性将种子输入分成不同的群组,并通过一种变体的汤普森抽样算法学习每个种子群组选择变异方法的概率分布。每个群组学习到的概率分布用于在变异属于该群组的种子输入时选择有效的变异方法。

20、seamfuzz在种子分组过程中的执行流程如下:

21、1.给定一个种子输入s和种子群组集合g,种子分组的目标是将选定的种子输入s分组到具有相似特征的适当种子群组中。

22、2.为了实现这一目标,其定义了相似性评分(similarity score),用scoresim表示,以及cluster函数;相似性评分指示了种子输入s与种子群组的接近程度,cluster函数根据这一评分将种子输入分组到相应的种子群组中。

23、3.为了计算相似性评分,其定义解释了两种相似性的概念:语义相似性和语法相似性。

24、4.总的相似性评分直观上是种子输入s和种子输入集合s共同覆盖的路径转换数与集合s覆盖的路径转换总数的比率。

25、5.cluster函数计算种子输入s与每个种子群组之间的相似性评分,并在最高相似性评分dmax超过阈值γ时返回具有更新的种子输入集合的种子群组。如果种子输入s与任何现有的种子群组都不相关(即dmax低于阈值γ),cluster函数将初始化一个新的种子群组,并以代表性种子输入s开始。在这种情况下,seamfuzz将pid初始化为均匀分布(pr),因为新生成的群组尚未学习到有效的概率分布;所有群组的概率分布pid都从一个随机概率开始,并随着学习过程变得更为智能。

26、尽管aflnet在不少协议中实现了不错的效果,但是它也存在一些缺点:

27、-aflnet使用响应报文中粗粒度的响应码作为协议程序的状态,但响应码不能完全反映协议的真实状态,这影响了模糊测试的效率。

28、-为了针对特定状态进行测试,aflnet需要发送较长的前缀消息和后缀消息,导致大量时间用于发送未经变异的消息。相比之下,真正用于探索和触发新状态或分支的中缀消息在测试用例中的比例很低,使得协议模糊测试的吞吐量极低。

29、-aflnet的低吞吐量导致在选择种子时倾向于选择能够更快到达目标状态的短消息序列。然而,这种选择使得难以覆盖更深层次的状态或分支。

30、-在一些协议中,存在一些漏洞需要由多个相互关联的消息按特定顺序才能触发,而aflnet每轮测试仅针对特定的目标状态进行探索和测试,无法实现跨状态的协议测试。

31、-aflnet与system under test(sut)之间缺乏同步机制,导致模糊器无法准确知晓sut是否已经处理完测试用例。因此,aflnet通常需要设置时间延迟来等待sut的响应报文,这会影响测试的效率和速度。

32、现有的种子分组方案是针对一般程序的模糊测试过程设计的,并没有考虑到网络协议程序的具体特性以及协议状态中所包含的信息。因此,现有的种子分组方案在应用于网络协议的模糊测试时存在一些缺陷,具体如下:

33、首先,现有的模糊测试种子分组方案未充分考虑网络协议的状态信息。网络协议的状态在消息处理和响应中起着关键作用,但现有方案未能有效利用这些状态信息来优化分组效果。忽略网络协议的状态特性可能导致分组不准确,从而影响测试的有效性和效果。

34、其次,现有的模糊测试种子分组方案对于语义相似度度量设计过于依赖于程序执行中的代码覆盖情况。然而,网络协议的行为具有状态转移和消息驱动等特征,而非简单的代码路径覆盖。这些特性对于消息处理的影响至关重要,但现有方案未能有效地反映这些网络协议的行为特征。因此,当前的语义相似度度量设计不足以达到优化网络协议模糊测试分组的目的。

技术实现思路

1、针对现有技术中存在的问题,本发明的目的在于提供一种针对网络协议模糊测试的种子分组方法,其涉及的关键技术问题包括:

2、首先,如何在种子分组方案中结合网络协议的状态信息,以获得更优的分组效果。网络协议的状态在处理和响应消息时起着至关重要的作用,但现有的种子分组方案往往忽略了这些状态信息,导致无法充分利用协议的语义特性。这可能导致分组不准确,从而影响模糊测试的有效性。因此,设计一个能够有效利用网络协议状态信息的分组方案是一个关键问题。

3、其次,如何结合网络协议的状态机和消息驱动特性,设计出更能反映协议行为的语义相似度度量方案。现有的语义相似度度量设计通常依赖于程序执行过程中的代码覆盖情况,而忽视了网络协议程序的状态转移和消息驱动特性。然而,这些特性对于协议消息的处理和行为影响至关重要。为了优化网络协议模糊测试的分组效果,需要开发一种新的语义相似度度量方案,能够更好地反映网络协议的复杂行为特征。

4、通过解决以上两个关键技术问题,可以在网络协议模糊测试中实现更有效的种子分组,从而提高模糊测试的覆盖率和效率。

5、为更好地实现网络协议模糊测试过程中的种子分组,本发明提出了一种两阶段式的种子分组策略。在第一阶段中,本方案使用网络协议状态转移的状态转移信息将种子分为粗粒度的类型。在第二阶段中,本方案设计了一种结合了协议状态转移和消息序列的细粒度语义相似性以度量种子间的关系,将同一类型中的种子划分为更细粒度的分组。本发明的关键点如下:

6、为更好地实现网络协议模糊测试过程中的种子分组,本发明提出了一种创新性的两阶段式种子分组策略,旨在充分利用网络协议的有状态性和消息驱动特性,提升模糊测试的效率和效果。

7、在第一阶段中,本发明创新性地采用了协议状态转移信息来进行种子分类。不同于传统方案仅根据单一状态信息进行分组的做法,本发明通过分析种子输入在协议中的状态转移情况,将具有相同或相似状态转移的种子归为同一类型。这一方法不仅捕捉了协议状态的动态变化,还有效提升了分组的语义丰富度和准确性。通过引入状态转移的概念,种子分类的粒度得到优化,避免了过于细化的分类带来的冗余,进而提升了模糊测试的整体效率。

8、在第二阶段,本发明进一步提出了一种结合协议状态机和消息序列的细粒度语义相似性度量方案。传统的种子分组方案通常仅依赖于程序执行中的控制流信息,而本发明突破性地将协议状态转移、消息序列以及一般程序语义相似性相结合,构建出一种更为全面和精准的相似性度量模型。这一模型不仅能够更准确地反映种子输入之间的关系,还能在网络协议的复杂场景中更有效地探索和发现潜在的漏洞与异常行为。

9、通过这两个阶段的创新,本发明的种子分组策略能够更加精细化地捕捉网络协议的特性,大幅提升模糊测试的覆盖率和测试效果,为网络协议安全性检测提供了强有力的技术支持。

10、本发明的技术方案为:

11、一种针对网络协议模糊测试的种子分组方法,其步骤包括:

12、1)获取用于网络协议模糊测试的种子在网络协议中的状态转移信息、种子在网络协议中所触发的消息序列以及种子在网络协议中所覆盖的代码;

13、2)根据所述状态转移信息对所述种子进行分组,将具有相同或相似状态转移路径的种子归为同一粗粒度种子分组中;

14、3)针对同一粗粒度种子分组中的任意两个种子,根据种子对应的网络协议状态转移、消息序列以及所覆盖的代码计算任意两个种子之间的相似度;根据相似度将同一粗粒度种子分组中的种子分为若干细粒度种子分组。

15、进一步的,获取所述状态转移信息的方法为:首先根据网络协议的状态机,获取网络协议的状态及其之间的转移关系,构建该网络协议的状态转移图;记录每个种子在针对该网络协议的模糊测试中的状态转移路径。

16、进一步的,利用完全匹配或部分匹配方法度量种子之间的路径相似性,将具有相同或相似状态转移路径的种子归为同一粗粒度种子分组中。

17、进一步的,通过插桩技术获取种子在网络协议中所覆盖的代码。

18、进一步的,根据种子对应的网络协议状态转移计算任意两个种子之间的协议状态机相似度,根据种子对应的消息序列计算任意两个种子之间的消息序列相似度,根据种子对应的所覆盖的代码计算任意两个种子之间的一般语义相似度;根据计算任意两个种子之间的协议状态机相似度、消息序列相似度、一般语义相似度加权计算得到任意两个种子之间的相似度。

19、进一步的,根据两种子对应的网络协议状态转移的路径交集或最长公共子序列确定两个种子之间的协议状态机相似度;根据两种子对应的消息序列中消息内容相似度、消息顺序相似度确定两个种子之间的消息序列相似度。

20、进一步的,根据两种子对应的所覆盖的代码之间的代码块交集确定两个种子之间的一般语义相似度;或者根据两种子对应的所覆盖的代码之间是否覆盖了相同的函数或代码路径确定两个种子之间的一般语义相似度;或者根据两种子对应的所覆盖的代码之间的控制流图相似度确定两个种子之间的一般语义相似度。

21、一种网络协议模糊测试方法,其特征在于,利用上述方法生成的种子分组生成模糊测试数据,对目标网络协议进行测试。

22、一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述方法的指令。

23、一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法。

24、本发明的优点如下:

25、1.提升模糊测试精度:通过结合网络协议的状态信息、消息序列相似性和一般语义相似度,本发明能够更准确地识别和分组具有相似行为的种子输入,避免了传统方法中由于忽略协议状态而导致的分组不准确问题,从而提高了模糊测试的精度。

26、2.优化测试覆盖率:本发明采用的两阶段分组策略,能够通过粗粒度的状态分类和细粒度的语义相似度度量,全面覆盖网络协议的多种行为模式。这有助于发现更多潜在的漏洞,提高测试的覆盖率和全面性。在多个常见网络协议上的实验证实了本方案能达到显著的覆盖率提升。

27、3.增强测试效率:由于在测试过程中更精准地分组和选择种子输入,本发明减少了不必要的冗余测试操作,提升了模糊测试的效率。更合理的种子分组还使得资源利用更加优化,有助于在有限的时间内覆盖更多的测试场景。

28、4.适应复杂网络协议:本发明特别针对网络协议的有状态性和消息驱动特性,设计了专门的相似度度量方法,能够更好地适应复杂网络协议的测试需求。相比于传统模糊测试方法,本发明在应对复杂协议时表现出更强的适应性和灵活性。在多个常见网络协议上的实验证实了本方案所具有的适应性。

本文地址:https://www.jishuxx.com/zhuanli/20241106/323082.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。