FUZZ测试总结
Fuzzing简介
模糊测试(fuzzing test)是一种软件测试技术,其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏,访问越界等。
Fuzzing测试框架使用了LLVM编译器框架中的libFuzzer作为Fuzzing引擎进行构建,libFuzzer是一个基于LLVM编译时路径插桩,可以对被测库API进行路径引导测试的Fuzzing引擎。
使用Fuzzing测试框架,需要完成fuzzer测试用例初始化、fuzzer用例编写、fuzzer用例编译和fuzzer用例执行几步。
Fuzzing测试关注的风险接口
开发者应该了解自身模块的接口数据输入是基于不可信的来源输入,特别是针对
- 解析处理远程发送来的TCP/UDP或者蓝牙等协议数据
- 通过复杂的文件解码处理等,包括音视频、图片解码、解压缩等
- IPC跨进程的数据输入处理
通过Fuzzing的覆盖引导能力,可以有效的探测和消减外部输入造成的内存安全问题,也可以极大的增强系统稳定性。