<!–
–>
<!–
–>
本文系原创,转载请说明出处
Please Subscribe Wechat Official Account:信安科研人,获取更多的原创安全资讯
原论文:《The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing》
链接:https://arxiv.org/pdf/2005.11907.pdf
一 提问
阅读全文,回答以下几个问题:
Q1、什么是模糊测试?什么又是定向模糊测试?二者之间有什么不同?
Q2、定向模糊测试有哪些应用场景?每个应用场景有哪些代表工具?这些不同场景下的定向模糊测试技术有无差异?
Q3、研究进展:定向模糊测试技术发展的怎么样了?有哪些技术流派(分类)?每类流派有哪些技术?
Q4、这些技术有什么缺陷?可以通过哪些方法弥补这些缺陷?
Q5、定向模糊测试未来的研究方向?
Q6、…………………?
这我自己提的问题,原文的研究问题是这样的:

编辑
二 回答
模糊测试技术:模糊测试是一种自动化的测试技术,它通过向目标程序或系统输入随机、无效或异常数据,以触发潜在的漏洞或异常行为。
假定你的测试目标是桥梁的稳定性,测试对象是桥梁,通过向桥梁输入随机的车辆数目、车辆重量等,观察桥梁有没有断裂,从而测试桥梁是否具备一定程度的稳定性
模糊测试方法可以大致分为黑盒、白盒、灰盒这三种,本文主要讲灰盒,既不像白盒一样了解完全的细节,也不像黑盒一样完全不了解,即了解源代码的部分细节如源代码架构、源代码部分区域的语义等信息
定向模糊测试(灰盒,缩写为DGF):在灰盒模糊测试的基础上,将更多的计算资源放在到达特定目标上,如探测源代码是否存在UAF漏洞。
不同之处:在于“Directed 定向”,传统灰盒模糊测试更注重提高测试代码的覆盖率,即更全面,而DGF更倾向于测试指定区域,更局部。
定向模糊测试的主要框架:
首先,通过各类方法如静态程序分析、基于知识等方法,确认被测试的程序可能存在问题的区域;然后,在模糊测试过程中,结合这些信息,生成测试用例,输入到被测程序来判断是否存在此漏洞。

编辑
(1)补丁测试
应用需求:工程师会用补丁来修复bug,但这个补丁可能只修复了一部分而其他部分的漏洞依然存在,甚至这所修的部分能引起其他的漏洞。DGF则可以用来测试这个补丁是否完整(是否完全修复)且兼容(是否会引起其他bug)。
代表工作or工具:
- DeltaFuzz
- AFLChurn
- SemFuzz
- 1dvul
(2)bug复现
应用需求:很多安全研究员都有复现bug的需求,但并不是所有的bug发现者都会公开验证代码poc,DGF可以逐渐找到这些bug的区域,所用的测试用例就是一个可用poc
代表工作or工具:
- TortoiseFuzz
- DrillerGo
- UAFuzz
(3)特殊bug检测
应用需求:有些bug使用传统的灰盒模糊测试很难检测出来
代表工作or工具:
- 不受控制内存的漏洞发现:Memlock: Memory usage guided fuzzing
- UAF:Binary-level directed fuzzing for use-after-free vulnerabilities,Typestate-guided fuzzer for discovering use-after-free vulnerabilitie
- 算法复杂漏洞发现:Slowfuzz,Understanding and detecting performance bugs in markdown compiler
(4)结果验证
应用需求:很多基于静态程序和数据驱动的程序分析方法假阳率太高了,比如将本不是漏洞识别成是漏洞,所以这些方法只能够用来初步判断哪些区域是可能存在漏洞。然后结合DGF来验证这个bug是否是真的漏洞。
代表工作or工具:
- SUZZER
- DeFuzz
- V-Fuzz
- ParmeSan
(5)知识聚合 和 节约资源
知识聚合指DGF结合了更多的人工经验,让模糊测试少走了很多弯路去发现更多的程序路径;节约资源指的是为了达到挖掘漏洞的目的减小了资源消耗。
不同的应用场景有无技术差异?
有的,比如patch测试一般会检测打过补丁的程序和未打过补丁的程序,而检测特定类型bug的测试一般不会用这种初步分析方式
2.3.1 研究趋势:
扫码联系技术微信【备注:站媒体网】
客服QQ:137483024







