一种分布式网络协议测试系统及方法
文献发布时间:2023-06-19 19:21:53
技术领域
本发明涉及模糊测试技术领域,具体是指一种分布式网络协议测试系统及方法。
背景技术
模糊测试(Fuzz Testing)是一种自动化的软件测试技术,最初由威斯康辛大学的巴顿·米勒于1989年提出的,通常用于识别程序中或代码中的潜在漏洞。
模糊测试的核心是自动或半自动的生成随机数据输入到应用程序中,同时监控程序的异常情况,如崩溃、代码断言失败,以此发现可能的程序错误,如内存泄漏。
模糊化是指自动生成和执行测试,随机数据的类型包括:超长字符串;随机数如负数,浮点数,超大数、特殊字符如~!@#$%等包含特殊含义的字符,作为输入可能会引发报错,以及其他类型的输入。
目前模糊测试应用广泛,如通信、计算机软件、工控设备等诸多领域。
在传统的方案中,每个测试节点使用本地获取的随机种子变异数据。如果该变异数据可以触发安全问题,再将变异数据发送到管理节点进行存储和复现。但这样涉及到两个问题:1、数据传输量大,尤其是在大规模并发测试的过程中;2、复现过程存在缺陷,无法使用简单存储的变异数据复现复杂协议漏洞。
发明内容
本发明要解决的技术问题是克服以上的技术缺陷,提供一种分布式网络协议测试系统及方法,通过构建分布式测试的架构,来解决模糊测试系统高效并发测试的问题。
为解决上述技术问题,本发明提供的技术方案为:一种分布式网络协议测试系统,包括种子分发模块、变异模块、通信模块、管理节点以及测试节点,其中:
种子分发模块用于在测试节点分发随机种子;
变异模块用于生成畸形数据,且数据的生成规则能够进行指定;
通信模块用于将数据发送给目标程序;
管理节点用于负责管理若干个测试节点。
一种分布式网络协议测试方法,具体包括以下步骤:
步骤一、管理节点首先使用随机种子初始化全局种子生成器,
步骤二、该种子生成器最终会被用于种子分发,并根据需求创建多个测试节点;
步骤三、测试节点启动后循环进行测试,每轮测试都需要从管理节点上获取本轮测试所需的随机种子,之后使用该随机种子初始化变异模块;
步骤四、变异模块生成畸形数据,调用变异模块生成的畸形数据,并通过协议通信接口发送出去;
步骤五、如果测试节点发现异常,向管理节点汇报本轮测试使用的测试种子;
步骤六、管理节点如果收到测试节点报告的随机种子,将该节点分发到测试节点进行复现,如果可以复现,保存该测试种子。
进一步地,该模糊测试系统与协议之间的通信方式为TCP或UDP。
本发明与现有技术相比的优点在于:在本申请中,所有的测试节点需要从管理节点获取本轮测试的随机种子,发现问题之后只需要向管理节点报告使用的随机种子即可。管理节点在复现漏洞阶段只需要使用前述随机种子初始化即可重现整个协议通信流程,有效提高了复现协议异常的成功率。
附图说明
图1是本发明一种分布式网络协议测试方法的流程图。
具体实施方式
下面结合附图对本发明做进一步的详细说明。
下面结合附图来进一步说明本发明的具体实施方式。其中相同的零部件用相同的附图标记表示。
需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向,词语“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。
为了使本发明的内容更容易被清楚地理解,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
结合附图,一种分布式网络协议测试系统,包括种子分发模块、变异模块、通信模块、管理节点以及测试节点,其中:
种子分发模块用于在测试节点分发随机种子;
变异模块用于生成畸形数据,且数据的生成规则能够进行指定;
通信模块用于将数据发送给目标程序;
管理节点用于负责管理若干个测试节点。
一种分布式网络协议测试方法,具体包括以下步骤:
步骤一、管理节点首先使用随机种子初始化全局种子生成器,
步骤二、该种子生成器最终会被用于种子分发,并根据需求创建多个测试节点;
步骤三、测试节点启动后循环进行测试,每轮测试都需要从管理节点上获取本轮测试所需的随机种子,之后使用该随机种子初始化变异模块;
步骤四、变异模块生成畸形数据,调用变异模块生成的畸形数据,并通过协议通信接口发送出去;
步骤五、如果测试节点发现异常,向管理节点汇报本轮测试使用的测试种子;
步骤六、管理节点如果收到测试节点报告的随机种子,将该节点分发到测试节点进行复现,如果可以复现,保存该测试种子。
在一个实施例中,该模糊测试系统与协议之间的通信方式为TCP或UDP。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。