基于语法生成和覆盖率引导的协议模糊测试方法及系统技术方案

技术编号:37295691 阅读:26 留言:0更新日期:2023-04-21 22:42
本发明专利技术是在基于语法生成的协议模糊技术的基础上引入覆盖率反馈指导协议的模糊测试过程,旨在提供一种方法,解决现有基于生成的协议模糊测试技术生成新的测试用例时盲目性变异的问题。主要包括如下阶段:测试准备阶段。在本地部署待测协议实体程序,并定义待测协议的数据模型集合作为模糊测试阶段的输入。模糊测试阶段。包含关系学习阶段与组合变异阶段。关系学习阶段:学习同一数据模型中主变异字段与其它可变字段之间的相关关系。组合变异阶段:在关系表的指导下对主变异字段进行组合变异。结果信息反馈阶段。在模糊测试过程中将触发协议实体程序崩溃的次数与覆盖率信息进行实时的反馈。本发明专利技术具有测试效率高,覆盖率高的优点。的优点。的优点。

【技术实现步骤摘要】
基于语法生成和覆盖率引导的协议模糊测试方法及系统


[0001]本专利技术属于协议自动化安全检测
,具体涉及基于语法生成和覆盖率引导的协议模糊测试方法及系统。

技术介绍

[0002]协议模糊测试通过向实现协议的服务器发送经过变异的非正常输入,来监视被测服务器的异常行为,如崩溃或者挂起,对于及时发现协议实现中的潜在漏洞至关重要。近几年来,国内外对于协议模糊测试的研究工作主要集中在基于语法生成的协议模糊测试方法上,提出了基于语法生成和覆盖率引导的协议模糊测试方法,这种方法利用覆盖率反馈等信息,来实现具有指导的测试用例生成工作,可以更加高效的生成更有用的测试用例,使模糊测试工作朝着覆盖率最大化方向进行。
[0003]目前与基于语法生成和覆盖率引导的协议模糊测试相关的工作有以下内容:
[0004]1.Z

Fuzzer基于模糊器BooFuzz改进,引入了覆盖率反馈信息,对触发新覆盖的测试用例加以利用,如果生成的某个测试用例触发了新分支,则保持该测试用例的已有变异不变,依次对后续字段进行变异。即保持触发新覆盖的条件不本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.基于语法生成和覆盖率引导的协议模糊测试方法,其特征在于,包括:测试准备阶段、模糊测试阶段、结果信息反馈阶段;其中模糊测试阶段中包含关系学习阶段与组合变异阶段。2.根据权利要求1所述的基于语法生成和覆盖率引导的协议模糊测试方法,其特征在于,测试准备阶段,包含以下子步骤:2

1.通过分析待测协议对应的请求数据包并且结合待测协议规范,使用BooFuzz模糊测试框架提供的数据模型定义函数来定义协议的数据模型集合M
set
={m1,...,m
i
,...,m
n
},i=1,...,n,其中n为待测协议数据模型总数,所定义的数据模型集合用以作为生成新测试用例的协议规范模板;2

2.利用aflfast自带的gcc编译工具对待测协议实体程序进行插装编译,生成对应的二进制可执行文件;2

3.运行步骤2

2生成的可执行文件,并且开辟大小为64KB的共享内存ShareMem,用以实时的统计待测协议实体程序的覆盖率信息。3.根据权利要求1所述的基于语法生成和覆盖率引导的协议模糊测试方法,其特征在于,模糊测试阶段,包含以下步骤:3

1.数据模型选择;从步骤2

1定义的数据模型集合M
Set
中按顺序选出一个数据模型m
i
,并且初始化该数据模型的潜力值modelPotential
i
=MC;其中MC为经验值,取值越大,对于数据模型的变异次数就越多,取值10000,下面在组合变异阶段根据该数据模型生成新的测试用例;3

2.组合变异阶段;组合变异阶段的功能:针对步骤3

1中选择的数据模型m
i
,在关系表的指导下对当其进行有指导性的组合变异,进而产生更有效的测试用例;3
‑2‑
1.主变异字段选取;针对步骤3

1中选择的数据模型m
i
,数据模型m
i
中包含多个可变异字段,定义为可变异字段集合M
i
_Field
set
={m
i
_field1,...,m
i
_field
j
,...,m
i
_field
x
},j=1,...,x,x为数据模型m
i
中包含的可变异字段的数量,从可变异字段集合M
i
_Field
set
中随机选取其中的一个可变异字段m
i
_field
j
作为主变异字段,初始化主变异字段m
i
_field
j
对应的关系表,并且初始化主变异字段的潜力值fieldPotential
ij
=FC;其中表示数据模型m
i
中的第j个可变字段作为主变异字段时的潜力值,FC为经验值,取值越大,对于主变异字段的变异次数就越多,测试时间越长,FC取值1000;关系表是一个行为x

1,列为2的二维数组结构,x为数据模型m
i
中包含的可变异字段的数量,每个主变异字段都有对应的关系表,字段m
i
_field
j
作为主变异字段时的关系表为:作为主变异字段时的关系表为:k=1,...,x,k!=j,x为数据模型m
i
中包含的可变异字段的数量,field_id
k
表示数据模型m
i
中第K个可变异字段的唯一ID,value
k
指的是该ID对应的可变异字段m
i
_field
k
与主变异字段m
i
_field
j
的关系值,value
k
的初始值为0;在接下来的一段时间,在关系表的指导下进行针对该主变异字段m
i
_field
j
的组合变异工作,直至该字段的潜力值消耗殆尽;3
‑2‑
2.关系表指导组合变异针对步骤3
‑2‑
1中选择的主变异字段m
i
_field
j
结合其对应的关系表将
其关系表表项按照关系值value从大到小排序,然后根据指数分布的概率随机选择出两个表项(field_id
a
,value
a
),(field_id
b
,value
b
),根据表项中的ID选择它们对应的字段m
i
_field
a
、m
i
_field
b
作为主变异字段m
i
_field
j
的关联字段,与主变异字段组合变异,得到三个字段经过变异的数据模型m
i*
,进而生成三个字段经过变异的测试用例Packet
i*
;3

3.测试用例注入到待测协议实体程序将步骤3
‑2‑
2中生成的测试用例Packet
i*
注入到待测系统,统计步骤2

3中开辟的共享内存ShareMem的位图信息;如果未产生新的分支覆盖,则将步骤3

1中初始化的数据模型潜力值modelPotential
i
减少1,并且将步骤3
‑2‑
1中初始化的主变异字段的潜力值减少1;如果modelPotential
i
等于0,返回步骤3

1执行,如果等于0,则返回步骤3
‑2‑
1执行;如果在统计共享内存ShareMem的位图信息时发现产生了新的分支覆盖,则将modelPotential
i
重新赋初始值MC,并且将重新赋初始值FC;如果步骤3
‑2‑
2中生成的测试用例Packet
i
*使得待测协议实体程序发生崩溃,则进行异常日志记录并且保存测试用例Packet
i
*,用于测试结束后的漏洞分析工作;3

4.关系学习阶段关系学习阶段用于学习数据模型m
i
中主变异字段m
i
_field
j
与数据模型m
i
中其它可变异字段{m
i
_field1,...,m
i
_field
k
,...,m
i
_field
x
},k=1,...,x,k!=j,之间的相关关系,这种相关关系反映了两个字段组合变异能够触发两个字段单独变异时所触发不到的分支的一种趋势,将这种相关关系以关系表的形式进行定量的表示;3
‑4‑
1.数据模型拆解对步骤3
‑2‑
2中得到的三个字段组合变异的数据模型m
i*
进行拆解,将经过变异的三个字段变异后的值提取出来,mutated_field
j
为主变异字段m
i
_field
j
变异后的值,mutated_field
a
、mutated_field
b
分别为组合变异字段m
i
_field
a
、m
i
_field
b...

【专利技术属性】
技术研发人员:徐向华支世腾
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1